diff --git a/200.html b/200.html index da083a20..20c1da27 100644 --- a/200.html +++ b/200.html @@ -9,13 +9,13 @@ * * Copyright (C) 2011-2024 Hakim El Hattab, https://hakim.se */.reveal .r-stretch,.reveal .stretch{max-height:none;max-width:none}.reveal pre.r-stretch code,.reveal pre.stretch code{box-sizing:border-box;height:100%;max-height:100%}.reveal .r-fit-text{display:inline-block;white-space:nowrap}.reveal .r-stack{display:grid}.reveal .r-stack>*{grid-area:1/1;margin:auto}.reveal .r-hstack,.reveal .r-vstack{display:flex}.reveal .r-hstack img,.reveal .r-hstack video,.reveal .r-vstack img,.reveal .r-vstack video{min-height:0;min-width:0;-o-object-fit:contain;object-fit:contain}.reveal .r-vstack{flex-direction:column}.reveal .r-hstack,.reveal .r-vstack{align-items:center;justify-content:center}.reveal .r-hstack{flex-direction:row}.reveal .items-stretch{align-items:stretch}.reveal .items-start{align-items:flex-start}.reveal .items-center{align-items:center}.reveal .items-end{align-items:flex-end}.reveal .justify-between{justify-content:space-between}.reveal .justify-around{justify-content:space-around}.reveal .justify-start{justify-content:flex-start}.reveal .justify-center{justify-content:center}.reveal .justify-end{justify-content:flex-end}html.reveal-full-page{height:100%;height:100vh;height:calc(var(--vh,1vh)*100);height:100svh;overflow:hidden;width:100%}.reveal-viewport{color:#000;height:100%;line-height:1;margin:0;overflow:hidden;position:relative;--r-controls-spacing:12px}.reveal-viewport:fullscreen{height:100%!important;left:0!important;top:0!important;transform:none!important;width:100%!important}.reveal .fragment{transition:all .2s ease}.reveal .fragment:not(.custom){opacity:0;visibility:hidden;will-change:opacity}.reveal .fragment.visible{opacity:1;visibility:inherit}.reveal .fragment.disabled{transition:none}.reveal .fragment.grow{opacity:1;visibility:inherit}.reveal .fragment.grow.visible{transform:scale(1.3)}.reveal .fragment.shrink{opacity:1;visibility:inherit}.reveal .fragment.shrink.visible{transform:scale(.7)}.reveal .fragment.zoom-in{transform:scale(.1)}.reveal .fragment.zoom-in.visible{transform:none}.reveal .fragment.fade-out{opacity:1;visibility:inherit}.reveal .fragment.fade-out.visible{opacity:0;visibility:hidden}.reveal .fragment.semi-fade-out{opacity:1;visibility:inherit}.reveal .fragment.semi-fade-out.visible{opacity:.5;visibility:inherit}.reveal .fragment.strike{opacity:1;visibility:inherit}.reveal .fragment.strike.visible{text-decoration:line-through}.reveal .fragment.fade-up{transform:translateY(40px)}.reveal .fragment.fade-up.visible{transform:translate(0)}.reveal .fragment.fade-down{transform:translateY(-40px)}.reveal .fragment.fade-down.visible{transform:translate(0)}.reveal .fragment.fade-right{transform:translate(-40px)}.reveal .fragment.fade-right.visible{transform:translate(0)}.reveal .fragment.fade-left{transform:translate(40px)}.reveal .fragment.fade-left.visible{transform:translate(0)}.reveal .fragment.current-visible,.reveal .fragment.fade-in-then-out{opacity:0;visibility:hidden}.reveal .fragment.current-visible.current-fragment,.reveal .fragment.fade-in-then-out.current-fragment{opacity:1;visibility:inherit}.reveal .fragment.fade-in-then-semi-out{opacity:0;visibility:hidden}.reveal .fragment.fade-in-then-semi-out.visible{opacity:.5;visibility:inherit}.reveal .fragment.fade-in-then-semi-out.current-fragment,.reveal .fragment.highlight-blue,.reveal .fragment.highlight-current-blue,.reveal .fragment.highlight-current-green,.reveal .fragment.highlight-current-red,.reveal .fragment.highlight-green,.reveal .fragment.highlight-red{opacity:1;visibility:inherit}.reveal .fragment.highlight-red.visible{color:#ff2c2d}.reveal .fragment.highlight-green.visible{color:#17ff2e}.reveal .fragment.highlight-blue.visible{color:#1b91ff}.reveal .fragment.highlight-current-red.current-fragment{color:#ff2c2d}.reveal .fragment.highlight-current-green.current-fragment{color:#17ff2e}.reveal .fragment.highlight-current-blue.current-fragment{color:#1b91ff}.reveal:after{content:"";font-style:italic}.reveal iframe{z-index:1}.reveal a{position:relative}@keyframes bounce-right{0%,10%,25%,40%,50%{transform:translateX(0)}20%{transform:translateX(10px)}30%{transform:translateX(-5px)}}@keyframes bounce-left{0%,10%,25%,40%,50%{transform:translateX(0)}20%{transform:translateX(-10px)}30%{transform:translateX(5px)}}@keyframes bounce-down{0%,10%,25%,40%,50%{transform:translateY(0)}20%{transform:translateY(10px)}30%{transform:translateY(-5px)}}.reveal .controls{bottom:var(--r-controls-spacing);color:#000;display:none;font-size:10px;left:auto;pointer-events:none;position:absolute;right:var(--r-controls-spacing);top:auto;z-index:11}.reveal .controls button{-webkit-appearance:none;background-color:transparent;border:0;color:currentColor;cursor:pointer;font-size:inherit;opacity:0;outline:0;padding:0;pointer-events:auto;position:absolute;transform:scale(.9999);transition:color .2s ease,opacity .2s ease,transform .2s ease;visibility:hidden;z-index:2;-webkit-tap-highlight-color:transparent}.reveal .controls .controls-arrow:after,.reveal .controls .controls-arrow:before{background-color:currentColor;border-radius:.25em;content:"";height:.5em;left:0;position:absolute;top:0;transform-origin:.2em 50%;transition:all .15s ease,background-color .8s ease;width:2.6em;will-change:transform}.reveal .controls .controls-arrow{height:3.6em;position:relative;width:3.6em}.reveal .controls .controls-arrow:before{transform:translateX(.5em) translateY(1.55em) rotate(45deg)}.reveal .controls .controls-arrow:after{transform:translateX(.5em) translateY(1.55em) rotate(-45deg)}.reveal .controls .controls-arrow:hover:before{transform:translateX(.5em) translateY(1.55em) rotate(40deg)}.reveal .controls .controls-arrow:hover:after{transform:translateX(.5em) translateY(1.55em) rotate(-40deg)}.reveal .controls .controls-arrow:active:before{transform:translateX(.5em) translateY(1.55em) rotate(36deg)}.reveal .controls .controls-arrow:active:after{transform:translateX(.5em) translateY(1.55em) rotate(-36deg)}.reveal .controls .navigate-left{bottom:3.2em;right:6.4em;transform:translateX(-10px)}.reveal .controls .navigate-left.highlight{animation:bounce-left 2s ease-out 50 both}.reveal .controls .navigate-right{bottom:3.2em;right:0;transform:translateX(10px)}.reveal .controls .navigate-right .controls-arrow{transform:rotate(180deg)}.reveal .controls .navigate-right.highlight{animation:bounce-right 2s ease-out 50 both}.reveal .controls .navigate-up{bottom:6.4em;right:3.2em;transform:translateY(-10px)}.reveal .controls .navigate-up .controls-arrow{transform:rotate(90deg)}.reveal .controls .navigate-down{bottom:-1.4em;padding-bottom:1.4em;right:3.2em;transform:translateY(10px)}.reveal .controls .navigate-down .controls-arrow{transform:rotate(-90deg)}.reveal .controls .navigate-down.highlight{animation:bounce-down 2s ease-out 50 both}.reveal .controls[data-controls-back-arrows=faded] .navigate-up.enabled{opacity:.3}.reveal .controls[data-controls-back-arrows=faded] .navigate-up.enabled:hover{opacity:1}.reveal .controls[data-controls-back-arrows=hidden] .navigate-up.enabled{opacity:0;visibility:hidden}.reveal .controls .enabled{cursor:pointer;opacity:.9;transform:none;visibility:visible}.reveal .controls .enabled.fragmented{opacity:.5}.reveal .controls .enabled.fragmented:hover,.reveal .controls .enabled:hover{opacity:1}.reveal:not(.rtl) .controls[data-controls-back-arrows=faded] .navigate-left.enabled{opacity:.3}.reveal:not(.rtl) .controls[data-controls-back-arrows=faded] .navigate-left.enabled:hover{opacity:1}.reveal:not(.rtl) .controls[data-controls-back-arrows=hidden] .navigate-left.enabled{opacity:0;visibility:hidden}.reveal.rtl .controls[data-controls-back-arrows=faded] .navigate-right.enabled{opacity:.3}.reveal.rtl .controls[data-controls-back-arrows=faded] .navigate-right.enabled:hover{opacity:1}.reveal.rtl .controls[data-controls-back-arrows=hidden] .navigate-right.enabled{opacity:0;visibility:hidden}.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-down,.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-up{display:none}.reveal:not(.has-vertical-slides) .controls .navigate-left,.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-left{bottom:1.4em;right:5.5em}.reveal:not(.has-vertical-slides) .controls .navigate-right,.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-right{bottom:1.4em;right:.5em}.reveal:not(.has-horizontal-slides) .controls .navigate-up{bottom:5em;right:1.4em}.reveal:not(.has-horizontal-slides) .controls .navigate-down{bottom:.5em;right:1.4em}.reveal.has-dark-background .controls{color:#fff}.reveal.has-light-background .controls{color:#000}.reveal.no-hover .controls .controls-arrow:active:before,.reveal.no-hover .controls .controls-arrow:hover:before{transform:translateX(.5em) translateY(1.55em) rotate(45deg)}.reveal.no-hover .controls .controls-arrow:active:after,.reveal.no-hover .controls .controls-arrow:hover:after{transform:translateX(.5em) translateY(1.55em) rotate(-45deg)}@media screen and (min-width:500px){.reveal-viewport{--r-controls-spacing:0.8em}.reveal .controls[data-controls-layout=edges]{bottom:0;left:0;right:0;top:0}.reveal .controls[data-controls-layout=edges] .navigate-down,.reveal .controls[data-controls-layout=edges] .navigate-left,.reveal .controls[data-controls-layout=edges] .navigate-right,.reveal .controls[data-controls-layout=edges] .navigate-up{bottom:auto;right:auto}.reveal .controls[data-controls-layout=edges] .navigate-left{left:var(--r-controls-spacing);margin-top:-1.8em;top:50%}.reveal .controls[data-controls-layout=edges] .navigate-right{margin-top:-1.8em;right:var(--r-controls-spacing);top:50%}.reveal .controls[data-controls-layout=edges] .navigate-up{left:50%;margin-left:-1.8em;top:var(--r-controls-spacing)}.reveal .controls[data-controls-layout=edges] .navigate-down{bottom:calc(var(--r-controls-spacing) - 1.1em);left:50%;margin-left:-1.8em}}.reveal .progress{background-color:rgba(0,0,0,.2);bottom:0;color:#fff;display:none;height:3px;left:0;position:absolute;width:100%;z-index:10}.reveal .progress:after{content:"";display:block;height:10px;position:absolute;top:-10px;width:100%}.reveal .progress span{background-color:currentColor;display:block;height:100%;transform:scaleX(0);transform-origin:0 0;transition:transform .8s cubic-bezier(.26,.86,.44,.985);width:100%}.reveal .slide-number{background-color:rgba(0,0,0,.4);bottom:8px;color:#fff;display:block;font-family:Helvetica,sans-serif;font-size:12px;line-height:1;padding:5px;position:absolute;right:8px;z-index:31}.reveal .slide-number a{color:currentColor}.reveal .slide-number-delimiter{margin:0 3px}.reveal{height:100%;overflow:hidden;position:relative;touch-action:pinch-zoom;width:100%}.reveal.embedded{touch-action:pan-y}.reveal .slides{bottom:0;height:100%;left:0;margin:auto;overflow:visible;perspective:600px;perspective-origin:50% 40%;pointer-events:none;position:absolute;right:0;text-align:center;top:0;width:100%;z-index:1}.reveal .slides>section{perspective:600px}.reveal .slides>section,.reveal .slides>section>section{display:none;pointer-events:auto;position:absolute;transform-style:flat;transition:transform-origin .8s cubic-bezier(.26,.86,.44,.985),transform .8s cubic-bezier(.26,.86,.44,.985),visibility .8s cubic-bezier(.26,.86,.44,.985),opacity .8s cubic-bezier(.26,.86,.44,.985);width:100%;z-index:10}.reveal[data-transition-speed=fast] .slides section{transition-duration:.4s}.reveal[data-transition-speed=slow] .slides section{transition-duration:1.2s}.reveal .slides section[data-transition-speed=fast]{transition-duration:.4s}.reveal .slides section[data-transition-speed=slow]{transition-duration:1.2s}.reveal .slides>section.stack{height:100%;padding-bottom:0;padding-top:0;pointer-events:none}.reveal .slides>section.present,.reveal .slides>section>section.present{display:block;opacity:1;z-index:11}.reveal .slides>section:empty,.reveal .slides>section>section:empty,.reveal .slides>section>section[data-background-interactive],.reveal .slides>section[data-background-interactive]{pointer-events:none}.reveal.center,.reveal.center .slides,.reveal.center .slides section{min-height:0!important}.reveal .slides>section:not(.present),.reveal .slides>section>section:not(.present){pointer-events:none}.reveal.overview .slides>section,.reveal.overview .slides>section>section{pointer-events:auto}.reveal .slides>section.future,.reveal .slides>section.future>section,.reveal .slides>section.past,.reveal .slides>section.past>section,.reveal .slides>section>section.future,.reveal .slides>section>section.past{opacity:0}.reveal .slides>section[data-transition=slide].past,.reveal .slides>section[data-transition~=slide-out].past,.reveal.slide .slides>section:not([data-transition]).past{transform:translate(-150%)}.reveal .slides>section[data-transition=slide].future,.reveal .slides>section[data-transition~=slide-in].future,.reveal.slide .slides>section:not([data-transition]).future{transform:translate(150%)}.reveal .slides>section>section[data-transition=slide].past,.reveal .slides>section>section[data-transition~=slide-out].past,.reveal.slide .slides>section>section:not([data-transition]).past{transform:translateY(-150%)}.reveal .slides>section>section[data-transition=slide].future,.reveal .slides>section>section[data-transition~=slide-in].future,.reveal.slide .slides>section>section:not([data-transition]).future{transform:translateY(150%)}.reveal .slides>section[data-transition=linear].past,.reveal .slides>section[data-transition~=linear-out].past,.reveal.linear .slides>section:not([data-transition]).past{transform:translate(-150%)}.reveal .slides>section[data-transition=linear].future,.reveal .slides>section[data-transition~=linear-in].future,.reveal.linear .slides>section:not([data-transition]).future{transform:translate(150%)}.reveal .slides>section>section[data-transition=linear].past,.reveal .slides>section>section[data-transition~=linear-out].past,.reveal.linear .slides>section>section:not([data-transition]).past{transform:translateY(-150%)}.reveal .slides>section>section[data-transition=linear].future,.reveal .slides>section>section[data-transition~=linear-in].future,.reveal.linear .slides>section>section:not([data-transition]).future{transform:translateY(150%)}.reveal .slides section[data-transition=default].stack,.reveal.default .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=default].past,.reveal .slides>section[data-transition~=default-out].past,.reveal.default .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=default].future,.reveal .slides>section[data-transition~=default-in].future,.reveal.default .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=default].past,.reveal .slides>section>section[data-transition~=default-out].past,.reveal.default .slides>section>section:not([data-transition]).past{transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section[data-transition=default].future,.reveal .slides>section>section[data-transition~=default-in].future,.reveal.default .slides>section>section:not([data-transition]).future{transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal .slides section[data-transition=convex].stack,.reveal.convex .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=convex].past,.reveal .slides>section[data-transition~=convex-out].past,.reveal.convex .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=convex].future,.reveal .slides>section[data-transition~=convex-in].future,.reveal.convex .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=convex].past,.reveal .slides>section>section[data-transition~=convex-out].past,.reveal.convex .slides>section>section:not([data-transition]).past{transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section[data-transition=convex].future,.reveal .slides>section>section[data-transition~=convex-in].future,.reveal.convex .slides>section>section:not([data-transition]).future{transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal .slides section[data-transition=concave].stack,.reveal.concave .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=concave].past,.reveal .slides>section[data-transition~=concave-out].past,.reveal.concave .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=concave].future,.reveal .slides>section[data-transition~=concave-in].future,.reveal.concave .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=concave].past,.reveal .slides>section>section[data-transition~=concave-out].past,.reveal.concave .slides>section>section:not([data-transition]).past{transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0)}.reveal .slides>section>section[data-transition=concave].future,.reveal .slides>section>section[data-transition~=concave-in].future,.reveal.concave .slides>section>section:not([data-transition]).future{transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0)}.reveal .slides section[data-transition=zoom],.reveal.zoom .slides section:not([data-transition]){transition-timing-function:ease}.reveal .slides>section[data-transition=zoom].past,.reveal .slides>section[data-transition~=zoom-out].past,.reveal.zoom .slides>section:not([data-transition]).past{transform:scale(16);visibility:hidden}.reveal .slides>section[data-transition=zoom].future,.reveal .slides>section[data-transition~=zoom-in].future,.reveal.zoom .slides>section:not([data-transition]).future{transform:scale(.2);visibility:hidden}.reveal .slides>section>section[data-transition=zoom].past,.reveal .slides>section>section[data-transition~=zoom-out].past,.reveal.zoom .slides>section>section:not([data-transition]).past{transform:scale(16)}.reveal .slides>section>section[data-transition=zoom].future,.reveal .slides>section>section[data-transition~=zoom-in].future,.reveal.zoom .slides>section>section:not([data-transition]).future{transform:scale(.2)}.reveal.cube .slides{perspective:1300px}.reveal.cube .slides section{backface-visibility:hidden;box-sizing:border-box;min-height:700px;padding:30px;transform-style:preserve-3d}.reveal.center.cube .slides section{min-height:0}.reveal.cube .slides section:not(.stack):before{background:rgba(0,0,0,.1);border-radius:4px;content:"";display:block;height:100%;left:0;position:absolute;top:0;transform:translateZ(-20px);width:100%}.reveal.cube .slides section:not(.stack):after{background:0 0;border-radius:4px;bottom:0;box-shadow:0 95px 25px rgba(0,0,0,.2);content:"";display:block;height:30px;left:5%;position:absolute;transform:translateZ(-90px) rotateX(65deg);width:90%;z-index:1}.reveal.cube .slides>section.stack{background:0 0;padding:0}.reveal.cube .slides>section.past{transform:translate3d(-100%,0,0) rotateY(-90deg);transform-origin:100% 0}.reveal.cube .slides>section.future{transform:translate3d(100%,0,0) rotateY(90deg);transform-origin:0 0}.reveal.cube .slides>section>section.past{transform:translate3d(0,-100%,0) rotateX(90deg);transform-origin:0 100%}.reveal.cube .slides>section>section.future{transform:translate3d(0,100%,0) rotateX(-90deg);transform-origin:0 0}.reveal.page .slides{perspective:3000px;perspective-origin:0 50%}.reveal.page .slides section{box-sizing:border-box;min-height:700px;padding:30px;transform-style:preserve-3d}.reveal.page .slides section.past{z-index:12}.reveal.page .slides section:not(.stack):before{background:rgba(0,0,0,.1);content:"";display:block;height:100%;left:0;position:absolute;top:0;transform:translateZ(-20px);width:100%}.reveal.page .slides section:not(.stack):after{background:0 0;border-radius:4px;bottom:0;box-shadow:0 95px 25px rgba(0,0,0,.2);content:"";display:block;height:30px;left:5%;position:absolute;-webkit-transform:translateZ(-90px) rotateX(65deg);width:90%;z-index:1}.reveal.page .slides>section.stack{background:0 0;padding:0}.reveal.page .slides>section.past{transform:translate3d(-40%,0,0) rotateY(-80deg);transform-origin:0 0}.reveal.page .slides>section.future{transform:translateZ(0);transform-origin:100% 0}.reveal.page .slides>section>section.past{transform:translate3d(0,-40%,0) rotateX(80deg);transform-origin:0 0}.reveal.page .slides>section>section.future{transform:translateZ(0);transform-origin:0 100%}.reveal .slides section[data-transition=fade],.reveal.fade .slides section:not([data-transition]),.reveal.fade .slides>section>section:not([data-transition]){transform:none;transition:opacity .5s}.reveal.fade.overview .slides section,.reveal.fade.overview .slides>section>section{transition:none}.reveal .slides section[data-transition=none],.reveal.none .slides section:not([data-transition]){transform:none;transition:none}.reveal .pause-overlay{background:#000;height:100%;left:0;opacity:0;position:absolute;top:0;transition:all 1s ease;visibility:hidden;width:100%;z-index:100}.reveal .pause-overlay .resume-button{background:0 0;border:2px solid #ccc;border-radius:2px;bottom:20px;color:#ccc;cursor:pointer;font-size:16px;padding:6px 14px;position:absolute;right:20px}.reveal .pause-overlay .resume-button:hover{border-color:#fff;color:#fff}.reveal.paused .pause-overlay{opacity:1;visibility:visible}.reveal .no-transition,.reveal .no-transition *,.reveal .slides.disable-slide-transitions section{transition:none!important}.reveal .slides.disable-slide-transitions section{transform:none!important}.reveal .backgrounds{height:100%;left:0;perspective:600px;position:absolute;top:0;width:100%}.reveal .slide-background{background-color:transparent;display:none;height:100%;opacity:0;overflow:hidden;position:absolute;transition:all .8s cubic-bezier(.26,.86,.44,.985);visibility:hidden;width:100%}.reveal .slide-background-content{background-position:50% 50%;background-repeat:no-repeat;background-size:cover;height:100%;position:absolute;width:100%}.reveal .slide-background.stack{display:block}.reveal .slide-background.present{opacity:1;visibility:visible;z-index:2}.print-pdf .reveal .slide-background{opacity:1!important;visibility:visible!important}.reveal .slide-background video{height:100%;left:0;max-height:none;max-width:none;-o-object-fit:cover;object-fit:cover;position:absolute;top:0;width:100%}.reveal .slide-background[data-background-size=contain] video{-o-object-fit:contain;object-fit:contain}.reveal>.backgrounds .slide-background[data-background-transition=none],.reveal[data-background-transition=none]>.backgrounds .slide-background:not([data-background-transition]){transition:none}.reveal>.backgrounds .slide-background[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background:not([data-background-transition]){opacity:1}.reveal>.backgrounds .slide-background.past[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background.past:not([data-background-transition]){transform:translate(-100%)}.reveal>.backgrounds .slide-background.future[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background.future:not([data-background-transition]){transform:translate(100%)}.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]){transform:translateY(-100%)}.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]){transform:translateY(100%)}.reveal>.backgrounds .slide-background.past[data-background-transition=convex],.reveal[data-background-transition=convex]>.backgrounds .slide-background.past:not([data-background-transition]){opacity:0;transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal>.backgrounds .slide-background.future[data-background-transition=convex],.reveal[data-background-transition=convex]>.backgrounds .slide-background.future:not([data-background-transition]){opacity:0;transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex],.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]){opacity:0;transform:translate3d(0,-100%,0) rotateX(90deg) translate3d(0,-100%,0)}.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex],.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]){opacity:0;transform:translate3d(0,100%,0) rotateX(-90deg) translate3d(0,100%,0)}.reveal>.backgrounds .slide-background.past[data-background-transition=concave],.reveal[data-background-transition=concave]>.backgrounds .slide-background.past:not([data-background-transition]){opacity:0;transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal>.backgrounds .slide-background.future[data-background-transition=concave],.reveal[data-background-transition=concave]>.backgrounds .slide-background.future:not([data-background-transition]){opacity:0;transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave],.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]){opacity:0;transform:translate3d(0,-100%,0) rotateX(-90deg) translate3d(0,-100%,0)}.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave],.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]){opacity:0;transform:translate3d(0,100%,0) rotateX(90deg) translate3d(0,100%,0)}.reveal>.backgrounds .slide-background[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background:not([data-background-transition]){transition-timing-function:ease}.reveal>.backgrounds .slide-background.past[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background.past:not([data-background-transition]){opacity:0;transform:scale(16);visibility:hidden}.reveal>.backgrounds .slide-background.future[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background.future:not([data-background-transition]){opacity:0;transform:scale(.2);visibility:hidden}.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]){opacity:0;transform:scale(16);visibility:hidden}.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]){opacity:0;transform:scale(.2);visibility:hidden}.reveal[data-transition-speed=fast]>.backgrounds .slide-background{transition-duration:.4s}.reveal[data-transition-speed=slow]>.backgrounds .slide-background{transition-duration:1.2s}.reveal [data-auto-animate-target^=unmatched]{will-change:opacity}.reveal section[data-auto-animate]:not(.stack):not([data-auto-animate=running]) [data-auto-animate-target^=unmatched]{opacity:0}.reveal.overview{perspective:700px;perspective-origin:50% 50%}.reveal.overview .slides{-moz-transform-style:preserve-3d}.reveal.overview .slides section{box-sizing:border-box;cursor:pointer;height:100%;opacity:1!important;overflow:hidden;top:0!important;visibility:visible!important}.reveal.overview .slides section.present,.reveal.overview .slides section:hover{outline:10px solid hsla(0,0%,59%,.4);outline-offset:10px}.reveal.overview .slides section .fragment{opacity:1;transition:none}.reveal.overview .slides section:after,.reveal.overview .slides section:before{display:none!important}.reveal.overview .slides>section.stack{background:0 0;outline:0;overflow:visible;padding:0;top:0!important}.reveal.overview .backgrounds{perspective:inherit;-moz-transform-style:preserve-3d}.reveal.overview .backgrounds .slide-background{opacity:1;outline:10px solid hsla(0,0%,59%,.1);outline-offset:10px;visibility:visible}.reveal.overview .backgrounds .slide-background.stack{overflow:visible}.reveal.overview .backgrounds .slide-background,.reveal.overview .slides section,.reveal.overview-deactivating .backgrounds .slide-background,.reveal.overview-deactivating .slides section{transition:none}.reveal.rtl .slides,.reveal.rtl .slides h1,.reveal.rtl .slides h2,.reveal.rtl .slides h3,.reveal.rtl .slides h4,.reveal.rtl .slides h5,.reveal.rtl .slides h6{direction:rtl;font-family:sans-serif}.reveal.rtl code,.reveal.rtl pre{direction:ltr}.reveal.rtl ol,.reveal.rtl ul{text-align:right}.reveal.rtl .progress span{transform-origin:100% 0}.reveal.has-parallax-background .backgrounds{transition:all .8s ease}.reveal.has-parallax-background[data-transition-speed=fast] .backgrounds{transition-duration:.4s}.reveal.has-parallax-background[data-transition-speed=slow] .backgrounds{transition-duration:1.2s}.reveal>.overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:rgba(0,0,0,.95);height:100%;left:0;position:absolute;top:0;transition:all .3s ease;width:100%;z-index:1000}.reveal>.overlay .spinner{background-image:url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D);display:block;height:32px;left:50%;margin:-16px 0 0 -16px;opacity:.6;position:absolute;top:50%;transition:all .3s ease;visibility:visible;width:32px;z-index:10}.reveal>.overlay header{box-sizing:border-box;left:0;padding:5px;position:absolute;top:0;width:100%;z-index:2}.reveal>.overlay header a{box-sizing:border-box;display:inline-block;float:right;height:40px;line-height:36px;opacity:.6;padding:0 10px;width:40px}.reveal>.overlay header a:hover{opacity:1}.reveal>.overlay header a .icon{background-position:50% 50%;background-repeat:no-repeat;background-size:100%;display:inline-block;height:20px;width:20px}.reveal>.overlay header a.close .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC)}.reveal>.overlay header a.external .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==)}.reveal>.overlay .viewport{bottom:0;display:flex;left:0;position:absolute;right:0;top:50px}.reveal>.overlay.overlay-preview .viewport iframe{border:0;height:100%;max-height:100%;max-width:100%;opacity:0;transition:all .3s ease;visibility:hidden;width:100%}.reveal>.overlay.overlay-preview.loaded .viewport iframe{opacity:1;visibility:visible}.reveal>.overlay.overlay-preview.loaded .viewport-inner{left:0;letter-spacing:normal;position:absolute;text-align:center;top:45%;width:100%;z-index:-1}.reveal>.overlay.overlay-preview .x-frame-error{opacity:0;transition:opacity .3s ease .3s}.reveal>.overlay.overlay-preview.loaded .x-frame-error{opacity:1}.reveal>.overlay.overlay-preview.loaded .spinner{opacity:0;transform:scale(.2);visibility:hidden}.reveal>.overlay.overlay-help .viewport{color:#fff;overflow:auto}.reveal>.overlay.overlay-help .viewport .viewport-inner{letter-spacing:normal;margin:auto;padding:20px 20px 80px;text-align:center;width:600px}.reveal>.overlay.overlay-help .viewport .viewport-inner .title{font-size:20px}.reveal>.overlay.overlay-help .viewport .viewport-inner table{border:1px solid #fff;border-collapse:collapse;font-size:16px}.reveal>.overlay.overlay-help .viewport .viewport-inner table td,.reveal>.overlay.overlay-help .viewport .viewport-inner table th{border:1px solid #fff;padding:14px;vertical-align:middle;width:200px}.reveal>.overlay.overlay-help .viewport .viewport-inner table th{padding-bottom:20px;padding-top:20px}.reveal .playback{bottom:20px;cursor:pointer;left:15px;position:absolute;transition:all .4s ease;z-index:30;-webkit-tap-highlight-color:transparent}.reveal.overview .playback{opacity:0;visibility:hidden}.reveal .hljs{min-height:100%}.reveal .hljs table{margin:initial}.reveal .hljs-ln-code,.reveal .hljs-ln-numbers{border:0;padding:0}.reveal .hljs-ln-numbers{opacity:.6;padding-right:.75em;text-align:right;vertical-align:top}.reveal .hljs.has-highlights tr:not(.highlight-line){opacity:.4}.reveal .hljs.has-highlights.fragment{transition:all .2s ease}.reveal .hljs:not(:first-child).fragment{box-sizing:border-box;left:0;position:absolute;top:0;width:100%}.reveal pre[data-auto-animate-target]{overflow:hidden}.reveal pre[data-auto-animate-target] code{height:100%}.reveal .roll{display:inline-block;line-height:1.2;overflow:hidden;perspective:400px;perspective-origin:50% 50%;vertical-align:top}.reveal .roll:hover{background:0 0;text-shadow:none}.reveal .roll span{backface-visibility:hidden;display:block;padding:0 2px;pointer-events:none;position:relative;transform-origin:50% 0;transform-style:preserve-3d;transition:all .4s ease}.reveal .roll:hover span{background:rgba(0,0,0,.5);transform:translateZ(-45px) rotateX(90deg)}.reveal .roll span:after{backface-visibility:hidden;content:attr(data-title);display:block;left:0;padding:0 2px;position:absolute;top:0;transform:translate3d(0,110%,0) rotateX(-90deg);transform-origin:50% 0}.reveal aside.notes{display:none}.reveal .speaker-notes{background-color:#f5f5f5;border:1px solid rgba(0,0,0,.05);box-sizing:border-box;color:#222;display:none;font-family:Helvetica,sans-serif;font-size:18px;height:100%;left:100%;line-height:1.4;overflow:auto;padding:14px 18px;position:absolute;text-align:left;top:0;width:33.3333333333%;z-index:1;-webkit-overflow-scrolling:touch}.reveal .speaker-notes .notes-placeholder{color:#ccc;font-style:italic}.reveal .speaker-notes:focus{outline:0}.reveal .speaker-notes:before{content:"Speaker notes";display:block;margin-bottom:10px;opacity:.5}.reveal.show-notes{max-width:75%;overflow:visible}.reveal.show-notes .speaker-notes{display:block}@media screen and (min-width:1600px){.reveal .speaker-notes{font-size:20px}}@media screen and (max-width:1024px){.reveal.show-notes{border-left:0;max-height:70%;max-height:70vh;max-width:none;overflow:visible}.reveal.show-notes .speaker-notes{border:0;height:30vh;left:0;top:100%;width:100%}}@media screen and (max-width:600px){.reveal.show-notes{max-height:60%;max-height:60vh}.reveal.show-notes .speaker-notes{height:40vh;top:100%}.reveal .speaker-notes{font-size:14px}}.reveal .jump-to-slide{font-size:32px;left:15px;position:absolute;top:15px;z-index:30;-webkit-tap-highlight-color:transparent}.reveal .jump-to-slide-input{background:0 0;border:0;color:currentColor;font-size:inherit;padding:8px}.reveal .jump-to-slide-input::-moz-placeholder{color:currentColor;opacity:.5}.reveal .jump-to-slide-input::placeholder{color:currentColor;opacity:.5}.reveal.has-dark-background .jump-to-slide-input{color:#fff}.reveal.has-light-background .jump-to-slide-input{color:#222}.reveal .jump-to-slide-input:focus{outline:0}.zoomed .reveal *,.zoomed .reveal :after,.zoomed .reveal :before{backface-visibility:visible!important}.zoomed .reveal .controls,.zoomed .reveal .progress{opacity:0}.zoomed .reveal .roll span{background:0 0}.reveal-viewport.loading-scroll-mode,.zoomed .reveal .roll span:after{visibility:hidden}.reveal-viewport.reveal-scroll{margin:0 auto;overflow:auto;overflow-x:hidden;overflow-y:auto;z-index:1;--r-scrollbar-width:7px;--r-scrollbar-trigger-size:5px;--r-controls-spacing:8px}@media screen and (max-width:500px){.reveal-viewport.reveal-scroll{--r-scrollbar-width:3px;--r-scrollbar-trigger-size:3px}}.reveal-viewport.reveal-scroll .backgrounds,.reveal-viewport.reveal-scroll .controls,.reveal-viewport.reveal-scroll .playback,.reveal-viewport.reveal-scroll .progress,.reveal-viewport.reveal-scroll .slide-number,.reveal-viewport.reveal-scroll .speaker-notes{display:none!important}.reveal-viewport.reveal-scroll .overlay,.reveal-viewport.reveal-scroll .pause-overlay{position:fixed}.reveal-viewport.reveal-scroll .reveal{overflow:visible;touch-action:manipulation}.reveal-viewport.reveal-scroll .slides{display:block;left:auto;margin:0;overflow:visible;padding:0;perspective:none;perspective-origin:50% 50%;pointer-events:auto;position:static;top:auto;width:100%!important}.reveal-viewport.reveal-scroll .scroll-page{height:calc(var(--page-height) + var(--page-scroll-padding));overflow:visible;position:relative;width:100%;z-index:1}.reveal-viewport.reveal-scroll .scroll-page-sticky{height:var(--page-height);position:sticky;top:0}.reveal-viewport.reveal-scroll .scroll-page-content{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.reveal-viewport.reveal-scroll .scroll-page section{display:block!important;height:var(--slide-height)!important;left:50%!important;opacity:1!important;position:absolute!important;top:50%!important;transform:scale(var(--slide-scale)) translate(-50%,-50%)!important;transform-origin:0 0!important;transform-style:flat!important;visibility:visible!important;width:var(--slide-width)!important}.reveal-viewport.reveal-scroll .slide-background{display:block!important;height:100%;left:0;opacity:1;position:absolute;top:0;touch-action:manipulation;visibility:visible;width:100%;z-index:auto!important}.reveal-viewport.reveal-scroll[data-scrollbar=auto]::-webkit-scrollbar,.reveal-viewport.reveal-scroll[data-scrollbar=true]::-webkit-scrollbar{display:none}.reveal-viewport.reveal-scroll[data-scrollbar=auto],.reveal-viewport.reveal-scroll[data-scrollbar=true]{scrollbar-width:none}.reveal-viewport.has-dark-background,.reveal.has-dark-background{--r-overlay-element-bg-color:240,240,240;--r-overlay-element-fg-color:0,0,0}.reveal-viewport.has-light-background,.reveal.has-light-background{--r-overlay-element-bg-color:0,0,0;--r-overlay-element-fg-color:240,240,240}.reveal-viewport.reveal-scroll .scrollbar{opacity:0;position:sticky;top:50%;transition:all .3s ease;z-index:20}.reveal-viewport.reveal-scroll .scrollbar.visible,.reveal-viewport.reveal-scroll .scrollbar:hover{opacity:1}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-inner{border-radius:var(--r-scrollbar-width);height:calc(var(--viewport-height) - var(--r-controls-spacing)*2);position:absolute;right:var(--r-controls-spacing);top:0;transform:translateY(-50%);width:var(--r-scrollbar-width);z-index:10}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-playhead{background-color:#f0f0f0;background-color:rgba(var(--r-overlay-element-bg-color),1);border-radius:var(--r-scrollbar-width);height:var(--r-scrollbar-width);left:0;position:absolute;top:0;transition:background-color .2s ease;width:var(--r-scrollbar-width);z-index:11}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide{background-color:hsla(0,0%,94%,.2);background-color:rgba(var(--r-overlay-element-bg-color),.2);border-radius:var(--r-scrollbar-width);box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(var(--r-overlay-element-fg-color),.1);position:absolute;transition:background-color .2s ease;width:100%}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide:after{background:transparent;content:"";height:100%;left:-50%;position:absolute;top:0;width:200%;z-index:-1}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active,.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide:hover{background-color:hsla(0,0%,94%,.4);background-color:rgba(var(--r-overlay-element-bg-color),.4)}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-trigger{position:absolute;transition:background-color .2s ease;width:100%}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active.has-triggers{background-color:hsla(0,0%,94%,.4);background-color:rgba(var(--r-overlay-element-bg-color),.4);z-index:10}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger:after{background-color:#f0f0f0;background-color:rgba(var(--r-overlay-element-bg-color),1);border-radius:20px;content:"";height:var(--r-scrollbar-trigger-size);left:50%;opacity:.4;position:absolute;top:50%;transform:translate(-50%,-50%);transition:transform .2s ease,opacity .2s ease;width:var(--r-scrollbar-trigger-size)}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger.active:after,.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger.active~.scrollbar-trigger:after{opacity:1}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger~.scrollbar-trigger.active:after{background-color:#f0f0f0;background-color:rgba(var(--r-overlay-element-bg-color),1);transform:translate(calc(var(--r-scrollbar-width)*-2))}html.reveal-print *{-webkit-print-color-adjust:exact}html.reveal-print{height:100%;overflow:visible;width:100%}html.reveal-print body{border:0;float:none!important;margin:0 auto!important;overflow:visible;padding:0}html.reveal-print .nestedarrow,html.reveal-print .reveal .controls,html.reveal-print .reveal .playback,html.reveal-print .reveal .progress,html.reveal-print .reveal.overview,html.reveal-print .state-background{display:none!important}html.reveal-print .reveal pre code{overflow:hidden!important}html.reveal-print .reveal{height:auto!important;overflow:hidden!important;width:auto!important}html.reveal-print .reveal .slides{height:auto!important;position:static;width:100%!important;zoom:1!important;display:block;left:auto;margin:0!important;overflow:visible;padding:0!important;perspective:none;perspective-origin:50% 50%;pointer-events:auto;top:auto}html.reveal-print .reveal .slides .pdf-page{overflow:hidden;page-break-after:always;position:relative;z-index:1}html.reveal-print .reveal .slides .pdf-page:last-of-type{page-break-after:avoid}html.reveal-print .reveal .slides section{box-sizing:border-box!important;display:block!important;margin:0!important;min-height:1px;opacity:1!important;padding:0!important;position:absolute!important;transform:none!important;transform-style:flat!important;visibility:visible!important}html.reveal-print .reveal section.stack{height:auto!important;margin:0!important;min-height:auto!important;padding:0!important;page-break-after:avoid!important;position:relative!important}html.reveal-print .reveal img{box-shadow:none}html.reveal-print .reveal .backgrounds{display:none}html.reveal-print .reveal .slide-background{display:block!important;height:100%;left:0;position:absolute;top:0;width:100%;z-index:auto!important}html.reveal-print .reveal.show-notes{max-height:none;max-width:none}html.reveal-print .reveal .speaker-notes-pdf{bottom:auto;display:block;height:auto;left:auto;max-height:none;right:auto;top:auto;width:100%;z-index:100}html.reveal-print .reveal .speaker-notes-pdf[data-layout=separate-page]{background-color:transparent;border:0;color:inherit;padding:20px;page-break-after:always;position:relative}html.reveal-print .reveal .slide-number-pdf{display:block;font-size:14px;position:absolute;visibility:visible}html.reveal-print .aria-status{display:none}@media print{html:not(.print-pdf){height:auto;overflow:visible;width:auto}html:not(.print-pdf) body{margin:0;overflow:visible;padding:0}html:not(.print-pdf) .reveal{background:#fff;font-size:20pt}html:not(.print-pdf) .reveal .backgrounds,html:not(.print-pdf) .reveal .controls,html:not(.print-pdf) .reveal .progress,html:not(.print-pdf) .reveal .slide-number,html:not(.print-pdf) .reveal .state-background{display:none!important}html:not(.print-pdf) .reveal li,html:not(.print-pdf) .reveal p,html:not(.print-pdf) .reveal td{color:#000;font-size:20pt!important}html:not(.print-pdf) .reveal h1,html:not(.print-pdf) .reveal h2,html:not(.print-pdf) .reveal h3,html:not(.print-pdf) .reveal h4,html:not(.print-pdf) .reveal h5,html:not(.print-pdf) .reveal h6{color:#000!important;height:auto;letter-spacing:normal;line-height:normal;text-align:left}html:not(.print-pdf) .reveal h1{font-size:28pt!important}html:not(.print-pdf) .reveal h2{font-size:24pt!important}html:not(.print-pdf) .reveal h3{font-size:22pt!important}html:not(.print-pdf) .reveal h4{font-size:22pt!important;font-variant:small-caps}html:not(.print-pdf) .reveal h5{font-size:21pt!important}html:not(.print-pdf) .reveal h6{font-size:20pt!important;font-style:italic}html:not(.print-pdf) .reveal a:link,html:not(.print-pdf) .reveal a:visited{color:#000!important;font-weight:700;text-decoration:underline}html:not(.print-pdf) .reveal div,html:not(.print-pdf) .reveal ol,html:not(.print-pdf) .reveal p,html:not(.print-pdf) .reveal ul{display:block;height:auto;margin:0;overflow:visible;position:static;text-align:left!important;visibility:visible;width:auto}html:not(.print-pdf) .reveal pre,html:not(.print-pdf) .reveal table{margin-left:0;margin-right:0}html:not(.print-pdf) .reveal pre code{padding:20px}html:not(.print-pdf) .reveal blockquote{margin:20px 0}html:not(.print-pdf) .reveal .slides{padding:0!important;zoom:1!important;perspective:none;perspective-origin:50% 50%;text-align:left!important;transform:none!important}html:not(.print-pdf) .reveal .slides,html:not(.print-pdf) .reveal .slides section{display:block!important;height:auto!important;left:0!important;margin-left:0!important;margin-top:0!important;overflow:visible!important;position:static!important;top:0!important;width:auto!important}html:not(.print-pdf) .reveal .slides section{opacity:1!important;padding:60px 20px!important;page-break-after:always!important;transform:none!important;transform-style:flat!important;transition:none!important;visibility:visible!important;z-index:auto!important}html:not(.print-pdf) .reveal .slides section.stack{padding:0!important}html:not(.print-pdf) .reveal .slides section:last-of-type{page-break-after:avoid!important}html:not(.print-pdf) .reveal .slides section .fragment{opacity:1!important;transform:none!important;visibility:visible!important}html:not(.print-pdf) .reveal .r-fit-text{white-space:normal!important}html:not(.print-pdf) .reveal section img{background:#fff;border:1px solid #666;box-shadow:none;display:block;margin:15px 0}html:not(.print-pdf) .reveal section small{font-size:.8em}html:not(.print-pdf) .reveal .hljs{max-height:100%;white-space:pre-wrap;word-wrap:break-word;font-size:15pt;word-break:break-word}html:not(.print-pdf) .reveal .hljs .hljs-ln-numbers{white-space:nowrap}html:not(.print-pdf) .reveal .hljs td{color:inherit!important;font-size:inherit!important}}:root{--r-background-color:#fff;--r-main-font:Assistant,Helvetica,sans-serif;--r-main-font-size:28px;--r-main-color:#000;--r-block-margin:20px;--r-heading-margin:0 0 20px 0;--r-heading-font:Nunito,Helvetica,sans-serif;--r-heading-color:#000;--r-heading-line-height:1.2;--r-heading-letter-spacing:normal;--r-heading-text-transform:none;--r-heading-text-shadow:none;--r-heading-font-weight:bold;--r-heading1-text-shadow:none;--r-heading1-size:3em;--r-heading2-size:2.5em;--r-heading3-size:2em;--r-heading4-size:1.5em;--r-code-font:monospace;--r-link-color:#ffb213;--r-link-color-dark:#c68500;--r-link-color-hover:#ffcb60;--r-selection-background-color:#ffdc93;--r-selection-color:#fff;--r-overlay-element-bg-color:240,240,240;--r-overlay-element-fg-color:0,0,0}.reveal-viewport{background:#fff;background-color:#fff;background-color:var(--r-background-color)}.reveal{color:#000;color:var(--r-main-color);font-family:Assistant,Helvetica,sans-serif;font-family:var(--r-main-font);font-size:28px;font-size:var(--r-main-font-size);font-weight:400}.reveal ::selection{background:#ffdc93;background:var(--r-selection-background-color);color:#fff;color:var(--r-selection-color);text-shadow:none}.reveal ::-moz-selection{background:#ffdc93;background:var(--r-selection-background-color);color:#fff;color:var(--r-selection-color);text-shadow:none}.reveal .slides section,.reveal .slides section>section{font-weight:inherit;line-height:1.3}.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6{color:#000;color:var(--r-heading-color);font-family:Nunito,Helvetica,sans-serif;font-family:var(--r-heading-font);font-weight:700;font-weight:var(--r-heading-font-weight);letter-spacing:normal;letter-spacing:var(--r-heading-letter-spacing);line-height:1.2;line-height:var(--r-heading-line-height);margin:0 0 20px;margin:var(--r-heading-margin);text-shadow:none;text-shadow:var(--r-heading-text-shadow);text-transform:none;text-transform:var(--r-heading-text-transform);word-wrap:break-word}.reveal h1{font-size:3em;font-size:var(--r-heading1-size)}.reveal h2{font-size:2.5em;font-size:var(--r-heading2-size)}.reveal h3{font-size:2em;font-size:var(--r-heading3-size)}.reveal h4{font-size:1.5em;font-size:var(--r-heading4-size)}.reveal h1{text-shadow:none;text-shadow:var(--r-heading1-text-shadow)}.reveal p{line-height:1.3;margin:20px 0;margin:var(--r-block-margin) 0}.reveal h1:last-child,.reveal h2:last-child,.reveal h3:last-child,.reveal h4:last-child,.reveal h5:last-child,.reveal h6:last-child{margin-bottom:0}.reveal iframe,.reveal img,.reveal video{max-height:95%;max-width:95%}.reveal b,.reveal strong{font-weight:700}.reveal em{font-style:italic}.reveal dl,.reveal ol,.reveal ul{display:inline-block;margin:0 0 0 1em;text-align:left}.reveal ol{list-style-type:decimal}.reveal ul{list-style-type:disc}.reveal ul ul{list-style-type:square}.reveal ul ul ul{list-style-type:circle}.reveal ol ol,.reveal ol ul,.reveal ul ol,.reveal ul ul{display:block;margin-left:40px}.reveal dt{font-weight:700}.reveal dd{margin-left:40px}.reveal blockquote{background:hsla(0,0%,100%,.05);box-shadow:0 0 2px rgba(0,0,0,.2);display:block;font-style:italic;margin:20px auto;margin:var(--r-block-margin) auto;padding:5px;position:relative;width:70%}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:inline-block}.reveal q{font-style:italic}.reveal pre{display:block;font-size:.55em;line-height:1.2em;margin:20px auto;margin:var(--r-block-margin) auto;position:relative;text-align:left;width:90%;word-wrap:break-word;box-shadow:0 5px 15px rgba(0,0,0,.15)}.reveal code,.reveal pre{font-family:monospace;font-family:var(--r-code-font)}.reveal code{-moz-tab-size:2;-o-tab-size:2;tab-size:2;text-transform:none}.reveal pre code{display:block;max-height:400px;overflow:auto;padding:5px;word-wrap:normal}.reveal .code-wrapper{white-space:normal}.reveal .code-wrapper code{white-space:pre}.reveal table{border-collapse:collapse;border-spacing:0;margin:auto}.reveal table th{font-weight:700}.reveal table td,.reveal table th{border-bottom:1px solid;padding:.2em .5em;text-align:left}.reveal table td[align=center],.reveal table th[align=center]{text-align:center}.reveal table td[align=right],.reveal table th[align=right]{text-align:right}.reveal table tbody tr:last-child td,.reveal table tbody tr:last-child th{border-bottom:none}.reveal sup{font-size:smaller;vertical-align:super}.reveal sub{font-size:smaller;vertical-align:sub}.reveal small{display:inline-block;font-size:.6em;line-height:1.2em}.reveal small,.reveal small *{vertical-align:top}.reveal img{margin:20px 0;margin:var(--r-block-margin) 0}.reveal a{color:#ffb213;color:var(--r-link-color);text-decoration:none;transition:color .15s ease}.reveal a:hover{border:none;color:#ffcb60;color:var(--r-link-color-hover);text-shadow:none}.reveal .roll span:after{background:#c68500;background:var(--r-link-color-dark);color:#fff}.reveal .r-frame{border:4px solid #000;border:4px solid var(--r-main-color);box-shadow:0 0 10px rgba(0,0,0,.15)}.reveal a .r-frame{transition:all .15s linear}.reveal a:hover .r-frame{border-color:#ffb213;border-color:var(--r-link-color);box-shadow:0 0 20px rgba(0,0,0,.55)}.reveal .controls,.reveal .progress{color:#ffb213;color:var(--r-link-color)}.reveal .progress{background:rgba(0,0,0,.2)}@media print{.backgrounds{background-color:#fff;background-color:var(--r-background-color)}}#overlay{inset:0;opacity:0;position:absolute;transition:opacity 1s;z-index:1}#overlay .opacity-10{opacity:.1}#overlay .opacity-20{opacity:.2}#overlay .opacity-30{opacity:.3}#overlay .opacity-40{opacity:.4}#overlay .opacity-50{opacity:.5}#overlay .opacity-60{opacity:.6}#overlay .opacity-70{opacity:.7}#overlay .opacity-80{opacity:.8}#overlay .opacity-90{opacity:.9}#overlay .opacity-100{opacity:1}#logo-color,#logo-part-white,#logo-white{left:-50%;opacity:0;position:absolute;top:1.5%;transition:opacity 1s,left 1s;z-index:2}#logo-color img,#logo-part-white img,#logo-white img{width:70%}#right-e{opacity:0;top:-100%;transition:opacity 1s}#left-e,#right-e{position:absolute;width:6%;z-index:3}#left-e{left:-100%;transition:left 1s,bottom 1s}#blue-pane{background-color:#009ddd;z-index:1}#blue-pane,#touch-pane{bottom:0;opacity:0;position:absolute;top:0;transition:opacity 1s}#touch-pane{align-items:center;background-color:#fff;display:flex;justify-content:center;left:0;right:66.6%;z-index:2}#touch-pane h3{color:#000;text-align:left}#empowering{align-items:center;bottom:0;display:flex;justify-content:center;left:6%;opacity:0;position:absolute;right:52%;top:0;transition:opacity 1s;z-index:2}#empowering h3{color:#fff;font-size:100%;text-align:left}#yellow-strip{border-radius:10vw 10vw 0 0;height:85%;left:-28%;transition:left 1s;width:18%}#yellow-half-strip,#yellow-strip{background-color:#ffb213;bottom:0;position:absolute;z-index:2}#yellow-half-strip{height:25%;left:-100%;opacity:0;transition:opacity 1s;width:17%}#yellow-flag{background-color:#ffb213;border-radius:0 7vh 7vh 0;bottom:5%;height:12%;left:-20%;margin:0;padding:1% 0 0;position:absolute;transition:left 1s,bottom 1s;width:10%;z-index:1}#yellow-flag img{height:90%;margin:0;padding:0;position:relative}#purple-half-circle-bottom{background-color:#380339;border-radius:20vw 20vw 0 0;bottom:0;height:15%;left:-50%;opacity:0;position:absolute;transition:opacity 1s;width:15%;z-index:2}#purple-half-circle-top{border-radius:0 0 20vw 20vw;opacity:1;top:-50%;transition:top 1s;width:30%}#purple-half-circle-logo,#purple-half-circle-top{background-color:#380339;height:30%;left:0;position:absolute;z-index:2}#purple-half-circle-logo{border-radius:28vw 28vw 0 0;bottom:0;opacity:0;transition:opacity 1s;width:36%}#purple-half-circle-logo img{bottom:-34%;left:22%;position:relative;width:55%}#purple-blob{display:flex;position:absolute;right:0;top:-100vh;transition:top 1s;z-index:2}#purple-blob div{background-color:#380339}#purple-blob .blob1{border-radius:0 0 10vw 10vw;height:25vh;width:10vw}#purple-blob .blob2{border-radius:0 0 10vw 10vw;height:50vh;width:10vw}#purple-blob .box{background:linear-gradient(45deg,transparent 10vw,#380339 0) 0 100%;background-image:radial-gradient(circle at 0 100%,rgba(204,0,0,0) 5vw,#380339 15px);height:calc(25vh + 5vw);position:absolute;right:10vw;top:0;width:5vw}#globe,#mail,#phone{left:-20%;position:absolute;top:-20%;transition:left 1s;width:2.2%;z-index:3}.reveal-viewport.title #purple-half-circle-logo{opacity:1}.reveal-viewport.title #purple-blob{top:0}.reveal-viewport.title #right-e{opacity:1;right:0;top:10%}.reveal-viewport.title #yellow-strip{left:0}.reveal-viewport.title #overlay{background-color:#009ddd;opacity:.8}.reveal-viewport.title #left-e{bottom:30%;left:0}.reveal-viewport.title h1,.reveal-viewport.title h2{color:#fff;margin:6% 6% 6% 15%}.reveal-viewport.standard #logo-color{left:3%;opacity:1}.reveal-viewport.standard #yellow-flag{left:0}.reveal-viewport.standard h1,.reveal-viewport.standard h2,.reveal-viewport.standard h3,.reveal-viewport.standard p,.reveal-viewport.standard ul{padding-left:10%;text-align:left}.reveal-viewport.about #logo-part-white{left:3%;opacity:1}.reveal-viewport.about #blue-pane{left:0;opacity:1;right:50%}.reveal-viewport.about #purple-half-circle-top{top:0}.reveal-viewport.about #purple-half-circle-bottom{bottom:0;left:18%;opacity:1}.reveal-viewport.about #yellow-half-strip{border-radius:20vw 0 0 0;left:33%;opacity:1}.reveal-viewport.about #empowering{opacity:1}.reveal-viewport.about h1,.reveal-viewport.about h2,.reveal-viewport.about p,.reveal-viewport.about ul{padding-left:55%;text-align:left}.reveal-viewport.keepintouch #logo-color{left:3%;opacity:1}.reveal-viewport.keepintouch #overlay{background-color:#009ddd;opacity:.8}.reveal-viewport.keepintouch #touch-pane{opacity:1}.reveal-viewport.keepintouch #purple-blob{top:0}.reveal-viewport.keepintouch #right-e{opacity:1;right:0;top:67%}.reveal-viewport.keepintouch #yellow-half-strip{border-radius:0 20vw 0 0;left:33%;opacity:1}.reveal-viewport.keepintouch #purple-half-circle-bottom{bottom:0;left:50%;opacity:1}.reveal-viewport.keepintouch #globe{left:46%;top:38.6%}.reveal-viewport.keepintouch #mail{left:46%;top:46.6%}.reveal-viewport.keepintouch #phone{left:46%;top:53.5%}.reveal-viewport.keepintouch h1,.reveal-viewport.keepintouch h2,.reveal-viewport.keepintouch p,.reveal-viewport.keepintouch ul{padding-left:50%;text-align:left}.reveal-viewport section.has-dark-background h1,.reveal-viewport section.has-dark-background h2,.reveal-viewport section.has-dark-background h3,.reveal-viewport.keepintouch a,.reveal-viewport.keepintouch p{color:#fff}.reveal-viewport .slides{z-index:10}#footer a,p a{text-decoration:underline} - + - + - - - -
- \ No newline at end of file + + + +
+ \ No newline at end of file diff --git a/404.html b/404.html index da083a20..20c1da27 100644 --- a/404.html +++ b/404.html @@ -9,13 +9,13 @@ * * Copyright (C) 2011-2024 Hakim El Hattab, https://hakim.se */.reveal .r-stretch,.reveal .stretch{max-height:none;max-width:none}.reveal pre.r-stretch code,.reveal pre.stretch code{box-sizing:border-box;height:100%;max-height:100%}.reveal .r-fit-text{display:inline-block;white-space:nowrap}.reveal .r-stack{display:grid}.reveal .r-stack>*{grid-area:1/1;margin:auto}.reveal .r-hstack,.reveal .r-vstack{display:flex}.reveal .r-hstack img,.reveal .r-hstack video,.reveal .r-vstack img,.reveal .r-vstack video{min-height:0;min-width:0;-o-object-fit:contain;object-fit:contain}.reveal .r-vstack{flex-direction:column}.reveal .r-hstack,.reveal .r-vstack{align-items:center;justify-content:center}.reveal .r-hstack{flex-direction:row}.reveal .items-stretch{align-items:stretch}.reveal .items-start{align-items:flex-start}.reveal .items-center{align-items:center}.reveal .items-end{align-items:flex-end}.reveal .justify-between{justify-content:space-between}.reveal .justify-around{justify-content:space-around}.reveal .justify-start{justify-content:flex-start}.reveal .justify-center{justify-content:center}.reveal .justify-end{justify-content:flex-end}html.reveal-full-page{height:100%;height:100vh;height:calc(var(--vh,1vh)*100);height:100svh;overflow:hidden;width:100%}.reveal-viewport{color:#000;height:100%;line-height:1;margin:0;overflow:hidden;position:relative;--r-controls-spacing:12px}.reveal-viewport:fullscreen{height:100%!important;left:0!important;top:0!important;transform:none!important;width:100%!important}.reveal .fragment{transition:all .2s ease}.reveal .fragment:not(.custom){opacity:0;visibility:hidden;will-change:opacity}.reveal .fragment.visible{opacity:1;visibility:inherit}.reveal .fragment.disabled{transition:none}.reveal .fragment.grow{opacity:1;visibility:inherit}.reveal .fragment.grow.visible{transform:scale(1.3)}.reveal .fragment.shrink{opacity:1;visibility:inherit}.reveal .fragment.shrink.visible{transform:scale(.7)}.reveal .fragment.zoom-in{transform:scale(.1)}.reveal .fragment.zoom-in.visible{transform:none}.reveal .fragment.fade-out{opacity:1;visibility:inherit}.reveal .fragment.fade-out.visible{opacity:0;visibility:hidden}.reveal .fragment.semi-fade-out{opacity:1;visibility:inherit}.reveal .fragment.semi-fade-out.visible{opacity:.5;visibility:inherit}.reveal .fragment.strike{opacity:1;visibility:inherit}.reveal .fragment.strike.visible{text-decoration:line-through}.reveal .fragment.fade-up{transform:translateY(40px)}.reveal .fragment.fade-up.visible{transform:translate(0)}.reveal .fragment.fade-down{transform:translateY(-40px)}.reveal .fragment.fade-down.visible{transform:translate(0)}.reveal .fragment.fade-right{transform:translate(-40px)}.reveal .fragment.fade-right.visible{transform:translate(0)}.reveal .fragment.fade-left{transform:translate(40px)}.reveal .fragment.fade-left.visible{transform:translate(0)}.reveal .fragment.current-visible,.reveal .fragment.fade-in-then-out{opacity:0;visibility:hidden}.reveal .fragment.current-visible.current-fragment,.reveal .fragment.fade-in-then-out.current-fragment{opacity:1;visibility:inherit}.reveal .fragment.fade-in-then-semi-out{opacity:0;visibility:hidden}.reveal .fragment.fade-in-then-semi-out.visible{opacity:.5;visibility:inherit}.reveal .fragment.fade-in-then-semi-out.current-fragment,.reveal .fragment.highlight-blue,.reveal .fragment.highlight-current-blue,.reveal .fragment.highlight-current-green,.reveal .fragment.highlight-current-red,.reveal .fragment.highlight-green,.reveal .fragment.highlight-red{opacity:1;visibility:inherit}.reveal .fragment.highlight-red.visible{color:#ff2c2d}.reveal .fragment.highlight-green.visible{color:#17ff2e}.reveal .fragment.highlight-blue.visible{color:#1b91ff}.reveal .fragment.highlight-current-red.current-fragment{color:#ff2c2d}.reveal .fragment.highlight-current-green.current-fragment{color:#17ff2e}.reveal .fragment.highlight-current-blue.current-fragment{color:#1b91ff}.reveal:after{content:"";font-style:italic}.reveal iframe{z-index:1}.reveal a{position:relative}@keyframes bounce-right{0%,10%,25%,40%,50%{transform:translateX(0)}20%{transform:translateX(10px)}30%{transform:translateX(-5px)}}@keyframes bounce-left{0%,10%,25%,40%,50%{transform:translateX(0)}20%{transform:translateX(-10px)}30%{transform:translateX(5px)}}@keyframes bounce-down{0%,10%,25%,40%,50%{transform:translateY(0)}20%{transform:translateY(10px)}30%{transform:translateY(-5px)}}.reveal .controls{bottom:var(--r-controls-spacing);color:#000;display:none;font-size:10px;left:auto;pointer-events:none;position:absolute;right:var(--r-controls-spacing);top:auto;z-index:11}.reveal .controls button{-webkit-appearance:none;background-color:transparent;border:0;color:currentColor;cursor:pointer;font-size:inherit;opacity:0;outline:0;padding:0;pointer-events:auto;position:absolute;transform:scale(.9999);transition:color .2s ease,opacity .2s ease,transform .2s ease;visibility:hidden;z-index:2;-webkit-tap-highlight-color:transparent}.reveal .controls .controls-arrow:after,.reveal .controls .controls-arrow:before{background-color:currentColor;border-radius:.25em;content:"";height:.5em;left:0;position:absolute;top:0;transform-origin:.2em 50%;transition:all .15s ease,background-color .8s ease;width:2.6em;will-change:transform}.reveal .controls .controls-arrow{height:3.6em;position:relative;width:3.6em}.reveal .controls .controls-arrow:before{transform:translateX(.5em) translateY(1.55em) rotate(45deg)}.reveal .controls .controls-arrow:after{transform:translateX(.5em) translateY(1.55em) rotate(-45deg)}.reveal .controls .controls-arrow:hover:before{transform:translateX(.5em) translateY(1.55em) rotate(40deg)}.reveal .controls .controls-arrow:hover:after{transform:translateX(.5em) translateY(1.55em) rotate(-40deg)}.reveal .controls .controls-arrow:active:before{transform:translateX(.5em) translateY(1.55em) rotate(36deg)}.reveal .controls .controls-arrow:active:after{transform:translateX(.5em) translateY(1.55em) rotate(-36deg)}.reveal .controls .navigate-left{bottom:3.2em;right:6.4em;transform:translateX(-10px)}.reveal .controls .navigate-left.highlight{animation:bounce-left 2s ease-out 50 both}.reveal .controls .navigate-right{bottom:3.2em;right:0;transform:translateX(10px)}.reveal .controls .navigate-right .controls-arrow{transform:rotate(180deg)}.reveal .controls .navigate-right.highlight{animation:bounce-right 2s ease-out 50 both}.reveal .controls .navigate-up{bottom:6.4em;right:3.2em;transform:translateY(-10px)}.reveal .controls .navigate-up .controls-arrow{transform:rotate(90deg)}.reveal .controls .navigate-down{bottom:-1.4em;padding-bottom:1.4em;right:3.2em;transform:translateY(10px)}.reveal .controls .navigate-down .controls-arrow{transform:rotate(-90deg)}.reveal .controls .navigate-down.highlight{animation:bounce-down 2s ease-out 50 both}.reveal .controls[data-controls-back-arrows=faded] .navigate-up.enabled{opacity:.3}.reveal .controls[data-controls-back-arrows=faded] .navigate-up.enabled:hover{opacity:1}.reveal .controls[data-controls-back-arrows=hidden] .navigate-up.enabled{opacity:0;visibility:hidden}.reveal .controls .enabled{cursor:pointer;opacity:.9;transform:none;visibility:visible}.reveal .controls .enabled.fragmented{opacity:.5}.reveal .controls .enabled.fragmented:hover,.reveal .controls .enabled:hover{opacity:1}.reveal:not(.rtl) .controls[data-controls-back-arrows=faded] .navigate-left.enabled{opacity:.3}.reveal:not(.rtl) .controls[data-controls-back-arrows=faded] .navigate-left.enabled:hover{opacity:1}.reveal:not(.rtl) .controls[data-controls-back-arrows=hidden] .navigate-left.enabled{opacity:0;visibility:hidden}.reveal.rtl .controls[data-controls-back-arrows=faded] .navigate-right.enabled{opacity:.3}.reveal.rtl .controls[data-controls-back-arrows=faded] .navigate-right.enabled:hover{opacity:1}.reveal.rtl .controls[data-controls-back-arrows=hidden] .navigate-right.enabled{opacity:0;visibility:hidden}.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-down,.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-up{display:none}.reveal:not(.has-vertical-slides) .controls .navigate-left,.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-left{bottom:1.4em;right:5.5em}.reveal:not(.has-vertical-slides) .controls .navigate-right,.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-right{bottom:1.4em;right:.5em}.reveal:not(.has-horizontal-slides) .controls .navigate-up{bottom:5em;right:1.4em}.reveal:not(.has-horizontal-slides) .controls .navigate-down{bottom:.5em;right:1.4em}.reveal.has-dark-background .controls{color:#fff}.reveal.has-light-background .controls{color:#000}.reveal.no-hover .controls .controls-arrow:active:before,.reveal.no-hover .controls .controls-arrow:hover:before{transform:translateX(.5em) translateY(1.55em) rotate(45deg)}.reveal.no-hover .controls .controls-arrow:active:after,.reveal.no-hover .controls .controls-arrow:hover:after{transform:translateX(.5em) translateY(1.55em) rotate(-45deg)}@media screen and (min-width:500px){.reveal-viewport{--r-controls-spacing:0.8em}.reveal .controls[data-controls-layout=edges]{bottom:0;left:0;right:0;top:0}.reveal .controls[data-controls-layout=edges] .navigate-down,.reveal .controls[data-controls-layout=edges] .navigate-left,.reveal .controls[data-controls-layout=edges] .navigate-right,.reveal .controls[data-controls-layout=edges] .navigate-up{bottom:auto;right:auto}.reveal .controls[data-controls-layout=edges] .navigate-left{left:var(--r-controls-spacing);margin-top:-1.8em;top:50%}.reveal .controls[data-controls-layout=edges] .navigate-right{margin-top:-1.8em;right:var(--r-controls-spacing);top:50%}.reveal .controls[data-controls-layout=edges] .navigate-up{left:50%;margin-left:-1.8em;top:var(--r-controls-spacing)}.reveal .controls[data-controls-layout=edges] .navigate-down{bottom:calc(var(--r-controls-spacing) - 1.1em);left:50%;margin-left:-1.8em}}.reveal .progress{background-color:rgba(0,0,0,.2);bottom:0;color:#fff;display:none;height:3px;left:0;position:absolute;width:100%;z-index:10}.reveal .progress:after{content:"";display:block;height:10px;position:absolute;top:-10px;width:100%}.reveal .progress span{background-color:currentColor;display:block;height:100%;transform:scaleX(0);transform-origin:0 0;transition:transform .8s cubic-bezier(.26,.86,.44,.985);width:100%}.reveal .slide-number{background-color:rgba(0,0,0,.4);bottom:8px;color:#fff;display:block;font-family:Helvetica,sans-serif;font-size:12px;line-height:1;padding:5px;position:absolute;right:8px;z-index:31}.reveal .slide-number a{color:currentColor}.reveal .slide-number-delimiter{margin:0 3px}.reveal{height:100%;overflow:hidden;position:relative;touch-action:pinch-zoom;width:100%}.reveal.embedded{touch-action:pan-y}.reveal .slides{bottom:0;height:100%;left:0;margin:auto;overflow:visible;perspective:600px;perspective-origin:50% 40%;pointer-events:none;position:absolute;right:0;text-align:center;top:0;width:100%;z-index:1}.reveal .slides>section{perspective:600px}.reveal .slides>section,.reveal .slides>section>section{display:none;pointer-events:auto;position:absolute;transform-style:flat;transition:transform-origin .8s cubic-bezier(.26,.86,.44,.985),transform .8s cubic-bezier(.26,.86,.44,.985),visibility .8s cubic-bezier(.26,.86,.44,.985),opacity .8s cubic-bezier(.26,.86,.44,.985);width:100%;z-index:10}.reveal[data-transition-speed=fast] .slides section{transition-duration:.4s}.reveal[data-transition-speed=slow] .slides section{transition-duration:1.2s}.reveal .slides section[data-transition-speed=fast]{transition-duration:.4s}.reveal .slides section[data-transition-speed=slow]{transition-duration:1.2s}.reveal .slides>section.stack{height:100%;padding-bottom:0;padding-top:0;pointer-events:none}.reveal .slides>section.present,.reveal .slides>section>section.present{display:block;opacity:1;z-index:11}.reveal .slides>section:empty,.reveal .slides>section>section:empty,.reveal .slides>section>section[data-background-interactive],.reveal .slides>section[data-background-interactive]{pointer-events:none}.reveal.center,.reveal.center .slides,.reveal.center .slides section{min-height:0!important}.reveal .slides>section:not(.present),.reveal .slides>section>section:not(.present){pointer-events:none}.reveal.overview .slides>section,.reveal.overview .slides>section>section{pointer-events:auto}.reveal .slides>section.future,.reveal .slides>section.future>section,.reveal .slides>section.past,.reveal .slides>section.past>section,.reveal .slides>section>section.future,.reveal .slides>section>section.past{opacity:0}.reveal .slides>section[data-transition=slide].past,.reveal .slides>section[data-transition~=slide-out].past,.reveal.slide .slides>section:not([data-transition]).past{transform:translate(-150%)}.reveal .slides>section[data-transition=slide].future,.reveal .slides>section[data-transition~=slide-in].future,.reveal.slide .slides>section:not([data-transition]).future{transform:translate(150%)}.reveal .slides>section>section[data-transition=slide].past,.reveal .slides>section>section[data-transition~=slide-out].past,.reveal.slide .slides>section>section:not([data-transition]).past{transform:translateY(-150%)}.reveal .slides>section>section[data-transition=slide].future,.reveal .slides>section>section[data-transition~=slide-in].future,.reveal.slide .slides>section>section:not([data-transition]).future{transform:translateY(150%)}.reveal .slides>section[data-transition=linear].past,.reveal .slides>section[data-transition~=linear-out].past,.reveal.linear .slides>section:not([data-transition]).past{transform:translate(-150%)}.reveal .slides>section[data-transition=linear].future,.reveal .slides>section[data-transition~=linear-in].future,.reveal.linear .slides>section:not([data-transition]).future{transform:translate(150%)}.reveal .slides>section>section[data-transition=linear].past,.reveal .slides>section>section[data-transition~=linear-out].past,.reveal.linear .slides>section>section:not([data-transition]).past{transform:translateY(-150%)}.reveal .slides>section>section[data-transition=linear].future,.reveal .slides>section>section[data-transition~=linear-in].future,.reveal.linear .slides>section>section:not([data-transition]).future{transform:translateY(150%)}.reveal .slides section[data-transition=default].stack,.reveal.default .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=default].past,.reveal .slides>section[data-transition~=default-out].past,.reveal.default .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=default].future,.reveal .slides>section[data-transition~=default-in].future,.reveal.default .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=default].past,.reveal .slides>section>section[data-transition~=default-out].past,.reveal.default .slides>section>section:not([data-transition]).past{transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section[data-transition=default].future,.reveal .slides>section>section[data-transition~=default-in].future,.reveal.default .slides>section>section:not([data-transition]).future{transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal .slides section[data-transition=convex].stack,.reveal.convex .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=convex].past,.reveal .slides>section[data-transition~=convex-out].past,.reveal.convex .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=convex].future,.reveal .slides>section[data-transition~=convex-in].future,.reveal.convex .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=convex].past,.reveal .slides>section>section[data-transition~=convex-out].past,.reveal.convex .slides>section>section:not([data-transition]).past{transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section[data-transition=convex].future,.reveal .slides>section>section[data-transition~=convex-in].future,.reveal.convex .slides>section>section:not([data-transition]).future{transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal .slides section[data-transition=concave].stack,.reveal.concave .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=concave].past,.reveal .slides>section[data-transition~=concave-out].past,.reveal.concave .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=concave].future,.reveal .slides>section[data-transition~=concave-in].future,.reveal.concave .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=concave].past,.reveal .slides>section>section[data-transition~=concave-out].past,.reveal.concave .slides>section>section:not([data-transition]).past{transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0)}.reveal .slides>section>section[data-transition=concave].future,.reveal .slides>section>section[data-transition~=concave-in].future,.reveal.concave .slides>section>section:not([data-transition]).future{transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0)}.reveal .slides section[data-transition=zoom],.reveal.zoom .slides section:not([data-transition]){transition-timing-function:ease}.reveal .slides>section[data-transition=zoom].past,.reveal .slides>section[data-transition~=zoom-out].past,.reveal.zoom .slides>section:not([data-transition]).past{transform:scale(16);visibility:hidden}.reveal .slides>section[data-transition=zoom].future,.reveal .slides>section[data-transition~=zoom-in].future,.reveal.zoom .slides>section:not([data-transition]).future{transform:scale(.2);visibility:hidden}.reveal .slides>section>section[data-transition=zoom].past,.reveal .slides>section>section[data-transition~=zoom-out].past,.reveal.zoom .slides>section>section:not([data-transition]).past{transform:scale(16)}.reveal .slides>section>section[data-transition=zoom].future,.reveal .slides>section>section[data-transition~=zoom-in].future,.reveal.zoom .slides>section>section:not([data-transition]).future{transform:scale(.2)}.reveal.cube .slides{perspective:1300px}.reveal.cube .slides section{backface-visibility:hidden;box-sizing:border-box;min-height:700px;padding:30px;transform-style:preserve-3d}.reveal.center.cube .slides section{min-height:0}.reveal.cube .slides section:not(.stack):before{background:rgba(0,0,0,.1);border-radius:4px;content:"";display:block;height:100%;left:0;position:absolute;top:0;transform:translateZ(-20px);width:100%}.reveal.cube .slides section:not(.stack):after{background:0 0;border-radius:4px;bottom:0;box-shadow:0 95px 25px rgba(0,0,0,.2);content:"";display:block;height:30px;left:5%;position:absolute;transform:translateZ(-90px) rotateX(65deg);width:90%;z-index:1}.reveal.cube .slides>section.stack{background:0 0;padding:0}.reveal.cube .slides>section.past{transform:translate3d(-100%,0,0) rotateY(-90deg);transform-origin:100% 0}.reveal.cube .slides>section.future{transform:translate3d(100%,0,0) rotateY(90deg);transform-origin:0 0}.reveal.cube .slides>section>section.past{transform:translate3d(0,-100%,0) rotateX(90deg);transform-origin:0 100%}.reveal.cube .slides>section>section.future{transform:translate3d(0,100%,0) rotateX(-90deg);transform-origin:0 0}.reveal.page .slides{perspective:3000px;perspective-origin:0 50%}.reveal.page .slides section{box-sizing:border-box;min-height:700px;padding:30px;transform-style:preserve-3d}.reveal.page .slides section.past{z-index:12}.reveal.page .slides section:not(.stack):before{background:rgba(0,0,0,.1);content:"";display:block;height:100%;left:0;position:absolute;top:0;transform:translateZ(-20px);width:100%}.reveal.page .slides section:not(.stack):after{background:0 0;border-radius:4px;bottom:0;box-shadow:0 95px 25px rgba(0,0,0,.2);content:"";display:block;height:30px;left:5%;position:absolute;-webkit-transform:translateZ(-90px) rotateX(65deg);width:90%;z-index:1}.reveal.page .slides>section.stack{background:0 0;padding:0}.reveal.page .slides>section.past{transform:translate3d(-40%,0,0) rotateY(-80deg);transform-origin:0 0}.reveal.page .slides>section.future{transform:translateZ(0);transform-origin:100% 0}.reveal.page .slides>section>section.past{transform:translate3d(0,-40%,0) rotateX(80deg);transform-origin:0 0}.reveal.page .slides>section>section.future{transform:translateZ(0);transform-origin:0 100%}.reveal .slides section[data-transition=fade],.reveal.fade .slides section:not([data-transition]),.reveal.fade .slides>section>section:not([data-transition]){transform:none;transition:opacity .5s}.reveal.fade.overview .slides section,.reveal.fade.overview .slides>section>section{transition:none}.reveal .slides section[data-transition=none],.reveal.none .slides section:not([data-transition]){transform:none;transition:none}.reveal .pause-overlay{background:#000;height:100%;left:0;opacity:0;position:absolute;top:0;transition:all 1s ease;visibility:hidden;width:100%;z-index:100}.reveal .pause-overlay .resume-button{background:0 0;border:2px solid #ccc;border-radius:2px;bottom:20px;color:#ccc;cursor:pointer;font-size:16px;padding:6px 14px;position:absolute;right:20px}.reveal .pause-overlay .resume-button:hover{border-color:#fff;color:#fff}.reveal.paused .pause-overlay{opacity:1;visibility:visible}.reveal .no-transition,.reveal .no-transition *,.reveal .slides.disable-slide-transitions section{transition:none!important}.reveal .slides.disable-slide-transitions section{transform:none!important}.reveal .backgrounds{height:100%;left:0;perspective:600px;position:absolute;top:0;width:100%}.reveal .slide-background{background-color:transparent;display:none;height:100%;opacity:0;overflow:hidden;position:absolute;transition:all .8s cubic-bezier(.26,.86,.44,.985);visibility:hidden;width:100%}.reveal .slide-background-content{background-position:50% 50%;background-repeat:no-repeat;background-size:cover;height:100%;position:absolute;width:100%}.reveal .slide-background.stack{display:block}.reveal .slide-background.present{opacity:1;visibility:visible;z-index:2}.print-pdf .reveal .slide-background{opacity:1!important;visibility:visible!important}.reveal .slide-background video{height:100%;left:0;max-height:none;max-width:none;-o-object-fit:cover;object-fit:cover;position:absolute;top:0;width:100%}.reveal .slide-background[data-background-size=contain] video{-o-object-fit:contain;object-fit:contain}.reveal>.backgrounds .slide-background[data-background-transition=none],.reveal[data-background-transition=none]>.backgrounds .slide-background:not([data-background-transition]){transition:none}.reveal>.backgrounds .slide-background[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background:not([data-background-transition]){opacity:1}.reveal>.backgrounds .slide-background.past[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background.past:not([data-background-transition]){transform:translate(-100%)}.reveal>.backgrounds .slide-background.future[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background.future:not([data-background-transition]){transform:translate(100%)}.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]){transform:translateY(-100%)}.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]){transform:translateY(100%)}.reveal>.backgrounds .slide-background.past[data-background-transition=convex],.reveal[data-background-transition=convex]>.backgrounds .slide-background.past:not([data-background-transition]){opacity:0;transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal>.backgrounds .slide-background.future[data-background-transition=convex],.reveal[data-background-transition=convex]>.backgrounds .slide-background.future:not([data-background-transition]){opacity:0;transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex],.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]){opacity:0;transform:translate3d(0,-100%,0) rotateX(90deg) translate3d(0,-100%,0)}.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex],.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]){opacity:0;transform:translate3d(0,100%,0) rotateX(-90deg) translate3d(0,100%,0)}.reveal>.backgrounds .slide-background.past[data-background-transition=concave],.reveal[data-background-transition=concave]>.backgrounds .slide-background.past:not([data-background-transition]){opacity:0;transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal>.backgrounds .slide-background.future[data-background-transition=concave],.reveal[data-background-transition=concave]>.backgrounds .slide-background.future:not([data-background-transition]){opacity:0;transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave],.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]){opacity:0;transform:translate3d(0,-100%,0) rotateX(-90deg) translate3d(0,-100%,0)}.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave],.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]){opacity:0;transform:translate3d(0,100%,0) rotateX(90deg) translate3d(0,100%,0)}.reveal>.backgrounds .slide-background[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background:not([data-background-transition]){transition-timing-function:ease}.reveal>.backgrounds .slide-background.past[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background.past:not([data-background-transition]){opacity:0;transform:scale(16);visibility:hidden}.reveal>.backgrounds .slide-background.future[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background.future:not([data-background-transition]){opacity:0;transform:scale(.2);visibility:hidden}.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]){opacity:0;transform:scale(16);visibility:hidden}.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]){opacity:0;transform:scale(.2);visibility:hidden}.reveal[data-transition-speed=fast]>.backgrounds .slide-background{transition-duration:.4s}.reveal[data-transition-speed=slow]>.backgrounds .slide-background{transition-duration:1.2s}.reveal [data-auto-animate-target^=unmatched]{will-change:opacity}.reveal section[data-auto-animate]:not(.stack):not([data-auto-animate=running]) [data-auto-animate-target^=unmatched]{opacity:0}.reveal.overview{perspective:700px;perspective-origin:50% 50%}.reveal.overview .slides{-moz-transform-style:preserve-3d}.reveal.overview .slides section{box-sizing:border-box;cursor:pointer;height:100%;opacity:1!important;overflow:hidden;top:0!important;visibility:visible!important}.reveal.overview .slides section.present,.reveal.overview .slides section:hover{outline:10px solid hsla(0,0%,59%,.4);outline-offset:10px}.reveal.overview .slides section .fragment{opacity:1;transition:none}.reveal.overview .slides section:after,.reveal.overview .slides section:before{display:none!important}.reveal.overview .slides>section.stack{background:0 0;outline:0;overflow:visible;padding:0;top:0!important}.reveal.overview .backgrounds{perspective:inherit;-moz-transform-style:preserve-3d}.reveal.overview .backgrounds .slide-background{opacity:1;outline:10px solid hsla(0,0%,59%,.1);outline-offset:10px;visibility:visible}.reveal.overview .backgrounds .slide-background.stack{overflow:visible}.reveal.overview .backgrounds .slide-background,.reveal.overview .slides section,.reveal.overview-deactivating .backgrounds .slide-background,.reveal.overview-deactivating .slides section{transition:none}.reveal.rtl .slides,.reveal.rtl .slides h1,.reveal.rtl .slides h2,.reveal.rtl .slides h3,.reveal.rtl .slides h4,.reveal.rtl .slides h5,.reveal.rtl .slides h6{direction:rtl;font-family:sans-serif}.reveal.rtl code,.reveal.rtl pre{direction:ltr}.reveal.rtl ol,.reveal.rtl ul{text-align:right}.reveal.rtl .progress span{transform-origin:100% 0}.reveal.has-parallax-background .backgrounds{transition:all .8s ease}.reveal.has-parallax-background[data-transition-speed=fast] .backgrounds{transition-duration:.4s}.reveal.has-parallax-background[data-transition-speed=slow] .backgrounds{transition-duration:1.2s}.reveal>.overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:rgba(0,0,0,.95);height:100%;left:0;position:absolute;top:0;transition:all .3s ease;width:100%;z-index:1000}.reveal>.overlay .spinner{background-image:url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D);display:block;height:32px;left:50%;margin:-16px 0 0 -16px;opacity:.6;position:absolute;top:50%;transition:all .3s ease;visibility:visible;width:32px;z-index:10}.reveal>.overlay header{box-sizing:border-box;left:0;padding:5px;position:absolute;top:0;width:100%;z-index:2}.reveal>.overlay header a{box-sizing:border-box;display:inline-block;float:right;height:40px;line-height:36px;opacity:.6;padding:0 10px;width:40px}.reveal>.overlay header a:hover{opacity:1}.reveal>.overlay header a .icon{background-position:50% 50%;background-repeat:no-repeat;background-size:100%;display:inline-block;height:20px;width:20px}.reveal>.overlay header a.close .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC)}.reveal>.overlay header a.external .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==)}.reveal>.overlay .viewport{bottom:0;display:flex;left:0;position:absolute;right:0;top:50px}.reveal>.overlay.overlay-preview .viewport iframe{border:0;height:100%;max-height:100%;max-width:100%;opacity:0;transition:all .3s ease;visibility:hidden;width:100%}.reveal>.overlay.overlay-preview.loaded .viewport iframe{opacity:1;visibility:visible}.reveal>.overlay.overlay-preview.loaded .viewport-inner{left:0;letter-spacing:normal;position:absolute;text-align:center;top:45%;width:100%;z-index:-1}.reveal>.overlay.overlay-preview .x-frame-error{opacity:0;transition:opacity .3s ease .3s}.reveal>.overlay.overlay-preview.loaded .x-frame-error{opacity:1}.reveal>.overlay.overlay-preview.loaded .spinner{opacity:0;transform:scale(.2);visibility:hidden}.reveal>.overlay.overlay-help .viewport{color:#fff;overflow:auto}.reveal>.overlay.overlay-help .viewport .viewport-inner{letter-spacing:normal;margin:auto;padding:20px 20px 80px;text-align:center;width:600px}.reveal>.overlay.overlay-help .viewport .viewport-inner .title{font-size:20px}.reveal>.overlay.overlay-help .viewport .viewport-inner table{border:1px solid #fff;border-collapse:collapse;font-size:16px}.reveal>.overlay.overlay-help .viewport .viewport-inner table td,.reveal>.overlay.overlay-help .viewport .viewport-inner table th{border:1px solid #fff;padding:14px;vertical-align:middle;width:200px}.reveal>.overlay.overlay-help .viewport .viewport-inner table th{padding-bottom:20px;padding-top:20px}.reveal .playback{bottom:20px;cursor:pointer;left:15px;position:absolute;transition:all .4s ease;z-index:30;-webkit-tap-highlight-color:transparent}.reveal.overview .playback{opacity:0;visibility:hidden}.reveal .hljs{min-height:100%}.reveal .hljs table{margin:initial}.reveal .hljs-ln-code,.reveal .hljs-ln-numbers{border:0;padding:0}.reveal .hljs-ln-numbers{opacity:.6;padding-right:.75em;text-align:right;vertical-align:top}.reveal .hljs.has-highlights tr:not(.highlight-line){opacity:.4}.reveal .hljs.has-highlights.fragment{transition:all .2s ease}.reveal .hljs:not(:first-child).fragment{box-sizing:border-box;left:0;position:absolute;top:0;width:100%}.reveal pre[data-auto-animate-target]{overflow:hidden}.reveal pre[data-auto-animate-target] code{height:100%}.reveal .roll{display:inline-block;line-height:1.2;overflow:hidden;perspective:400px;perspective-origin:50% 50%;vertical-align:top}.reveal .roll:hover{background:0 0;text-shadow:none}.reveal .roll span{backface-visibility:hidden;display:block;padding:0 2px;pointer-events:none;position:relative;transform-origin:50% 0;transform-style:preserve-3d;transition:all .4s ease}.reveal .roll:hover span{background:rgba(0,0,0,.5);transform:translateZ(-45px) rotateX(90deg)}.reveal .roll span:after{backface-visibility:hidden;content:attr(data-title);display:block;left:0;padding:0 2px;position:absolute;top:0;transform:translate3d(0,110%,0) rotateX(-90deg);transform-origin:50% 0}.reveal aside.notes{display:none}.reveal .speaker-notes{background-color:#f5f5f5;border:1px solid rgba(0,0,0,.05);box-sizing:border-box;color:#222;display:none;font-family:Helvetica,sans-serif;font-size:18px;height:100%;left:100%;line-height:1.4;overflow:auto;padding:14px 18px;position:absolute;text-align:left;top:0;width:33.3333333333%;z-index:1;-webkit-overflow-scrolling:touch}.reveal .speaker-notes .notes-placeholder{color:#ccc;font-style:italic}.reveal .speaker-notes:focus{outline:0}.reveal .speaker-notes:before{content:"Speaker notes";display:block;margin-bottom:10px;opacity:.5}.reveal.show-notes{max-width:75%;overflow:visible}.reveal.show-notes .speaker-notes{display:block}@media screen and (min-width:1600px){.reveal .speaker-notes{font-size:20px}}@media screen and (max-width:1024px){.reveal.show-notes{border-left:0;max-height:70%;max-height:70vh;max-width:none;overflow:visible}.reveal.show-notes .speaker-notes{border:0;height:30vh;left:0;top:100%;width:100%}}@media screen and (max-width:600px){.reveal.show-notes{max-height:60%;max-height:60vh}.reveal.show-notes .speaker-notes{height:40vh;top:100%}.reveal .speaker-notes{font-size:14px}}.reveal .jump-to-slide{font-size:32px;left:15px;position:absolute;top:15px;z-index:30;-webkit-tap-highlight-color:transparent}.reveal .jump-to-slide-input{background:0 0;border:0;color:currentColor;font-size:inherit;padding:8px}.reveal .jump-to-slide-input::-moz-placeholder{color:currentColor;opacity:.5}.reveal .jump-to-slide-input::placeholder{color:currentColor;opacity:.5}.reveal.has-dark-background .jump-to-slide-input{color:#fff}.reveal.has-light-background .jump-to-slide-input{color:#222}.reveal .jump-to-slide-input:focus{outline:0}.zoomed .reveal *,.zoomed .reveal :after,.zoomed .reveal :before{backface-visibility:visible!important}.zoomed .reveal .controls,.zoomed .reveal .progress{opacity:0}.zoomed .reveal .roll span{background:0 0}.reveal-viewport.loading-scroll-mode,.zoomed .reveal .roll span:after{visibility:hidden}.reveal-viewport.reveal-scroll{margin:0 auto;overflow:auto;overflow-x:hidden;overflow-y:auto;z-index:1;--r-scrollbar-width:7px;--r-scrollbar-trigger-size:5px;--r-controls-spacing:8px}@media screen and (max-width:500px){.reveal-viewport.reveal-scroll{--r-scrollbar-width:3px;--r-scrollbar-trigger-size:3px}}.reveal-viewport.reveal-scroll .backgrounds,.reveal-viewport.reveal-scroll .controls,.reveal-viewport.reveal-scroll .playback,.reveal-viewport.reveal-scroll .progress,.reveal-viewport.reveal-scroll .slide-number,.reveal-viewport.reveal-scroll .speaker-notes{display:none!important}.reveal-viewport.reveal-scroll .overlay,.reveal-viewport.reveal-scroll .pause-overlay{position:fixed}.reveal-viewport.reveal-scroll .reveal{overflow:visible;touch-action:manipulation}.reveal-viewport.reveal-scroll .slides{display:block;left:auto;margin:0;overflow:visible;padding:0;perspective:none;perspective-origin:50% 50%;pointer-events:auto;position:static;top:auto;width:100%!important}.reveal-viewport.reveal-scroll .scroll-page{height:calc(var(--page-height) + var(--page-scroll-padding));overflow:visible;position:relative;width:100%;z-index:1}.reveal-viewport.reveal-scroll .scroll-page-sticky{height:var(--page-height);position:sticky;top:0}.reveal-viewport.reveal-scroll .scroll-page-content{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.reveal-viewport.reveal-scroll .scroll-page section{display:block!important;height:var(--slide-height)!important;left:50%!important;opacity:1!important;position:absolute!important;top:50%!important;transform:scale(var(--slide-scale)) translate(-50%,-50%)!important;transform-origin:0 0!important;transform-style:flat!important;visibility:visible!important;width:var(--slide-width)!important}.reveal-viewport.reveal-scroll .slide-background{display:block!important;height:100%;left:0;opacity:1;position:absolute;top:0;touch-action:manipulation;visibility:visible;width:100%;z-index:auto!important}.reveal-viewport.reveal-scroll[data-scrollbar=auto]::-webkit-scrollbar,.reveal-viewport.reveal-scroll[data-scrollbar=true]::-webkit-scrollbar{display:none}.reveal-viewport.reveal-scroll[data-scrollbar=auto],.reveal-viewport.reveal-scroll[data-scrollbar=true]{scrollbar-width:none}.reveal-viewport.has-dark-background,.reveal.has-dark-background{--r-overlay-element-bg-color:240,240,240;--r-overlay-element-fg-color:0,0,0}.reveal-viewport.has-light-background,.reveal.has-light-background{--r-overlay-element-bg-color:0,0,0;--r-overlay-element-fg-color:240,240,240}.reveal-viewport.reveal-scroll .scrollbar{opacity:0;position:sticky;top:50%;transition:all .3s ease;z-index:20}.reveal-viewport.reveal-scroll .scrollbar.visible,.reveal-viewport.reveal-scroll .scrollbar:hover{opacity:1}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-inner{border-radius:var(--r-scrollbar-width);height:calc(var(--viewport-height) - var(--r-controls-spacing)*2);position:absolute;right:var(--r-controls-spacing);top:0;transform:translateY(-50%);width:var(--r-scrollbar-width);z-index:10}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-playhead{background-color:#f0f0f0;background-color:rgba(var(--r-overlay-element-bg-color),1);border-radius:var(--r-scrollbar-width);height:var(--r-scrollbar-width);left:0;position:absolute;top:0;transition:background-color .2s ease;width:var(--r-scrollbar-width);z-index:11}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide{background-color:hsla(0,0%,94%,.2);background-color:rgba(var(--r-overlay-element-bg-color),.2);border-radius:var(--r-scrollbar-width);box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(var(--r-overlay-element-fg-color),.1);position:absolute;transition:background-color .2s ease;width:100%}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide:after{background:transparent;content:"";height:100%;left:-50%;position:absolute;top:0;width:200%;z-index:-1}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active,.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide:hover{background-color:hsla(0,0%,94%,.4);background-color:rgba(var(--r-overlay-element-bg-color),.4)}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-trigger{position:absolute;transition:background-color .2s ease;width:100%}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active.has-triggers{background-color:hsla(0,0%,94%,.4);background-color:rgba(var(--r-overlay-element-bg-color),.4);z-index:10}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger:after{background-color:#f0f0f0;background-color:rgba(var(--r-overlay-element-bg-color),1);border-radius:20px;content:"";height:var(--r-scrollbar-trigger-size);left:50%;opacity:.4;position:absolute;top:50%;transform:translate(-50%,-50%);transition:transform .2s ease,opacity .2s ease;width:var(--r-scrollbar-trigger-size)}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger.active:after,.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger.active~.scrollbar-trigger:after{opacity:1}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger~.scrollbar-trigger.active:after{background-color:#f0f0f0;background-color:rgba(var(--r-overlay-element-bg-color),1);transform:translate(calc(var(--r-scrollbar-width)*-2))}html.reveal-print *{-webkit-print-color-adjust:exact}html.reveal-print{height:100%;overflow:visible;width:100%}html.reveal-print body{border:0;float:none!important;margin:0 auto!important;overflow:visible;padding:0}html.reveal-print .nestedarrow,html.reveal-print .reveal .controls,html.reveal-print .reveal .playback,html.reveal-print .reveal .progress,html.reveal-print .reveal.overview,html.reveal-print .state-background{display:none!important}html.reveal-print .reveal pre code{overflow:hidden!important}html.reveal-print .reveal{height:auto!important;overflow:hidden!important;width:auto!important}html.reveal-print .reveal .slides{height:auto!important;position:static;width:100%!important;zoom:1!important;display:block;left:auto;margin:0!important;overflow:visible;padding:0!important;perspective:none;perspective-origin:50% 50%;pointer-events:auto;top:auto}html.reveal-print .reveal .slides .pdf-page{overflow:hidden;page-break-after:always;position:relative;z-index:1}html.reveal-print .reveal .slides .pdf-page:last-of-type{page-break-after:avoid}html.reveal-print .reveal .slides section{box-sizing:border-box!important;display:block!important;margin:0!important;min-height:1px;opacity:1!important;padding:0!important;position:absolute!important;transform:none!important;transform-style:flat!important;visibility:visible!important}html.reveal-print .reveal section.stack{height:auto!important;margin:0!important;min-height:auto!important;padding:0!important;page-break-after:avoid!important;position:relative!important}html.reveal-print .reveal img{box-shadow:none}html.reveal-print .reveal .backgrounds{display:none}html.reveal-print .reveal .slide-background{display:block!important;height:100%;left:0;position:absolute;top:0;width:100%;z-index:auto!important}html.reveal-print .reveal.show-notes{max-height:none;max-width:none}html.reveal-print .reveal .speaker-notes-pdf{bottom:auto;display:block;height:auto;left:auto;max-height:none;right:auto;top:auto;width:100%;z-index:100}html.reveal-print .reveal .speaker-notes-pdf[data-layout=separate-page]{background-color:transparent;border:0;color:inherit;padding:20px;page-break-after:always;position:relative}html.reveal-print .reveal .slide-number-pdf{display:block;font-size:14px;position:absolute;visibility:visible}html.reveal-print .aria-status{display:none}@media print{html:not(.print-pdf){height:auto;overflow:visible;width:auto}html:not(.print-pdf) body{margin:0;overflow:visible;padding:0}html:not(.print-pdf) .reveal{background:#fff;font-size:20pt}html:not(.print-pdf) .reveal .backgrounds,html:not(.print-pdf) .reveal .controls,html:not(.print-pdf) .reveal .progress,html:not(.print-pdf) .reveal .slide-number,html:not(.print-pdf) .reveal .state-background{display:none!important}html:not(.print-pdf) .reveal li,html:not(.print-pdf) .reveal p,html:not(.print-pdf) .reveal td{color:#000;font-size:20pt!important}html:not(.print-pdf) .reveal h1,html:not(.print-pdf) .reveal h2,html:not(.print-pdf) .reveal h3,html:not(.print-pdf) .reveal h4,html:not(.print-pdf) .reveal h5,html:not(.print-pdf) .reveal h6{color:#000!important;height:auto;letter-spacing:normal;line-height:normal;text-align:left}html:not(.print-pdf) .reveal h1{font-size:28pt!important}html:not(.print-pdf) .reveal h2{font-size:24pt!important}html:not(.print-pdf) .reveal h3{font-size:22pt!important}html:not(.print-pdf) .reveal h4{font-size:22pt!important;font-variant:small-caps}html:not(.print-pdf) .reveal h5{font-size:21pt!important}html:not(.print-pdf) .reveal h6{font-size:20pt!important;font-style:italic}html:not(.print-pdf) .reveal a:link,html:not(.print-pdf) .reveal a:visited{color:#000!important;font-weight:700;text-decoration:underline}html:not(.print-pdf) .reveal div,html:not(.print-pdf) .reveal ol,html:not(.print-pdf) .reveal p,html:not(.print-pdf) .reveal ul{display:block;height:auto;margin:0;overflow:visible;position:static;text-align:left!important;visibility:visible;width:auto}html:not(.print-pdf) .reveal pre,html:not(.print-pdf) .reveal table{margin-left:0;margin-right:0}html:not(.print-pdf) .reveal pre code{padding:20px}html:not(.print-pdf) .reveal blockquote{margin:20px 0}html:not(.print-pdf) .reveal .slides{padding:0!important;zoom:1!important;perspective:none;perspective-origin:50% 50%;text-align:left!important;transform:none!important}html:not(.print-pdf) .reveal .slides,html:not(.print-pdf) .reveal .slides section{display:block!important;height:auto!important;left:0!important;margin-left:0!important;margin-top:0!important;overflow:visible!important;position:static!important;top:0!important;width:auto!important}html:not(.print-pdf) .reveal .slides section{opacity:1!important;padding:60px 20px!important;page-break-after:always!important;transform:none!important;transform-style:flat!important;transition:none!important;visibility:visible!important;z-index:auto!important}html:not(.print-pdf) .reveal .slides section.stack{padding:0!important}html:not(.print-pdf) .reveal .slides section:last-of-type{page-break-after:avoid!important}html:not(.print-pdf) .reveal .slides section .fragment{opacity:1!important;transform:none!important;visibility:visible!important}html:not(.print-pdf) .reveal .r-fit-text{white-space:normal!important}html:not(.print-pdf) .reveal section img{background:#fff;border:1px solid #666;box-shadow:none;display:block;margin:15px 0}html:not(.print-pdf) .reveal section small{font-size:.8em}html:not(.print-pdf) .reveal .hljs{max-height:100%;white-space:pre-wrap;word-wrap:break-word;font-size:15pt;word-break:break-word}html:not(.print-pdf) .reveal .hljs .hljs-ln-numbers{white-space:nowrap}html:not(.print-pdf) .reveal .hljs td{color:inherit!important;font-size:inherit!important}}:root{--r-background-color:#fff;--r-main-font:Assistant,Helvetica,sans-serif;--r-main-font-size:28px;--r-main-color:#000;--r-block-margin:20px;--r-heading-margin:0 0 20px 0;--r-heading-font:Nunito,Helvetica,sans-serif;--r-heading-color:#000;--r-heading-line-height:1.2;--r-heading-letter-spacing:normal;--r-heading-text-transform:none;--r-heading-text-shadow:none;--r-heading-font-weight:bold;--r-heading1-text-shadow:none;--r-heading1-size:3em;--r-heading2-size:2.5em;--r-heading3-size:2em;--r-heading4-size:1.5em;--r-code-font:monospace;--r-link-color:#ffb213;--r-link-color-dark:#c68500;--r-link-color-hover:#ffcb60;--r-selection-background-color:#ffdc93;--r-selection-color:#fff;--r-overlay-element-bg-color:240,240,240;--r-overlay-element-fg-color:0,0,0}.reveal-viewport{background:#fff;background-color:#fff;background-color:var(--r-background-color)}.reveal{color:#000;color:var(--r-main-color);font-family:Assistant,Helvetica,sans-serif;font-family:var(--r-main-font);font-size:28px;font-size:var(--r-main-font-size);font-weight:400}.reveal ::selection{background:#ffdc93;background:var(--r-selection-background-color);color:#fff;color:var(--r-selection-color);text-shadow:none}.reveal ::-moz-selection{background:#ffdc93;background:var(--r-selection-background-color);color:#fff;color:var(--r-selection-color);text-shadow:none}.reveal .slides section,.reveal .slides section>section{font-weight:inherit;line-height:1.3}.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6{color:#000;color:var(--r-heading-color);font-family:Nunito,Helvetica,sans-serif;font-family:var(--r-heading-font);font-weight:700;font-weight:var(--r-heading-font-weight);letter-spacing:normal;letter-spacing:var(--r-heading-letter-spacing);line-height:1.2;line-height:var(--r-heading-line-height);margin:0 0 20px;margin:var(--r-heading-margin);text-shadow:none;text-shadow:var(--r-heading-text-shadow);text-transform:none;text-transform:var(--r-heading-text-transform);word-wrap:break-word}.reveal h1{font-size:3em;font-size:var(--r-heading1-size)}.reveal h2{font-size:2.5em;font-size:var(--r-heading2-size)}.reveal h3{font-size:2em;font-size:var(--r-heading3-size)}.reveal h4{font-size:1.5em;font-size:var(--r-heading4-size)}.reveal h1{text-shadow:none;text-shadow:var(--r-heading1-text-shadow)}.reveal p{line-height:1.3;margin:20px 0;margin:var(--r-block-margin) 0}.reveal h1:last-child,.reveal h2:last-child,.reveal h3:last-child,.reveal h4:last-child,.reveal h5:last-child,.reveal h6:last-child{margin-bottom:0}.reveal iframe,.reveal img,.reveal video{max-height:95%;max-width:95%}.reveal b,.reveal strong{font-weight:700}.reveal em{font-style:italic}.reveal dl,.reveal ol,.reveal ul{display:inline-block;margin:0 0 0 1em;text-align:left}.reveal ol{list-style-type:decimal}.reveal ul{list-style-type:disc}.reveal ul ul{list-style-type:square}.reveal ul ul ul{list-style-type:circle}.reveal ol ol,.reveal ol ul,.reveal ul ol,.reveal ul ul{display:block;margin-left:40px}.reveal dt{font-weight:700}.reveal dd{margin-left:40px}.reveal blockquote{background:hsla(0,0%,100%,.05);box-shadow:0 0 2px rgba(0,0,0,.2);display:block;font-style:italic;margin:20px auto;margin:var(--r-block-margin) auto;padding:5px;position:relative;width:70%}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:inline-block}.reveal q{font-style:italic}.reveal pre{display:block;font-size:.55em;line-height:1.2em;margin:20px auto;margin:var(--r-block-margin) auto;position:relative;text-align:left;width:90%;word-wrap:break-word;box-shadow:0 5px 15px rgba(0,0,0,.15)}.reveal code,.reveal pre{font-family:monospace;font-family:var(--r-code-font)}.reveal code{-moz-tab-size:2;-o-tab-size:2;tab-size:2;text-transform:none}.reveal pre code{display:block;max-height:400px;overflow:auto;padding:5px;word-wrap:normal}.reveal .code-wrapper{white-space:normal}.reveal .code-wrapper code{white-space:pre}.reveal table{border-collapse:collapse;border-spacing:0;margin:auto}.reveal table th{font-weight:700}.reveal table td,.reveal table th{border-bottom:1px solid;padding:.2em .5em;text-align:left}.reveal table td[align=center],.reveal table th[align=center]{text-align:center}.reveal table td[align=right],.reveal table th[align=right]{text-align:right}.reveal table tbody tr:last-child td,.reveal table tbody tr:last-child th{border-bottom:none}.reveal sup{font-size:smaller;vertical-align:super}.reveal sub{font-size:smaller;vertical-align:sub}.reveal small{display:inline-block;font-size:.6em;line-height:1.2em}.reveal small,.reveal small *{vertical-align:top}.reveal img{margin:20px 0;margin:var(--r-block-margin) 0}.reveal a{color:#ffb213;color:var(--r-link-color);text-decoration:none;transition:color .15s ease}.reveal a:hover{border:none;color:#ffcb60;color:var(--r-link-color-hover);text-shadow:none}.reveal .roll span:after{background:#c68500;background:var(--r-link-color-dark);color:#fff}.reveal .r-frame{border:4px solid #000;border:4px solid var(--r-main-color);box-shadow:0 0 10px rgba(0,0,0,.15)}.reveal a .r-frame{transition:all .15s linear}.reveal a:hover .r-frame{border-color:#ffb213;border-color:var(--r-link-color);box-shadow:0 0 20px rgba(0,0,0,.55)}.reveal .controls,.reveal .progress{color:#ffb213;color:var(--r-link-color)}.reveal .progress{background:rgba(0,0,0,.2)}@media print{.backgrounds{background-color:#fff;background-color:var(--r-background-color)}}#overlay{inset:0;opacity:0;position:absolute;transition:opacity 1s;z-index:1}#overlay .opacity-10{opacity:.1}#overlay .opacity-20{opacity:.2}#overlay .opacity-30{opacity:.3}#overlay .opacity-40{opacity:.4}#overlay .opacity-50{opacity:.5}#overlay .opacity-60{opacity:.6}#overlay .opacity-70{opacity:.7}#overlay .opacity-80{opacity:.8}#overlay .opacity-90{opacity:.9}#overlay .opacity-100{opacity:1}#logo-color,#logo-part-white,#logo-white{left:-50%;opacity:0;position:absolute;top:1.5%;transition:opacity 1s,left 1s;z-index:2}#logo-color img,#logo-part-white img,#logo-white img{width:70%}#right-e{opacity:0;top:-100%;transition:opacity 1s}#left-e,#right-e{position:absolute;width:6%;z-index:3}#left-e{left:-100%;transition:left 1s,bottom 1s}#blue-pane{background-color:#009ddd;z-index:1}#blue-pane,#touch-pane{bottom:0;opacity:0;position:absolute;top:0;transition:opacity 1s}#touch-pane{align-items:center;background-color:#fff;display:flex;justify-content:center;left:0;right:66.6%;z-index:2}#touch-pane h3{color:#000;text-align:left}#empowering{align-items:center;bottom:0;display:flex;justify-content:center;left:6%;opacity:0;position:absolute;right:52%;top:0;transition:opacity 1s;z-index:2}#empowering h3{color:#fff;font-size:100%;text-align:left}#yellow-strip{border-radius:10vw 10vw 0 0;height:85%;left:-28%;transition:left 1s;width:18%}#yellow-half-strip,#yellow-strip{background-color:#ffb213;bottom:0;position:absolute;z-index:2}#yellow-half-strip{height:25%;left:-100%;opacity:0;transition:opacity 1s;width:17%}#yellow-flag{background-color:#ffb213;border-radius:0 7vh 7vh 0;bottom:5%;height:12%;left:-20%;margin:0;padding:1% 0 0;position:absolute;transition:left 1s,bottom 1s;width:10%;z-index:1}#yellow-flag img{height:90%;margin:0;padding:0;position:relative}#purple-half-circle-bottom{background-color:#380339;border-radius:20vw 20vw 0 0;bottom:0;height:15%;left:-50%;opacity:0;position:absolute;transition:opacity 1s;width:15%;z-index:2}#purple-half-circle-top{border-radius:0 0 20vw 20vw;opacity:1;top:-50%;transition:top 1s;width:30%}#purple-half-circle-logo,#purple-half-circle-top{background-color:#380339;height:30%;left:0;position:absolute;z-index:2}#purple-half-circle-logo{border-radius:28vw 28vw 0 0;bottom:0;opacity:0;transition:opacity 1s;width:36%}#purple-half-circle-logo img{bottom:-34%;left:22%;position:relative;width:55%}#purple-blob{display:flex;position:absolute;right:0;top:-100vh;transition:top 1s;z-index:2}#purple-blob div{background-color:#380339}#purple-blob .blob1{border-radius:0 0 10vw 10vw;height:25vh;width:10vw}#purple-blob .blob2{border-radius:0 0 10vw 10vw;height:50vh;width:10vw}#purple-blob .box{background:linear-gradient(45deg,transparent 10vw,#380339 0) 0 100%;background-image:radial-gradient(circle at 0 100%,rgba(204,0,0,0) 5vw,#380339 15px);height:calc(25vh + 5vw);position:absolute;right:10vw;top:0;width:5vw}#globe,#mail,#phone{left:-20%;position:absolute;top:-20%;transition:left 1s;width:2.2%;z-index:3}.reveal-viewport.title #purple-half-circle-logo{opacity:1}.reveal-viewport.title #purple-blob{top:0}.reveal-viewport.title #right-e{opacity:1;right:0;top:10%}.reveal-viewport.title #yellow-strip{left:0}.reveal-viewport.title #overlay{background-color:#009ddd;opacity:.8}.reveal-viewport.title #left-e{bottom:30%;left:0}.reveal-viewport.title h1,.reveal-viewport.title h2{color:#fff;margin:6% 6% 6% 15%}.reveal-viewport.standard #logo-color{left:3%;opacity:1}.reveal-viewport.standard #yellow-flag{left:0}.reveal-viewport.standard h1,.reveal-viewport.standard h2,.reveal-viewport.standard h3,.reveal-viewport.standard p,.reveal-viewport.standard ul{padding-left:10%;text-align:left}.reveal-viewport.about #logo-part-white{left:3%;opacity:1}.reveal-viewport.about #blue-pane{left:0;opacity:1;right:50%}.reveal-viewport.about #purple-half-circle-top{top:0}.reveal-viewport.about #purple-half-circle-bottom{bottom:0;left:18%;opacity:1}.reveal-viewport.about #yellow-half-strip{border-radius:20vw 0 0 0;left:33%;opacity:1}.reveal-viewport.about #empowering{opacity:1}.reveal-viewport.about h1,.reveal-viewport.about h2,.reveal-viewport.about p,.reveal-viewport.about ul{padding-left:55%;text-align:left}.reveal-viewport.keepintouch #logo-color{left:3%;opacity:1}.reveal-viewport.keepintouch #overlay{background-color:#009ddd;opacity:.8}.reveal-viewport.keepintouch #touch-pane{opacity:1}.reveal-viewport.keepintouch #purple-blob{top:0}.reveal-viewport.keepintouch #right-e{opacity:1;right:0;top:67%}.reveal-viewport.keepintouch #yellow-half-strip{border-radius:0 20vw 0 0;left:33%;opacity:1}.reveal-viewport.keepintouch #purple-half-circle-bottom{bottom:0;left:50%;opacity:1}.reveal-viewport.keepintouch #globe{left:46%;top:38.6%}.reveal-viewport.keepintouch #mail{left:46%;top:46.6%}.reveal-viewport.keepintouch #phone{left:46%;top:53.5%}.reveal-viewport.keepintouch h1,.reveal-viewport.keepintouch h2,.reveal-viewport.keepintouch p,.reveal-viewport.keepintouch ul{padding-left:50%;text-align:left}.reveal-viewport section.has-dark-background h1,.reveal-viewport section.has-dark-background h2,.reveal-viewport section.has-dark-background h3,.reveal-viewport.keepintouch a,.reveal-viewport.keepintouch p{color:#fff}.reveal-viewport .slides{z-index:10}#footer a,p a{text-decoration:underline} - + - + - - - -
- \ No newline at end of file + + + +
+ \ No newline at end of file diff --git a/_nuxt/0li69SiJ.js b/_nuxt/0li69SiJ.js new file mode 100644 index 00000000..fbfa0c2e --- /dev/null +++ b/_nuxt/0li69SiJ.js @@ -0,0 +1 @@ +import{_ as m}from"./CXw4cyZj.js";import"./LCLGvLsE.js";export{m as default}; diff --git a/_nuxt/C5NALQrT.js b/_nuxt/2a0NTiJ-.js similarity index 89% rename from _nuxt/C5NALQrT.js rename to _nuxt/2a0NTiJ-.js index 2f6bba1a..abff26ae 100644 --- a/_nuxt/C5NALQrT.js +++ b/_nuxt/2a0NTiJ-.js @@ -1 +1 @@ -import{g as r,k as n,o as c,c as h,z as o,ag as l,Q as u,A as d,ah as g}from"./DCQ65ZuQ.js";const f=["src","alt","width","height"],p=r({__name:"ProseImg",props:{src:{type:String,default:""},alt:{type:String,default:""},width:{type:[String,Number],default:void 0},height:{type:[String,Number],default:void 0}},setup(e){const t=e,i=n(()=>{var a;if((a=t.src)!=null&&a.startsWith("/")&&!t.src.startsWith("//")){const s=l(u(d().app.baseURL));if(s!=="/"&&!t.src.startsWith(s))return g(s,t.src)}return t.src});return(a,s)=>(c(),h("img",{src:o(i),alt:e.alt,width:e.width,height:e.height},null,8,f))}});export{p as default}; +import{g as r,k as n,o as c,c as h,z as o,ag as l,Q as u,A as d,ah as g}from"./LCLGvLsE.js";const f=["src","alt","width","height"],p=r({__name:"ProseImg",props:{src:{type:String,default:""},alt:{type:String,default:""},width:{type:[String,Number],default:void 0},height:{type:[String,Number],default:void 0}},setup(e){const t=e,i=n(()=>{var a;if((a=t.src)!=null&&a.startsWith("/")&&!t.src.startsWith("//")){const s=l(u(d().app.baseURL));if(s!=="/"&&!t.src.startsWith(s))return g(s,t.src)}return t.src});return(a,s)=>(c(),h("img",{src:o(i),alt:e.alt,width:e.width,height:e.height},null,8,f))}});export{p as default}; diff --git a/_nuxt/DxIEvfx4.js b/_nuxt/B5xsfvS6.js similarity index 85% rename from _nuxt/DxIEvfx4.js rename to _nuxt/B5xsfvS6.js index 67da0e0d..1519f255 100644 --- a/_nuxt/DxIEvfx4.js +++ b/_nuxt/B5xsfvS6.js @@ -1 +1 @@ -import{g as i,A as c,k as p,o as s,c as n,z as u,ad as t}from"./DCQ65ZuQ.js";const f=["id"],l=["href"],k=i({__name:"ProseH4",props:{id:{}},setup(a){const r=a,{headings:o}=c().public.mdc,d=p(()=>{var e;return r.id&&((e=o==null?void 0:o.anchorLinks)==null?void 0:e.h4)});return(e,m)=>(s(),n("h4",{id:e.id},[e.id&&u(d)?(s(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; +import{g as i,A as c,k as p,o as s,c as n,z as u,ad as t}from"./LCLGvLsE.js";const f=["id"],l=["href"],k=i({__name:"ProseH4",props:{id:{}},setup(a){const r=a,{headings:o}=c().public.mdc,d=p(()=>{var e;return r.id&&((e=o==null?void 0:o.anchorLinks)==null?void 0:e.h4)});return(e,m)=>(s(),n("h4",{id:e.id},[e.id&&u(d)?(s(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; diff --git a/_nuxt/BzOjq_Bs.js b/_nuxt/B7snaaDu.js similarity index 64% rename from _nuxt/BzOjq_Bs.js rename to _nuxt/B7snaaDu.js index 79f2a054..3e585fbd 100644 --- a/_nuxt/BzOjq_Bs.js +++ b/_nuxt/B7snaaDu.js @@ -1 +1 @@ -import{_ as o,o as r,c as s,ad as t}from"./DCQ65ZuQ.js";const c={};function n(e,a){return r(),s("p",null,[t(e.$slots,"default")])}const _=o(c,[["render",n]]);export{_ as default}; +import{_ as o,o as r,c as s,ad as t}from"./LCLGvLsE.js";const c={};function n(e,a){return r(),s("p",null,[t(e.$slots,"default")])}const _=o(c,[["render",n]]);export{_ as default}; diff --git a/_nuxt/C4KNTzvD.js b/_nuxt/BLx8FI5_.js similarity index 65% rename from _nuxt/C4KNTzvD.js rename to _nuxt/BLx8FI5_.js index 6ad5ea64..000ef13f 100644 --- a/_nuxt/C4KNTzvD.js +++ b/_nuxt/BLx8FI5_.js @@ -1 +1 @@ -import{_ as o,o as r,c as t,ad as s}from"./DCQ65ZuQ.js";const c={};function n(e,a){return r(),t("tbody",null,[s(e.$slots,"default")])}const d=o(c,[["render",n]]);export{d as default}; +import{_ as o,o as r,c as t,ad as s}from"./LCLGvLsE.js";const c={};function n(e,a){return r(),t("tbody",null,[s(e.$slots,"default")])}const d=o(c,[["render",n]]);export{d as default}; diff --git a/_nuxt/DiBn9H-z.js b/_nuxt/BTNXVUoN.js similarity index 64% rename from _nuxt/DiBn9H-z.js rename to _nuxt/BTNXVUoN.js index 2e4154ee..64cd17ff 100644 --- a/_nuxt/DiBn9H-z.js +++ b/_nuxt/BTNXVUoN.js @@ -1 +1 @@ -import{_ as o,o as r,c as s,ad as t}from"./DCQ65ZuQ.js";const c={};function n(e,a){return r(),s("ol",null,[t(e.$slots,"default")])}const _=o(c,[["render",n]]);export{_ as default}; +import{_ as o,o as r,c as s,ad as t}from"./LCLGvLsE.js";const c={};function n(e,a){return r(),s("ol",null,[t(e.$slots,"default")])}const _=o(c,[["render",n]]);export{_ as default}; diff --git a/_nuxt/BZN8ALec.js b/_nuxt/BZN8ALec.js deleted file mode 100644 index bbfc9677..00000000 --- a/_nuxt/BZN8ALec.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as m}from"./Bd7xMkGn.js";import"./DCQ65ZuQ.js";export{m as default}; diff --git a/_nuxt/CPdsAZhz.js b/_nuxt/BZrcnnPV.js similarity index 65% rename from _nuxt/CPdsAZhz.js rename to _nuxt/BZrcnnPV.js index 06e169c5..76190f18 100644 --- a/_nuxt/CPdsAZhz.js +++ b/_nuxt/BZrcnnPV.js @@ -1 +1 @@ -import{_ as o,o as t,c,ad as r}from"./DCQ65ZuQ.js";const s={};function n(e,a){return t(),c("blockquote",null,[r(e.$slots,"default")])}const _=o(s,[["render",n]]);export{_ as default}; +import{_ as o,o as t,c,ad as r}from"./LCLGvLsE.js";const s={};function n(e,a){return t(),c("blockquote",null,[r(e.$slots,"default")])}const _=o(s,[["render",n]]);export{_ as default}; diff --git a/_nuxt/8lzp0-a0.js b/_nuxt/Bk2SitLQ.js similarity index 53% rename from _nuxt/8lzp0-a0.js rename to _nuxt/Bk2SitLQ.js index d51bc858..ce4530f1 100644 --- a/_nuxt/8lzp0-a0.js +++ b/_nuxt/Bk2SitLQ.js @@ -1 +1 @@ -import{_ as e,o as r,c}from"./DCQ65ZuQ.js";const o={};function t(n,s){return r(),c("hr")}const a=e(o,[["render",t]]);export{a as default}; +import{_ as e,o as r,c}from"./LCLGvLsE.js";const o={};function t(n,s){return r(),c("hr")}const a=e(o,[["render",t]]);export{a as default}; diff --git a/_nuxt/CpwYvKHZ.js b/_nuxt/BnPLI2mJ.js similarity index 65% rename from _nuxt/CpwYvKHZ.js rename to _nuxt/BnPLI2mJ.js index 7885e70f..b4a83a8f 100644 --- a/_nuxt/CpwYvKHZ.js +++ b/_nuxt/BnPLI2mJ.js @@ -1 +1 @@ -import{_ as o,o as n,c as r,ad as c}from"./DCQ65ZuQ.js";const s={};function t(e,a){return n(),r("code",null,[c(e.$slots,"default")])}const d=o(s,[["render",t]]);export{d as default}; +import{_ as o,o as n,c as r,ad as c}from"./LCLGvLsE.js";const s={};function t(e,a){return n(),r("code",null,[c(e.$slots,"default")])}const d=o(s,[["render",t]]);export{d as default}; diff --git a/_nuxt/KmdXbZ5S.js b/_nuxt/BpByekOG.js similarity index 58% rename from _nuxt/KmdXbZ5S.js rename to _nuxt/BpByekOG.js index e639cb07..32cf2088 100644 --- a/_nuxt/KmdXbZ5S.js +++ b/_nuxt/BpByekOG.js @@ -1 +1 @@ -import r from"./DOYruCef.js";import{g as o,O as u,k as f,a0 as c}from"./DCQ65ZuQ.js";const i=o({name:"Markdown",extends:r,setup(t){const{parent:e}=c(),{between:n,default:a}=u(),s=f(()=>typeof t.unwrap=="string"?t.unwrap.split(" "):["*"]);return{fallbackSlot:a,tags:s,between:n,parent:e}}});export{i as default}; +import r from"./DVOw9KrD.js";import{g as o,O as u,k as f,a0 as c}from"./LCLGvLsE.js";const i=o({name:"Markdown",extends:r,setup(t){const{parent:e}=c(),{between:n,default:a}=u(),s=f(()=>typeof t.unwrap=="string"?t.unwrap.split(" "):["*"]);return{fallbackSlot:a,tags:s,between:n,parent:e}}});export{i as default}; diff --git a/_nuxt/rR8esMS9.js b/_nuxt/BxOF1W9g.js similarity index 64% rename from _nuxt/rR8esMS9.js rename to _nuxt/BxOF1W9g.js index 491a32cf..fa6df73c 100644 --- a/_nuxt/rR8esMS9.js +++ b/_nuxt/BxOF1W9g.js @@ -1 +1 @@ -import{_ as o,o as r,c as s,ad as t}from"./DCQ65ZuQ.js";const c={};function n(e,a){return r(),s("ul",null,[t(e.$slots,"default")])}const _=o(c,[["render",n]]);export{_ as default}; +import{_ as o,o as r,c as s,ad as t}from"./LCLGvLsE.js";const c={};function n(e,a){return r(),s("ul",null,[t(e.$slots,"default")])}const _=o(c,[["render",n]]);export{_ as default}; diff --git a/_nuxt/D-99yswp.js b/_nuxt/C49RwB7F.js similarity index 77% rename from _nuxt/D-99yswp.js rename to _nuxt/C49RwB7F.js index 42d85b24..7285577b 100644 --- a/_nuxt/D-99yswp.js +++ b/_nuxt/C49RwB7F.js @@ -1 +1 @@ -import{g as n,s as e}from"./DCQ65ZuQ.js";const r=n({name:"DocumentDrivenEmpty",props:{value:{type:Object,required:!0}},render({value:t}){return e("div",void 0,[e("p","Document is empty"),e("p",`Add content to it by opening ${t._source}/${t._file} file.`)])}});export{r as default}; +import{g as n,s as e}from"./LCLGvLsE.js";const r=n({name:"DocumentDrivenEmpty",props:{value:{type:Object,required:!0}},render({value:t}){return e("div",void 0,[e("p","Document is empty"),e("p",`Add content to it by opening ${t._source}/${t._file} file.`)])}});export{r as default}; diff --git a/_nuxt/B_gon5vj.js b/_nuxt/CBT8na2g.js similarity index 99% rename from _nuxt/B_gon5vj.js rename to _nuxt/CBT8na2g.js index 30e603cb..a5d15754 100644 --- a/_nuxt/B_gon5vj.js +++ b/_nuxt/CBT8na2g.js @@ -1,4 +1,4 @@ -var Jt=Object.defineProperty;var Vt=(b,n,e)=>n in b?Jt(b,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):b[n]=e;var wt=(b,n,e)=>(Vt(b,typeof n!="symbol"?n+"":n,e),e);import{g as Ot,M as Ft,N as Wt,o as ft,c as yt,a as _t,h as Kt,H as Xt,C as Yt,w as Gt,b as Rt,A as te,I as ee}from"./DCQ65ZuQ.js";import{g as ne,c as se}from"./Cpj98o6Y.js";import re from"./fio-yYFF.js";import ie from"./D18jxc4x.js";import ae from"./D2VvGIaI.js";import"./COVmoRWc.js";import"./sFyta7Xq.js";import"./BtUAytV1.js";function le(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}let it={async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1};const Dt=/[&<>"']/,oe=new RegExp(Dt.source,"g"),Zt=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,ce=new RegExp(Zt.source,"g"),pe={"&":"&","<":"<",">":">",'"':""","'":"'"},It=b=>pe[b];function J(b,n){if(n){if(Dt.test(b))return b.replace(oe,It)}else if(Zt.test(b))return b.replace(ce,It);return b}const he=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function Ut(b){return b.replace(he,(n,e)=>(e=e.toLowerCase())==="colon"?":":e.charAt(0)==="#"?e.charAt(1)==="x"?String.fromCharCode(parseInt(e.substring(2),16)):String.fromCharCode(+e.substring(1)):"")}const ue=/(^|[^\[])\^/g;function H(b,n){b=typeof b=="string"?b:b.source,n=n||"";const e={replace:(t,a)=>(a=(a=a.source||a).replace(ue,"$1"),b=b.replace(t,a),e),getRegex:()=>new RegExp(b,n)};return e}const de=/[^\w:]/g,ge=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function Lt(b,n,e){if(b){let t;try{t=decodeURIComponent(Ut(e)).replace(de,"").toLowerCase()}catch{return null}if(t.indexOf("javascript:")===0||t.indexOf("vbscript:")===0||t.indexOf("data:")===0)return null}n&&!ge.test(e)&&(e=function(t,a){dt[" "+t]||(fe.test(t)?dt[" "+t]=t+"/":dt[" "+t]=mt(t,"/",!0)),t=dt[" "+t];const p=t.indexOf(":")===-1;return a.substring(0,2)==="//"?p?a:t.replace(me,"$1")+a:a.charAt(0)==="/"?p?a:t.replace(ke,"$1")+a:t+a}(n,e));try{e=encodeURI(e).replace(/%25/g,"%")}catch{return null}return e}const dt={},fe=/^[^:]+:\/*[^/]*$/,me=/^([^:]+:)[\s\S]*$/,ke=/^([^:]+:\/*[^/]*)[\s\S]*$/,xt={exec:function(){}};function Ct(b,n){const e=b.replace(/\|/g,(a,p,c)=>{let h=!1,x=p;for(;--x>=0&&c[x]==="\\";)h=!h;return h?"|":" |"}).split(/ \|/);let t=0;if(e[0].trim()||e.shift(),e.length>0&&!e[e.length-1].trim()&&e.pop(),e.length>n)e.splice(n);else for(;e.length1;)1&n&&(e+=b),n>>=1,b+=b;return e+b}function Nt(b,n,e,t){const a=n.href,p=n.title?J(n.title):null,c=b[1].replace(/\\([\[\]])/g,"$1");if(b[0].charAt(0)!=="!"){t.state.inLink=!0;const h={type:"link",raw:e,href:a,title:p,text:c,tokens:t.inlineTokens(c)};return t.state.inLink=!1,h}return{type:"image",raw:e,href:a,title:p,text:J(c)}}class St{constructor(n){this.options=n||it}space(n){const e=this.rules.block.newline.exec(n);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(n){const e=this.rules.block.code.exec(n);if(e){const t=e[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?t:mt(t,` +var Jt=Object.defineProperty;var Vt=(b,n,e)=>n in b?Jt(b,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):b[n]=e;var wt=(b,n,e)=>(Vt(b,typeof n!="symbol"?n+"":n,e),e);import{g as Ot,M as Ft,N as Wt,o as ft,c as yt,a as _t,h as Kt,H as Xt,C as Yt,w as Gt,b as Rt,A as te,I as ee}from"./LCLGvLsE.js";import{g as ne,c as se}from"./Cpj98o6Y.js";import re from"./fio-yYFF.js";import ie from"./CVF0_ZUn.js";import ae from"./EpcERS4a.js";import"./Dgm6rCDZ.js";import"./D031i5cu.js";import"./tIvUuwzM.js";function le(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}let it={async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1};const Dt=/[&<>"']/,oe=new RegExp(Dt.source,"g"),Zt=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,ce=new RegExp(Zt.source,"g"),pe={"&":"&","<":"<",">":">",'"':""","'":"'"},It=b=>pe[b];function J(b,n){if(n){if(Dt.test(b))return b.replace(oe,It)}else if(Zt.test(b))return b.replace(ce,It);return b}const he=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function Ut(b){return b.replace(he,(n,e)=>(e=e.toLowerCase())==="colon"?":":e.charAt(0)==="#"?e.charAt(1)==="x"?String.fromCharCode(parseInt(e.substring(2),16)):String.fromCharCode(+e.substring(1)):"")}const ue=/(^|[^\[])\^/g;function H(b,n){b=typeof b=="string"?b:b.source,n=n||"";const e={replace:(t,a)=>(a=(a=a.source||a).replace(ue,"$1"),b=b.replace(t,a),e),getRegex:()=>new RegExp(b,n)};return e}const de=/[^\w:]/g,ge=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function Lt(b,n,e){if(b){let t;try{t=decodeURIComponent(Ut(e)).replace(de,"").toLowerCase()}catch{return null}if(t.indexOf("javascript:")===0||t.indexOf("vbscript:")===0||t.indexOf("data:")===0)return null}n&&!ge.test(e)&&(e=function(t,a){dt[" "+t]||(fe.test(t)?dt[" "+t]=t+"/":dt[" "+t]=mt(t,"/",!0)),t=dt[" "+t];const p=t.indexOf(":")===-1;return a.substring(0,2)==="//"?p?a:t.replace(me,"$1")+a:a.charAt(0)==="/"?p?a:t.replace(ke,"$1")+a:t+a}(n,e));try{e=encodeURI(e).replace(/%25/g,"%")}catch{return null}return e}const dt={},fe=/^[^:]+:\/*[^/]*$/,me=/^([^:]+:)[\s\S]*$/,ke=/^([^:]+:\/*[^/]*)[\s\S]*$/,xt={exec:function(){}};function Ct(b,n){const e=b.replace(/\|/g,(a,p,c)=>{let h=!1,x=p;for(;--x>=0&&c[x]==="\\";)h=!h;return h?"|":" |"}).split(/ \|/);let t=0;if(e[0].trim()||e.shift(),e.length>0&&!e[e.length-1].trim()&&e.pop(),e.length>n)e.splice(n);else for(;e.length1;)1&n&&(e+=b),n>>=1,b+=b;return e+b}function Nt(b,n,e,t){const a=n.href,p=n.title?J(n.title):null,c=b[1].replace(/\\([\[\]])/g,"$1");if(b[0].charAt(0)!=="!"){t.state.inLink=!0;const h={type:"link",raw:e,href:a,title:p,text:c,tokens:t.inlineTokens(c)};return t.state.inLink=!1,h}return{type:"image",raw:e,href:a,title:p,text:J(c)}}class St{constructor(n){this.options=n||it}space(n){const e=this.rules.block.newline.exec(n);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(n){const e=this.rules.block.code.exec(n);if(e){const t=e[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?t:mt(t,` `)}}}fences(n){const e=this.rules.block.fences.exec(n);if(e){const t=e[0],a=function(p,c){const h=p.match(/^(\s+)(?:```)/);if(h===null)return c;const x=h[1];return c.split(` `).map(S=>{const d=S.match(/^\s+/);if(d===null)return S;const[o]=d;return o.length>=x.length?S.slice(x.length):S}).join(` `)}(t,e[3]||"");return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline._escapes,"$1"):e[2],text:a}}}heading(n){const e=this.rules.block.heading.exec(n);if(e){let t=e[2].trim();if(/#$/.test(t)){const a=mt(t,"#");this.options.pedantic?t=a.trim():a&&!/ $/.test(a)||(t=a.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(n){const e=this.rules.block.hr.exec(n);if(e)return{type:"hr",raw:e[0]}}blockquote(n){const e=this.rules.block.blockquote.exec(n);if(e){const t=e[0].replace(/^ *>[ \t]?/gm,""),a=this.lexer.state.top;this.lexer.state.top=!0;const p=this.lexer.blockTokens(t);return this.lexer.state.top=a,{type:"blockquote",raw:e[0],tokens:p,text:t}}}list(n){let e=this.rules.block.list.exec(n);if(e){let t,a,p,c,h,x,S,d,o,m,z,E,C=e[1].trim();const O=C.length>1,$={type:"list",raw:"",ordered:O,start:O?+C.slice(0,-1):"",loose:!1,items:[]};C=O?`\\d{1,9}\\${C.slice(-1)}`:`\\${C}`,this.options.pedantic&&(C=O?C:"[*+-]");const Z=new RegExp(`^( {0,3}${C})((?:[ ][^\\n]*)?(?:\\n|$))`);for(;n&&(E=!1,e=Z.exec(n))&&!this.rules.block.hr.test(n);){if(t=e[0],n=n.substring(t.length),d=e[2].split(` diff --git a/_nuxt/jd2PvzEz.js b/_nuxt/CHswFzba.js similarity index 73% rename from _nuxt/jd2PvzEz.js rename to _nuxt/CHswFzba.js index 0cb695dd..c0e8e1d8 100644 --- a/_nuxt/jd2PvzEz.js +++ b/_nuxt/CHswFzba.js @@ -1 +1 @@ -import{g as s,k as n,o as r,c as a,d as e,J as c,a as t}from"./DCQ65ZuQ.js";const d={key:0},i=t("code",null,"script",-1),l=t("code",null,"ProseScript",-1),f=s({__name:"ProseScript",props:{src:{type:String,default:""}},setup(p){const o=n(()=>!1);return(_,m)=>o.value?(r(),a("div",d,[e(" Rendering the "),i,e(" element is dangerous and is disabled by default. Consider implementing your own "),l,e(" element to have control over script rendering. ")])):c("",!0)}});export{f as default}; +import{g as s,k as n,o as r,c as a,d as e,J as c,a as t}from"./LCLGvLsE.js";const d={key:0},i=t("code",null,"script",-1),l=t("code",null,"ProseScript",-1),f=s({__name:"ProseScript",props:{src:{type:String,default:""}},setup(p){const o=n(()=>!1);return(_,m)=>o.value?(r(),a("div",d,[e(" Rendering the "),i,e(" element is dangerous and is disabled by default. Consider implementing your own "),l,e(" element to have control over script rendering. ")])):c("",!0)}});export{f as default}; diff --git a/_nuxt/DEmzrrNC.js b/_nuxt/CMVTt0wN.js similarity index 97% rename from _nuxt/DEmzrrNC.js rename to _nuxt/CMVTt0wN.js index 63f95fa2..26f2f392 100644 --- a/_nuxt/DEmzrrNC.js +++ b/_nuxt/CMVTt0wN.js @@ -1 +1 @@ -import{_ as a,o as s,c as i,a as e,t as o,b as u,w as c,d,e as l,p,f as h}from"./DCQ65ZuQ.js";import{u as f}from"./BtUAytV1.js";const g=t=>(p("data-v-73a07988"),t=t(),h(),t),b={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},x=g(()=>e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),m={class:"max-w-520px text-center z-20"},y=["textContent"],_=["textContent"],k={class:"w-full flex items-center justify-center"},w={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return f({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[],style:[{children:'*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(z,S)=>{const r=l;return s(),i("div",b,[x,e("div",m,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:o(t.statusCode)},null,8,y),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:o(t.description)},null,8,_),e("div",k,[u(r,{to:"/",class:"gradient-border text-md sm:text-xl py-2 px-4 sm:py-3 sm:px-6 cursor-pointer"},{default:c(()=>[d(o(t.backHome),1)]),_:1})])])])}}},N=a(w,[["__scopeId","data-v-73a07988"]]);export{N as default}; +import{_ as a,o as s,c as i,a as e,t as o,b as u,w as c,d,e as l,p,f as h}from"./LCLGvLsE.js";import{u as f}from"./tIvUuwzM.js";const g=t=>(p("data-v-73a07988"),t=t(),h(),t),b={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},x=g(()=>e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),m={class:"max-w-520px text-center z-20"},y=["textContent"],_=["textContent"],k={class:"w-full flex items-center justify-center"},w={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return f({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[],style:[{children:'*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(z,S)=>{const r=l;return s(),i("div",b,[x,e("div",m,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:o(t.statusCode)},null,8,y),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:o(t.description)},null,8,_),e("div",k,[u(r,{to:"/",class:"gradient-border text-md sm:text-xl py-2 px-4 sm:py-3 sm:px-6 cursor-pointer"},{default:c(()=>[d(o(t.backHome),1)]),_:1})])])])}}},N=a(w,[["__scopeId","data-v-73a07988"]]);export{N as default}; diff --git a/_nuxt/BucyQ5gi.js b/_nuxt/CSRjDKbk.js similarity index 58% rename from _nuxt/BucyQ5gi.js rename to _nuxt/CSRjDKbk.js index ef01e8ad..ca6af153 100644 --- a/_nuxt/BucyQ5gi.js +++ b/_nuxt/CSRjDKbk.js @@ -1 +1 @@ -import{g as n,s as e}from"./DCQ65ZuQ.js";const t=n({name:"DocumentDrivenNotFound",render(){return e("div","Document not found")}});export{t as default}; +import{g as n,s as e}from"./LCLGvLsE.js";const t=n({name:"DocumentDrivenNotFound",render(){return e("div","Document not found")}});export{t as default}; diff --git a/_nuxt/D18jxc4x.js b/_nuxt/CVF0_ZUn.js similarity index 89% rename from _nuxt/D18jxc4x.js rename to _nuxt/CVF0_ZUn.js index 9c2cea5c..5c8ecc24 100644 --- a/_nuxt/D18jxc4x.js +++ b/_nuxt/CVF0_ZUn.js @@ -1 +1 @@ -import{_ as s}from"./COVmoRWc.js";import{g as l,U as o,O as d,s as f}from"./DCQ65ZuQ.js";const y=l({name:"ContentRenderer",props:{value:{type:Object,required:!1,default:()=>({})},excerpt:{type:Boolean,default:!1},tag:{type:String,default:"div"}},setup(t){o(()=>t.excerpt,n=>{var e,a,u;n&&!((e=t.value)!=null&&e.excerpt)&&(console.warn(`No excerpt found for document content/${(a=t==null?void 0:t.value)==null?void 0:a._path}.${(u=t==null?void 0:t.value)==null?void 0:u._extension}!`),console.warn("Make sure to use in your content if you want to use excerpt feature."))},{immediate:!0})},render(t){var i,c;const n=d(),{value:e,excerpt:a,tag:u}=t,r=a?e==null?void 0:e.excerpt:e==null?void 0:e.body;return!((i=r==null?void 0:r.children)!=null&&i.length)&&(n!=null&&n.empty)?n.empty({value:e,excerpt:a,tag:u,...this.$attrs}):n!=null&&n.default?n.default({value:e,excerpt:a,tag:u,...this.$attrs}):(r==null?void 0:r.type)==="root"&&((c=r==null?void 0:r.children)!=null&&c.length)?f(s,{value:e,excerpt:a,tag:u,...this.$attrs}):f("pre",null,JSON.stringify({message:"You should use slots with ",value:e,excerpt:a,tag:u},null,2))}});export{y as default}; +import{_ as s}from"./Dgm6rCDZ.js";import{g as l,U as o,O as d,s as f}from"./LCLGvLsE.js";const y=l({name:"ContentRenderer",props:{value:{type:Object,required:!1,default:()=>({})},excerpt:{type:Boolean,default:!1},tag:{type:String,default:"div"}},setup(t){o(()=>t.excerpt,n=>{var e,a,u;n&&!((e=t.value)!=null&&e.excerpt)&&(console.warn(`No excerpt found for document content/${(a=t==null?void 0:t.value)==null?void 0:a._path}.${(u=t==null?void 0:t.value)==null?void 0:u._extension}!`),console.warn("Make sure to use in your content if you want to use excerpt feature."))},{immediate:!0})},render(t){var i,c;const n=d(),{value:e,excerpt:a,tag:u}=t,r=a?e==null?void 0:e.excerpt:e==null?void 0:e.body;return!((i=r==null?void 0:r.children)!=null&&i.length)&&(n!=null&&n.empty)?n.empty({value:e,excerpt:a,tag:u,...this.$attrs}):n!=null&&n.default?n.default({value:e,excerpt:a,tag:u,...this.$attrs}):(r==null?void 0:r.type)==="root"&&((c=r==null?void 0:r.children)!=null&&c.length)?f(s,{value:e,excerpt:a,tag:u,...this.$attrs}):f("pre",null,JSON.stringify({message:"You should use slots with ",value:e,excerpt:a,tag:u},null,2))}});export{y as default}; diff --git a/_nuxt/BBa-Er6H.js b/_nuxt/CXVzcd7o.js similarity index 64% rename from _nuxt/BBa-Er6H.js rename to _nuxt/CXVzcd7o.js index b5d4de47..74bcce90 100644 --- a/_nuxt/BBa-Er6H.js +++ b/_nuxt/CXVzcd7o.js @@ -1 +1 @@ -import n from"./D18jxc4x.js";import s from"./D2VvGIaI.js";import{_ as r,C as a,w as _,o as i,a as e,b as l}from"./DCQ65ZuQ.js";import"./COVmoRWc.js";import"./sFyta7Xq.js";import"./BtUAytV1.js";const m={},f={class:"flex justify-center items-center"},p={class:"flex my-10 w-2/3 bg-eScienceWhite justify-center py-8 px-12"};function d(u,x){const t=n,o=s;return i(),a(o,null,{default:_(({doc:c})=>[e("div",f,[e("div",p,[l(t,{value:c,class:"font-body prose-lg max-w-4xl"},null,8,["value"])])])]),_:1})}const g=r(m,[["render",d]]);export{g as default}; +import n from"./CVF0_ZUn.js";import s from"./EpcERS4a.js";import{_ as r,C as a,w as _,o as i,a as e,b as l}from"./LCLGvLsE.js";import"./Dgm6rCDZ.js";import"./D031i5cu.js";import"./tIvUuwzM.js";const m={},f={class:"flex justify-center items-center"},p={class:"flex my-10 w-2/3 bg-eScienceWhite justify-center py-8 px-12"};function d(u,x){const t=n,o=s;return i(),a(o,null,{default:_(({doc:c})=>[e("div",f,[e("div",p,[l(t,{value:c,class:"font-body prose-lg max-w-4xl"},null,8,["value"])])])]),_:1})}const g=r(m,[["render",d]]);export{g as default}; diff --git a/_nuxt/Bd7xMkGn.js b/_nuxt/CXw4cyZj.js similarity index 79% rename from _nuxt/Bd7xMkGn.js rename to _nuxt/CXw4cyZj.js index b24b7948..837da97a 100644 --- a/_nuxt/Bd7xMkGn.js +++ b/_nuxt/CXw4cyZj.js @@ -1 +1 @@ -import{g as t,ad as a}from"./DCQ65ZuQ.js";const o=t({__name:"ProseCode",props:{code:{type:String,default:""},language:{type:String,default:null},filename:{type:String,default:null},highlights:{type:Array,default:()=>[]},meta:{type:String,default:null}},setup(n){return(e,r)=>a(e.$slots,"default")}});export{o as _}; +import{g as t,ad as a}from"./LCLGvLsE.js";const o=t({__name:"ProseCode",props:{code:{type:String,default:""},language:{type:String,default:null},filename:{type:String,default:null},highlights:{type:Array,default:()=>[]},meta:{type:String,default:null}},setup(n){return(e,r)=>a(e.$slots,"default")}});export{o as _}; diff --git a/_nuxt/CZMOUkek.js b/_nuxt/CZMOUkek.js deleted file mode 100644 index 18883fba..00000000 --- a/_nuxt/CZMOUkek.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as m}from"./COVmoRWc.js";import"./DCQ65ZuQ.js";export{m as default}; diff --git a/_nuxt/4DRa15T9.js b/_nuxt/Cfy6ZhgN.js similarity index 85% rename from _nuxt/4DRa15T9.js rename to _nuxt/Cfy6ZhgN.js index 558be2b7..b50c4c03 100644 --- a/_nuxt/4DRa15T9.js +++ b/_nuxt/Cfy6ZhgN.js @@ -1 +1 @@ -import{g as i,A as c,k as p,o as s,c as n,z as u,ad as t}from"./DCQ65ZuQ.js";const f=["id"],l=["href"],k=i({__name:"ProseH6",props:{id:{}},setup(a){const r=a,{headings:o}=c().public.mdc,d=p(()=>{var e;return r.id&&((e=o==null?void 0:o.anchorLinks)==null?void 0:e.h6)});return(e,m)=>(s(),n("h6",{id:e.id},[e.id&&u(d)?(s(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; +import{g as i,A as c,k as p,o as s,c as n,z as u,ad as t}from"./LCLGvLsE.js";const f=["id"],l=["href"],k=i({__name:"ProseH6",props:{id:{}},setup(a){const r=a,{headings:o}=c().public.mdc,d=p(()=>{var e;return r.id&&((e=o==null?void 0:o.anchorLinks)==null?void 0:e.h6)});return(e,m)=>(s(),n("h6",{id:e.id},[e.id&&u(d)?(s(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; diff --git a/_nuxt/bSgsziye.js b/_nuxt/CytIWpRH.js similarity index 99% rename from _nuxt/bSgsziye.js rename to _nuxt/CytIWpRH.js index c1dd1123..1b9ff561 100644 --- a/_nuxt/bSgsziye.js +++ b/_nuxt/CytIWpRH.js @@ -1 +1 @@ -import{ab as _,ai as W,aj as j,ak as E,al as B,am as T,an as $,ao as P,ap as D,ah as k,a8 as J,A as M,aq as H,ac as U,ar as b,u as G}from"./DCQ65ZuQ.js";import{c as q}from"./Cpj98o6Y.js";const Z="memory",F=()=>{const t=new Map;return{name:Z,options:{},hasItem(r){return t.has(r)},getItem(r){return t.get(r)??null},getItemRaw(r){return t.get(r)??null},setItem(r,n){t.set(r,n)},setItemRaw(r,n){t.set(r,n)},removeItem(r){t.delete(r)},getKeys(){return Array.from(t.keys())},clear(){t.clear()},dispose(){t.clear()}}};function V(t){return!t||typeof t.then!="function"?Promise.resolve(t):t}function p(t,...r){try{return V(t(...r))}catch(n){return Promise.reject(n)}}function Q(t){const r=typeof t;return t===null||r!=="object"&&r!=="function"}function X(t){const r=Object.getPrototypeOf(t);return!r||r.isPrototypeOf(Object)}function K(t){if(Q(t))return String(t);if(X(t)||Array.isArray(t))return JSON.stringify(t);if(typeof t.toJSON=="function")return K(t.toJSON());throw new Error("[unstorage] Cannot stringify value!")}function z(){if(typeof Buffer===void 0)throw new TypeError("[unstorage] Buffer is not supported!")}const R="base64:";function ee(t){if(typeof t=="string")return t;z();const r=Buffer.from(t).toString("base64");return R+r}function te(t){return typeof t!="string"||!t.startsWith(R)?t:(z(),Buffer.from(t.slice(R.length),"base64"))}const re=["hasItem","getItem","getItemRaw","setItem","setItemRaw","removeItem","getMeta","setMeta","removeMeta","getKeys","clear","mount","unmount"];function ne(t,r){if(r=A(r),!r)return t;const n={...t};for(const a of re)n[a]=(l="",...c)=>t[a](r+l,...c);return n.getKeys=(a="",...l)=>t.getKeys(r+a,...l).then(c=>c.map(o=>o.slice(r.length))),n}function d(t){return t?t.split("?")[0].replace(/[/\\]/g,":").replace(/:+/g,":").replace(/^:|:$/g,""):""}function ie(...t){return d(t.join(":"))}function A(t){return t=d(t),t?t+":":""}const ae="memory",se=()=>{const t=new Map;return{name:ae,options:{},hasItem(r){return t.has(r)},getItem(r){return t.get(r)??null},getItemRaw(r){return t.get(r)??null},setItem(r,n){t.set(r,n)},setItemRaw(r,n){t.set(r,n)},removeItem(r){t.delete(r)},getKeys(){return Array.from(t.keys())},clear(){t.clear()},dispose(){t.clear()}}};function oe(t={}){const r={mounts:{"":t.driver||se()},mountpoints:[""],watching:!1,watchListeners:[],unwatch:{}},n=e=>{for(const i of r.mountpoints)if(e.startsWith(i))return{base:i,relativeKey:e.slice(i.length),driver:r.mounts[i]};return{base:"",relativeKey:e,driver:r.mounts[""]}},a=(e,i)=>r.mountpoints.filter(s=>s.startsWith(e)||i&&e.startsWith(s)).map(s=>({relativeBase:e.length>s.length?e.slice(s.length):void 0,mountpoint:s,driver:r.mounts[s]})),l=(e,i)=>{if(r.watching){i=d(i);for(const s of r.watchListeners)s(e,i)}},c=async()=>{if(!r.watching){r.watching=!0;for(const e in r.mounts)r.unwatch[e]=await x(r.mounts[e],l,e)}},o=async()=>{if(r.watching){for(const e in r.unwatch)await r.unwatch[e]();r.unwatch={},r.watching=!1}},h=(e,i,s)=>{const u=new Map,f=m=>{let y=u.get(m.base);return y||(y={driver:m.driver,base:m.base,items:[]},u.set(m.base,y)),y};for(const m of e){const y=typeof m=="string",v=d(y?m:m.key),w=y?void 0:m.value,I=y||!m.options?i:{...i,...m.options},O=n(v);f(O).items.push({key:v,value:w,relativeKey:O.relativeKey,options:I})}return Promise.all([...u.values()].map(m=>s(m))).then(m=>m.flat())},g={hasItem(e,i={}){e=d(e);const{relativeKey:s,driver:u}=n(e);return p(u.hasItem,s,i)},getItem(e,i={}){e=d(e);const{relativeKey:s,driver:u}=n(e);return p(u.getItem,s,i).then(f=>_(f))},getItems(e,i){return h(e,i,s=>s.driver.getItems?p(s.driver.getItems,s.items.map(u=>({key:u.relativeKey,options:u.options})),i).then(u=>u.map(f=>({key:ie(s.base,f.key),value:_(f.value)}))):Promise.all(s.items.map(u=>p(s.driver.getItem,u.relativeKey,u.options).then(f=>({key:u.key,value:_(f)})))))},getItemRaw(e,i={}){e=d(e);const{relativeKey:s,driver:u}=n(e);return u.getItemRaw?p(u.getItemRaw,s,i):p(u.getItem,s,i).then(f=>te(f))},async setItem(e,i,s={}){if(i===void 0)return g.removeItem(e);e=d(e);const{relativeKey:u,driver:f}=n(e);f.setItem&&(await p(f.setItem,u,K(i),s),f.watch||l("update",e))},async setItems(e,i){await h(e,i,async s=>{if(s.driver.setItems)return p(s.driver.setItems,s.items.map(u=>({key:u.relativeKey,value:K(u.value),options:u.options})),i);s.driver.setItem&&await Promise.all(s.items.map(u=>p(s.driver.setItem,u.relativeKey,K(u.value),u.options)))})},async setItemRaw(e,i,s={}){if(i===void 0)return g.removeItem(e,s);e=d(e);const{relativeKey:u,driver:f}=n(e);if(f.setItemRaw)await p(f.setItemRaw,u,i,s);else if(f.setItem)await p(f.setItem,u,ee(i),s);else return;f.watch||l("update",e)},async removeItem(e,i={}){typeof i=="boolean"&&(i={removeMeta:i}),e=d(e);const{relativeKey:s,driver:u}=n(e);u.removeItem&&(await p(u.removeItem,s,i),(i.removeMeta||i.removeMata)&&await p(u.removeItem,s+"$",i),u.watch||l("remove",e))},async getMeta(e,i={}){typeof i=="boolean"&&(i={nativeOnly:i}),e=d(e);const{relativeKey:s,driver:u}=n(e),f=Object.create(null);if(u.getMeta&&Object.assign(f,await p(u.getMeta,s,i)),!i.nativeOnly){const m=await p(u.getItem,s+"$",i).then(y=>_(y));m&&typeof m=="object"&&(typeof m.atime=="string"&&(m.atime=new Date(m.atime)),typeof m.mtime=="string"&&(m.mtime=new Date(m.mtime)),Object.assign(f,m))}return f},setMeta(e,i,s={}){return this.setItem(e+"$",i,s)},removeMeta(e,i={}){return this.removeItem(e+"$",i)},async getKeys(e,i={}){e=A(e);const s=a(e,!0);let u=[];const f=[];for(const m of s){const v=(await p(m.driver.getKeys,m.relativeBase,i)).map(w=>m.mountpoint+d(w)).filter(w=>!u.some(I=>w.startsWith(I)));f.push(...v),u=[m.mountpoint,...u.filter(w=>!w.startsWith(m.mountpoint))]}return e?f.filter(m=>m.startsWith(e)&&!m.endsWith("$")):f.filter(m=>!m.endsWith("$"))},async clear(e,i={}){e=A(e),await Promise.all(a(e,!1).map(async s=>{if(s.driver.clear)return p(s.driver.clear,s.relativeBase,i);if(s.driver.removeItem){const u=await s.driver.getKeys(s.relativeBase||"",i);return Promise.all(u.map(f=>s.driver.removeItem(f,i)))}}))},async dispose(){await Promise.all(Object.values(r.mounts).map(e=>L(e)))},async watch(e){return await c(),r.watchListeners.push(e),async()=>{r.watchListeners=r.watchListeners.filter(i=>i!==e),r.watchListeners.length===0&&await o()}},async unwatch(){r.watchListeners=[],await o()},mount(e,i){if(e=A(e),e&&r.mounts[e])throw new Error(`already mounted at ${e}`);return e&&(r.mountpoints.push(e),r.mountpoints.sort((s,u)=>u.length-s.length)),r.mounts[e]=i,r.watching&&Promise.resolve(x(i,l,e)).then(s=>{r.unwatch[e]=s}).catch(console.error),g},async unmount(e,i=!0){e=A(e),!(!e||!r.mounts[e])&&(r.watching&&e in r.unwatch&&(r.unwatch[e](),delete r.unwatch[e]),i&&await L(r.mounts[e]),r.mountpoints=r.mountpoints.filter(s=>s!==e),delete r.mounts[e])},getMount(e=""){e=d(e)+":";const i=n(e);return{driver:i.driver,base:i.base}},getMounts(e="",i={}){return e=d(e),a(e,i.parents).map(u=>({driver:u.driver,base:u.mountpoint}))}};return g}function x(t,r,n){return t.watch?t.watch((a,l)=>r(a,n+l)):()=>{}}async function L(t){typeof t.dispose=="function"&&await p(t.dispose)}function ue(t={}){const r=ce(n,t.operators);function n(a,l){return typeof l!="object"||l instanceof RegExp?r.$eq(a,l):Object.keys(l||{}).every(c=>{const o=l[c];if(c.startsWith("$")&&r[c]){const h=r[c];return typeof h=="function"?h(a,o):!1}return n(W(a,c),o)})}return n}function ce(t,r={}){return{$match:(n,a)=>t(n,a),$eq:(n,a)=>a instanceof RegExp?a.test(n):n===a,$ne:(n,a)=>a instanceof RegExp?!a.test(n):n!==a,$not:(n,a)=>!t(n,a),$and:(n,a)=>(j(a,"$and requires an array as condition"),a.every(l=>t(n,l))),$or:(n,a)=>(j(a,"$or requires an array as condition"),a.some(l=>t(n,l))),$in:(n,a)=>E(a).some(l=>Array.isArray(n)?t(n,{$contains:l}):t(n,l)),$contains:(n,a)=>(n=Array.isArray(n)?n:String(n),E(a).every(l=>n.includes(l))),$icontains:(n,a)=>{if(typeof a!="string")throw new TypeError("$icontains requires a string, use $contains instead");return n=String(n).toLocaleLowerCase(),E(a).every(l=>n.includes(l.toLocaleLowerCase()))},$containsAny:(n,a)=>(j(a,"$containsAny requires an array as condition"),n=Array.isArray(n)?n:String(n),a.some(l=>n.includes(l))),$exists:(n,a)=>a?typeof n<"u":typeof n>"u",$type:(n,a)=>typeof n===String(a),$regex:(n,a)=>{if(!(a instanceof RegExp)){const l=String(a).match(/\/(.*)\/([dgimsuy]*)$/);a=l?new RegExp(l[1],l[2]||""):new RegExp(a)}return a.test(String(n||""))},$lt:(n,a)=>nn<=a,$gt:(n,a)=>n>a,$gte:(n,a)=>n>=a,...r||{}}}function le(t){const r=ue(),n=(c,{query:o,before:h,after:g})=>{const e=typeof o=="string"?{_path:o}:o,i=c.findIndex(u=>r(u,e));h=h??1,g=g??1;const s=new Array(h+g).fill(null,0);return i===-1?s:s.map((u,f)=>c[i-h+f+ +(f>=h)]||null)},a=[(c,o)=>{const h=c.result.filter(g=>E(o.where).every(e=>r(g,e)));return{...c,result:h,total:h.length}},(c,o)=>E(o.sort).forEach(h=>T(c.result,h)),function(o,h,g){var e;if(h.surround){let i=n(((e=o.result)==null?void 0:e.length)===1?g:o.result,h.surround);i=$(P(h.without))(i),i=$(D(h.only))(i),o.surround=i}return o}],l=[(c,o)=>{if(o.skip)return{...c,result:c.result.slice(o.skip),skip:o.skip}},(c,o)=>{if(o.limit)return{...c,result:c.result.slice(0,o.limit),limit:o.limit}},function(o,h,g){var e,i,s;if(h.dirConfig){const u=((e=o.result[0])==null?void 0:e._path)||((s=(i=h.where)==null?void 0:i.find(f=>f._path))==null?void 0:s._path);if(typeof u=="string"){const f=g.find(m=>m._path===k(u,"_dir"));f&&(o.dirConfig={_path:f._path,...P(["_"])(f)})}}return o},(c,o)=>({...c,result:$(P(o.without))(c.result)}),(c,o)=>({...c,result:$(D(o.only))(c.result)})];return async c=>{const o=await t(),h=c.params(),g={result:o,limit:0,skip:0,total:o.length},e=a.reduce((s,u)=>u(s,h,o)||s,g);if(h.count)return{result:e.result.length};const i=l.reduce((s,u)=>u(s,h,o)||s,e);return h.first?{...B(["skip","limit","total"])(i),result:i.result[0]}:i}}function N(t){const r=le(t);return async n=>{var c;n.params().first&&n.withDirConfig();const a=n.params(),l=await r(n);return a.surround?l==null?void 0:l.surround:(l!=null&&l.dirConfig&&(l.result={_path:(c=l.dirConfig)==null?void 0:c._path,...l.result,_dir:l.dirConfig}),l==null?void 0:l.result)}}var fe={exports:{}};(function(t,r){(function(n,a,l){t.exports=l(),t.exports.default=l()})("slugify",q,function(){var n=JSON.parse(`{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","¢":"cent","£":"pound","¤":"currency","¥":"yen","©":"(c)","ª":"a","®":"(r)","º":"o","À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","Þ":"TH","ß":"ss","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","þ":"th","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"DJ","đ":"dj","Ē":"E","ē":"e","Ė":"E","ė":"e","Ę":"e","ę":"e","Ě":"E","ě":"e","Ğ":"G","ğ":"g","Ģ":"G","ģ":"g","Ĩ":"I","ĩ":"i","Ī":"i","ī":"i","Į":"I","į":"i","İ":"I","ı":"i","Ķ":"k","ķ":"k","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ł":"L","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","Ō":"O","ō":"o","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ũ":"U","ũ":"u","Ū":"u","ū":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","Ə":"E","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Lj":"LJ","lj":"lj","Nj":"NJ","nj":"nj","Ș":"S","ș":"s","Ț":"T","ț":"t","ə":"e","˚":"o","Ά":"A","Έ":"E","Ή":"H","Ί":"I","Ό":"O","Ύ":"Y","Ώ":"W","ΐ":"i","Α":"A","Β":"B","Γ":"G","Δ":"D","Ε":"E","Ζ":"Z","Η":"H","Θ":"8","Ι":"I","Κ":"K","Λ":"L","Μ":"M","Ν":"N","Ξ":"3","Ο":"O","Π":"P","Ρ":"R","Σ":"S","Τ":"T","Υ":"Y","Φ":"F","Χ":"X","Ψ":"PS","Ω":"W","Ϊ":"I","Ϋ":"Y","ά":"a","έ":"e","ή":"h","ί":"i","ΰ":"y","α":"a","β":"b","γ":"g","δ":"d","ε":"e","ζ":"z","η":"h","θ":"8","ι":"i","κ":"k","λ":"l","μ":"m","ν":"n","ξ":"3","ο":"o","π":"p","ρ":"r","ς":"s","σ":"s","τ":"t","υ":"y","φ":"f","χ":"x","ψ":"ps","ω":"w","ϊ":"i","ϋ":"y","ό":"o","ύ":"y","ώ":"w","Ё":"Yo","Ђ":"DJ","Є":"Ye","І":"I","Ї":"Yi","Ј":"J","Љ":"LJ","Њ":"NJ","Ћ":"C","Џ":"DZ","А":"A","Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ж":"Zh","З":"Z","И":"I","Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R","С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh","Щ":"Sh","Ъ":"U","Ы":"Y","Ь":"","Э":"E","Ю":"Yu","Я":"Ya","а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ж":"zh","з":"z","и":"i","й":"j","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p","р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch","ш":"sh","щ":"sh","ъ":"u","ы":"y","ь":"","э":"e","ю":"yu","я":"ya","ё":"yo","ђ":"dj","є":"ye","і":"i","ї":"yi","ј":"j","љ":"lj","њ":"nj","ћ":"c","ѝ":"u","џ":"dz","Ґ":"G","ґ":"g","Ғ":"GH","ғ":"gh","Қ":"KH","қ":"kh","Ң":"NG","ң":"ng","Ү":"UE","ү":"ue","Ұ":"U","ұ":"u","Һ":"H","һ":"h","Ә":"AE","ә":"ae","Ө":"OE","ө":"oe","Ա":"A","Բ":"B","Գ":"G","Դ":"D","Ե":"E","Զ":"Z","Է":"E'","Ը":"Y'","Թ":"T'","Ժ":"JH","Ի":"I","Լ":"L","Խ":"X","Ծ":"C'","Կ":"K","Հ":"H","Ձ":"D'","Ղ":"GH","Ճ":"TW","Մ":"M","Յ":"Y","Ն":"N","Շ":"SH","Չ":"CH","Պ":"P","Ջ":"J","Ռ":"R'","Ս":"S","Վ":"V","Տ":"T","Ր":"R","Ց":"C","Փ":"P'","Ք":"Q'","Օ":"O''","Ֆ":"F","և":"EV","ء":"a","آ":"aa","أ":"a","ؤ":"u","إ":"i","ئ":"e","ا":"a","ب":"b","ة":"h","ت":"t","ث":"th","ج":"j","ح":"h","خ":"kh","د":"d","ذ":"th","ر":"r","ز":"z","س":"s","ش":"sh","ص":"s","ض":"dh","ط":"t","ظ":"z","ع":"a","غ":"gh","ف":"f","ق":"q","ك":"k","ل":"l","م":"m","ن":"n","ه":"h","و":"w","ى":"a","ي":"y","ً":"an","ٌ":"on","ٍ":"en","َ":"a","ُ":"u","ِ":"e","ْ":"","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","پ":"p","چ":"ch","ژ":"zh","ک":"k","گ":"g","ی":"y","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","฿":"baht","ა":"a","ბ":"b","გ":"g","დ":"d","ე":"e","ვ":"v","ზ":"z","თ":"t","ი":"i","კ":"k","ლ":"l","მ":"m","ნ":"n","ო":"o","პ":"p","ჟ":"zh","რ":"r","ს":"s","ტ":"t","უ":"u","ფ":"f","ქ":"k","ღ":"gh","ყ":"q","შ":"sh","ჩ":"ch","ც":"ts","ძ":"dz","წ":"ts","ჭ":"ch","ხ":"kh","ჯ":"j","ჰ":"h","Ṣ":"S","ṣ":"s","Ẁ":"W","ẁ":"w","Ẃ":"W","ẃ":"w","Ẅ":"W","ẅ":"w","ẞ":"SS","Ạ":"A","ạ":"a","Ả":"A","ả":"a","Ấ":"A","ấ":"a","Ầ":"A","ầ":"a","Ẩ":"A","ẩ":"a","Ẫ":"A","ẫ":"a","Ậ":"A","ậ":"a","Ắ":"A","ắ":"a","Ằ":"A","ằ":"a","Ẳ":"A","ẳ":"a","Ẵ":"A","ẵ":"a","Ặ":"A","ặ":"a","Ẹ":"E","ẹ":"e","Ẻ":"E","ẻ":"e","Ẽ":"E","ẽ":"e","Ế":"E","ế":"e","Ề":"E","ề":"e","Ể":"E","ể":"e","Ễ":"E","ễ":"e","Ệ":"E","ệ":"e","Ỉ":"I","ỉ":"i","Ị":"I","ị":"i","Ọ":"O","ọ":"o","Ỏ":"O","ỏ":"o","Ố":"O","ố":"o","Ồ":"O","ồ":"o","Ổ":"O","ổ":"o","Ỗ":"O","ỗ":"o","Ộ":"O","ộ":"o","Ớ":"O","ớ":"o","Ờ":"O","ờ":"o","Ở":"O","ở":"o","Ỡ":"O","ỡ":"o","Ợ":"O","ợ":"o","Ụ":"U","ụ":"u","Ủ":"U","ủ":"u","Ứ":"U","ứ":"u","Ừ":"U","ừ":"u","Ử":"U","ử":"u","Ữ":"U","ữ":"u","Ự":"U","ự":"u","Ỳ":"Y","ỳ":"y","Ỵ":"Y","ỵ":"y","Ỷ":"Y","ỷ":"y","Ỹ":"Y","ỹ":"y","–":"-","‘":"'","’":"'","“":"\\"","”":"\\"","„":"\\"","†":"+","•":"*","…":"...","₠":"ecu","₢":"cruzeiro","₣":"french franc","₤":"lira","₥":"mill","₦":"naira","₧":"peseta","₨":"rupee","₩":"won","₪":"new shequel","₫":"dong","€":"euro","₭":"kip","₮":"tugrik","₯":"drachma","₰":"penny","₱":"peso","₲":"guarani","₳":"austral","₴":"hryvnia","₵":"cedi","₸":"kazakhstani tenge","₹":"indian rupee","₺":"turkish lira","₽":"russian ruble","₿":"bitcoin","℠":"sm","™":"tm","∂":"d","∆":"delta","∑":"sum","∞":"infinity","♥":"love","元":"yuan","円":"yen","﷼":"rial","ﻵ":"laa","ﻷ":"laa","ﻹ":"lai","ﻻ":"la"}`),a=JSON.parse('{"bg":{"Й":"Y","Ц":"Ts","Щ":"Sht","Ъ":"A","Ь":"Y","й":"y","ц":"ts","щ":"sht","ъ":"a","ь":"y"},"de":{"Ä":"AE","ä":"ae","Ö":"OE","ö":"oe","Ü":"UE","ü":"ue","ß":"ss","%":"prozent","&":"und","|":"oder","∑":"summe","∞":"unendlich","♥":"liebe"},"es":{"%":"por ciento","&":"y","<":"menor que",">":"mayor que","|":"o","¢":"centavos","£":"libras","¤":"moneda","₣":"francos","∑":"suma","∞":"infinito","♥":"amor"},"fr":{"%":"pourcent","&":"et","<":"plus petit",">":"plus grand","|":"ou","¢":"centime","£":"livre","¤":"devise","₣":"franc","∑":"somme","∞":"infini","♥":"amour"},"pt":{"%":"porcento","&":"e","<":"menor",">":"maior","|":"ou","¢":"centavo","∑":"soma","£":"libra","∞":"infinito","♥":"amor"},"uk":{"И":"Y","и":"y","Й":"Y","й":"y","Ц":"Ts","ц":"ts","Х":"Kh","х":"kh","Щ":"Shch","щ":"shch","Г":"H","г":"h"},"vi":{"Đ":"D","đ":"d"},"da":{"Ø":"OE","ø":"oe","Å":"AA","å":"aa","%":"procent","&":"og","|":"eller","$":"dollar","<":"mindre end",">":"større end"},"nb":{"&":"og","Å":"AA","Æ":"AE","Ø":"OE","å":"aa","æ":"ae","ø":"oe"},"it":{"&":"e"},"nl":{"&":"en"},"sv":{"&":"och","Å":"AA","Ä":"AE","Ö":"OE","å":"aa","ä":"ae","ö":"oe"}}');function l(c,o){if(typeof c!="string")throw new Error("slugify: string argument expected");o=typeof o=="string"?{replacement:o}:o||{};var h=a[o.locale]||{},g=o.replacement===void 0?"-":o.replacement,e=o.trim===void 0?!0:o.trim,i=c.normalize().split("").reduce(function(s,u){var f=h[u];return f===void 0&&(f=n[u]),f===void 0&&(f=u),f===g&&(f=" "),s+f.replace(o.remove||/[^\w\s$*_+~.()'"!\-:@]+/g,"")},"");return o.strict&&(i=i.replace(/[^A-Za-z0-9\s]/g,"")),e&&(i=i.trim()),i=i.replace(/\s+/g,g),o.lower&&(i=i.toLowerCase()),i}return l.extend=function(c){Object.assign(n,c)},l})})(fe);const me=t=>t.split(/[\s-]/g).map(J).join(" ");function he(t,r){const{navigation:n}=M().public.content;if(n===!1)return[];const a=c=>({...pe(["title",...n.fields])(c),...de(c==null?void 0:c.navigation)?c.navigation:{}}),l=t.sort((c,o)=>c._path.localeCompare(o._path)).reduce((c,o)=>{const h=o._path.substring(1).split("/"),g=o._id.split(":").slice(1),e=!!g[g.length-1].match(/([1-9][0-9]*\.)?index.md/g),i=f=>({title:f.title,_path:f._path,_file:f._file,children:[],...a(f),...f._draft?{_draft:!0}:{}}),s=i(o);if(e){const f=r[s._path];if(typeof(f==null?void 0:f.navigation)<"u"&&!(f!=null&&f.navigation))return c;if(o._path!=="/"){const m=i(o);s.children.push(m)}Object.assign(s,a(f))}return h.length===1?(c.push(s),c):(h.slice(0,-1).reduce((f,m,y)=>{const v="/"+h.slice(0,y+1).join("/"),w=r[v];if(typeof(w==null?void 0:w.navigation)<"u"&&!w.navigation)return[];let I=f.find(O=>O._path===v);return I||(I={title:me(m),_path:v,_file:o._file,children:[],...a(w)},f.push(I)),I.children},c).push(s),c)},[]);return Y(l)}const ge=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});function Y(t){var n;t.forEach(a=>{a._file=a._file.split(".").slice(0,-1).join(".")});const r=t.sort((a,l)=>ge.compare(a._file,l._file));for(const a of r)(n=a.children)!=null&&n.length?Y(a.children):delete a.children,delete a._file;return t}function pe(t){return r=>(r=r||{},t&&t.length?t.filter(n=>typeof r[n]<"u").reduce((n,a)=>Object.assign(n,{[a]:r[a]}),{}):r)}function de(t){return Object.prototype.toString.call(t)==="[object Object]"}const ye=t=>b(t,M().public.content.api.baseURL),we=ne(oe({driver:F()}),"@content");function ve(t){async function r(){const n=new Set(await t.getKeys("cache:")),a=U().getPreviewToken();if(a){const c=await t.getItem(`${a}$`).then(g=>g||{});if(Array.isArray(c.ignoreSources)){const g=c.ignoreSources.map(e=>`cache:${e.trim()}:`);for(const e of n)g.some(i=>e.startsWith(i))&&n.delete(e)}const o=await t.getKeys(`${a}:`),h=await Promise.all(o.map(g=>t.getItem(g)));for(const g of h)n.delete(`cache:${g._id}`),g.__deleted||n.add(`${a}:${g._id}`)}return await Promise.all(Array.from(n).map(c=>t.getItem(c)))}return{storage:t,fetch:N(r),query:n=>H(N(r),{initialParams:n,legacy:!0})}}let C=null,S=null;async function Ie(){return S?await S:C||(S=Ae(),C=await S),C}async function Ae(){const t=G(),{content:r}=M().public,n=ve(we),a=await n.storage.getItem("integrity");if(r.integrity!==+(a||0)){const{contents:l,navigation:c}=await $fetch(ye(r.integrity?`cache.${r.integrity}.json`:"cache.json"));await Promise.all(l.map(o=>n.storage.setItem(`cache:${o._id}`,o))),await n.storage.setItem("navigation",c),await n.storage.setItem("integrity",r.integrity)}return await t.callHook("content:storage",n.storage),n}async function _e(t){const r=await Ie();if(!U().getPreviewToken()&&Object.keys(t||{}).length===0)return r.storage.getItem("navigation");const n=await r.query(t).where({_partial:!1,navigation:{$ne:!1}}).find(),l=(await r.query().where({_path:/\/_dir$/i,_partial:!0}).find()).reduce((c,o)=>{var g;((g=o.title)==null?void 0:g.toLowerCase())==="dir"&&(o.title=void 0);const h=o._path.split("/").slice(0,-1).join("/")||"/";return c[h]={...o,...o.body},c},{});return he(n,l)}export{we as contentStorage,ve as createDB,_e as generateNavigation,Ie as useContentDatabase}; +import{ab as _,ai as W,aj as j,ak as E,al as B,am as T,an as $,ao as P,ap as D,ah as k,a8 as J,A as M,aq as H,ac as U,ar as b,u as G}from"./LCLGvLsE.js";import{c as q}from"./Cpj98o6Y.js";const Z="memory",F=()=>{const t=new Map;return{name:Z,options:{},hasItem(r){return t.has(r)},getItem(r){return t.get(r)??null},getItemRaw(r){return t.get(r)??null},setItem(r,n){t.set(r,n)},setItemRaw(r,n){t.set(r,n)},removeItem(r){t.delete(r)},getKeys(){return Array.from(t.keys())},clear(){t.clear()},dispose(){t.clear()}}};function V(t){return!t||typeof t.then!="function"?Promise.resolve(t):t}function p(t,...r){try{return V(t(...r))}catch(n){return Promise.reject(n)}}function Q(t){const r=typeof t;return t===null||r!=="object"&&r!=="function"}function X(t){const r=Object.getPrototypeOf(t);return!r||r.isPrototypeOf(Object)}function K(t){if(Q(t))return String(t);if(X(t)||Array.isArray(t))return JSON.stringify(t);if(typeof t.toJSON=="function")return K(t.toJSON());throw new Error("[unstorage] Cannot stringify value!")}function z(){if(typeof Buffer===void 0)throw new TypeError("[unstorage] Buffer is not supported!")}const R="base64:";function ee(t){if(typeof t=="string")return t;z();const r=Buffer.from(t).toString("base64");return R+r}function te(t){return typeof t!="string"||!t.startsWith(R)?t:(z(),Buffer.from(t.slice(R.length),"base64"))}const re=["hasItem","getItem","getItemRaw","setItem","setItemRaw","removeItem","getMeta","setMeta","removeMeta","getKeys","clear","mount","unmount"];function ne(t,r){if(r=A(r),!r)return t;const n={...t};for(const a of re)n[a]=(l="",...c)=>t[a](r+l,...c);return n.getKeys=(a="",...l)=>t.getKeys(r+a,...l).then(c=>c.map(o=>o.slice(r.length))),n}function d(t){return t?t.split("?")[0].replace(/[/\\]/g,":").replace(/:+/g,":").replace(/^:|:$/g,""):""}function ie(...t){return d(t.join(":"))}function A(t){return t=d(t),t?t+":":""}const ae="memory",se=()=>{const t=new Map;return{name:ae,options:{},hasItem(r){return t.has(r)},getItem(r){return t.get(r)??null},getItemRaw(r){return t.get(r)??null},setItem(r,n){t.set(r,n)},setItemRaw(r,n){t.set(r,n)},removeItem(r){t.delete(r)},getKeys(){return Array.from(t.keys())},clear(){t.clear()},dispose(){t.clear()}}};function oe(t={}){const r={mounts:{"":t.driver||se()},mountpoints:[""],watching:!1,watchListeners:[],unwatch:{}},n=e=>{for(const i of r.mountpoints)if(e.startsWith(i))return{base:i,relativeKey:e.slice(i.length),driver:r.mounts[i]};return{base:"",relativeKey:e,driver:r.mounts[""]}},a=(e,i)=>r.mountpoints.filter(s=>s.startsWith(e)||i&&e.startsWith(s)).map(s=>({relativeBase:e.length>s.length?e.slice(s.length):void 0,mountpoint:s,driver:r.mounts[s]})),l=(e,i)=>{if(r.watching){i=d(i);for(const s of r.watchListeners)s(e,i)}},c=async()=>{if(!r.watching){r.watching=!0;for(const e in r.mounts)r.unwatch[e]=await x(r.mounts[e],l,e)}},o=async()=>{if(r.watching){for(const e in r.unwatch)await r.unwatch[e]();r.unwatch={},r.watching=!1}},h=(e,i,s)=>{const u=new Map,f=m=>{let y=u.get(m.base);return y||(y={driver:m.driver,base:m.base,items:[]},u.set(m.base,y)),y};for(const m of e){const y=typeof m=="string",v=d(y?m:m.key),w=y?void 0:m.value,I=y||!m.options?i:{...i,...m.options},O=n(v);f(O).items.push({key:v,value:w,relativeKey:O.relativeKey,options:I})}return Promise.all([...u.values()].map(m=>s(m))).then(m=>m.flat())},g={hasItem(e,i={}){e=d(e);const{relativeKey:s,driver:u}=n(e);return p(u.hasItem,s,i)},getItem(e,i={}){e=d(e);const{relativeKey:s,driver:u}=n(e);return p(u.getItem,s,i).then(f=>_(f))},getItems(e,i){return h(e,i,s=>s.driver.getItems?p(s.driver.getItems,s.items.map(u=>({key:u.relativeKey,options:u.options})),i).then(u=>u.map(f=>({key:ie(s.base,f.key),value:_(f.value)}))):Promise.all(s.items.map(u=>p(s.driver.getItem,u.relativeKey,u.options).then(f=>({key:u.key,value:_(f)})))))},getItemRaw(e,i={}){e=d(e);const{relativeKey:s,driver:u}=n(e);return u.getItemRaw?p(u.getItemRaw,s,i):p(u.getItem,s,i).then(f=>te(f))},async setItem(e,i,s={}){if(i===void 0)return g.removeItem(e);e=d(e);const{relativeKey:u,driver:f}=n(e);f.setItem&&(await p(f.setItem,u,K(i),s),f.watch||l("update",e))},async setItems(e,i){await h(e,i,async s=>{if(s.driver.setItems)return p(s.driver.setItems,s.items.map(u=>({key:u.relativeKey,value:K(u.value),options:u.options})),i);s.driver.setItem&&await Promise.all(s.items.map(u=>p(s.driver.setItem,u.relativeKey,K(u.value),u.options)))})},async setItemRaw(e,i,s={}){if(i===void 0)return g.removeItem(e,s);e=d(e);const{relativeKey:u,driver:f}=n(e);if(f.setItemRaw)await p(f.setItemRaw,u,i,s);else if(f.setItem)await p(f.setItem,u,ee(i),s);else return;f.watch||l("update",e)},async removeItem(e,i={}){typeof i=="boolean"&&(i={removeMeta:i}),e=d(e);const{relativeKey:s,driver:u}=n(e);u.removeItem&&(await p(u.removeItem,s,i),(i.removeMeta||i.removeMata)&&await p(u.removeItem,s+"$",i),u.watch||l("remove",e))},async getMeta(e,i={}){typeof i=="boolean"&&(i={nativeOnly:i}),e=d(e);const{relativeKey:s,driver:u}=n(e),f=Object.create(null);if(u.getMeta&&Object.assign(f,await p(u.getMeta,s,i)),!i.nativeOnly){const m=await p(u.getItem,s+"$",i).then(y=>_(y));m&&typeof m=="object"&&(typeof m.atime=="string"&&(m.atime=new Date(m.atime)),typeof m.mtime=="string"&&(m.mtime=new Date(m.mtime)),Object.assign(f,m))}return f},setMeta(e,i,s={}){return this.setItem(e+"$",i,s)},removeMeta(e,i={}){return this.removeItem(e+"$",i)},async getKeys(e,i={}){e=A(e);const s=a(e,!0);let u=[];const f=[];for(const m of s){const v=(await p(m.driver.getKeys,m.relativeBase,i)).map(w=>m.mountpoint+d(w)).filter(w=>!u.some(I=>w.startsWith(I)));f.push(...v),u=[m.mountpoint,...u.filter(w=>!w.startsWith(m.mountpoint))]}return e?f.filter(m=>m.startsWith(e)&&!m.endsWith("$")):f.filter(m=>!m.endsWith("$"))},async clear(e,i={}){e=A(e),await Promise.all(a(e,!1).map(async s=>{if(s.driver.clear)return p(s.driver.clear,s.relativeBase,i);if(s.driver.removeItem){const u=await s.driver.getKeys(s.relativeBase||"",i);return Promise.all(u.map(f=>s.driver.removeItem(f,i)))}}))},async dispose(){await Promise.all(Object.values(r.mounts).map(e=>L(e)))},async watch(e){return await c(),r.watchListeners.push(e),async()=>{r.watchListeners=r.watchListeners.filter(i=>i!==e),r.watchListeners.length===0&&await o()}},async unwatch(){r.watchListeners=[],await o()},mount(e,i){if(e=A(e),e&&r.mounts[e])throw new Error(`already mounted at ${e}`);return e&&(r.mountpoints.push(e),r.mountpoints.sort((s,u)=>u.length-s.length)),r.mounts[e]=i,r.watching&&Promise.resolve(x(i,l,e)).then(s=>{r.unwatch[e]=s}).catch(console.error),g},async unmount(e,i=!0){e=A(e),!(!e||!r.mounts[e])&&(r.watching&&e in r.unwatch&&(r.unwatch[e](),delete r.unwatch[e]),i&&await L(r.mounts[e]),r.mountpoints=r.mountpoints.filter(s=>s!==e),delete r.mounts[e])},getMount(e=""){e=d(e)+":";const i=n(e);return{driver:i.driver,base:i.base}},getMounts(e="",i={}){return e=d(e),a(e,i.parents).map(u=>({driver:u.driver,base:u.mountpoint}))}};return g}function x(t,r,n){return t.watch?t.watch((a,l)=>r(a,n+l)):()=>{}}async function L(t){typeof t.dispose=="function"&&await p(t.dispose)}function ue(t={}){const r=ce(n,t.operators);function n(a,l){return typeof l!="object"||l instanceof RegExp?r.$eq(a,l):Object.keys(l||{}).every(c=>{const o=l[c];if(c.startsWith("$")&&r[c]){const h=r[c];return typeof h=="function"?h(a,o):!1}return n(W(a,c),o)})}return n}function ce(t,r={}){return{$match:(n,a)=>t(n,a),$eq:(n,a)=>a instanceof RegExp?a.test(n):n===a,$ne:(n,a)=>a instanceof RegExp?!a.test(n):n!==a,$not:(n,a)=>!t(n,a),$and:(n,a)=>(j(a,"$and requires an array as condition"),a.every(l=>t(n,l))),$or:(n,a)=>(j(a,"$or requires an array as condition"),a.some(l=>t(n,l))),$in:(n,a)=>E(a).some(l=>Array.isArray(n)?t(n,{$contains:l}):t(n,l)),$contains:(n,a)=>(n=Array.isArray(n)?n:String(n),E(a).every(l=>n.includes(l))),$icontains:(n,a)=>{if(typeof a!="string")throw new TypeError("$icontains requires a string, use $contains instead");return n=String(n).toLocaleLowerCase(),E(a).every(l=>n.includes(l.toLocaleLowerCase()))},$containsAny:(n,a)=>(j(a,"$containsAny requires an array as condition"),n=Array.isArray(n)?n:String(n),a.some(l=>n.includes(l))),$exists:(n,a)=>a?typeof n<"u":typeof n>"u",$type:(n,a)=>typeof n===String(a),$regex:(n,a)=>{if(!(a instanceof RegExp)){const l=String(a).match(/\/(.*)\/([dgimsuy]*)$/);a=l?new RegExp(l[1],l[2]||""):new RegExp(a)}return a.test(String(n||""))},$lt:(n,a)=>nn<=a,$gt:(n,a)=>n>a,$gte:(n,a)=>n>=a,...r||{}}}function le(t){const r=ue(),n=(c,{query:o,before:h,after:g})=>{const e=typeof o=="string"?{_path:o}:o,i=c.findIndex(u=>r(u,e));h=h??1,g=g??1;const s=new Array(h+g).fill(null,0);return i===-1?s:s.map((u,f)=>c[i-h+f+ +(f>=h)]||null)},a=[(c,o)=>{const h=c.result.filter(g=>E(o.where).every(e=>r(g,e)));return{...c,result:h,total:h.length}},(c,o)=>E(o.sort).forEach(h=>T(c.result,h)),function(o,h,g){var e;if(h.surround){let i=n(((e=o.result)==null?void 0:e.length)===1?g:o.result,h.surround);i=$(P(h.without))(i),i=$(D(h.only))(i),o.surround=i}return o}],l=[(c,o)=>{if(o.skip)return{...c,result:c.result.slice(o.skip),skip:o.skip}},(c,o)=>{if(o.limit)return{...c,result:c.result.slice(0,o.limit),limit:o.limit}},function(o,h,g){var e,i,s;if(h.dirConfig){const u=((e=o.result[0])==null?void 0:e._path)||((s=(i=h.where)==null?void 0:i.find(f=>f._path))==null?void 0:s._path);if(typeof u=="string"){const f=g.find(m=>m._path===k(u,"_dir"));f&&(o.dirConfig={_path:f._path,...P(["_"])(f)})}}return o},(c,o)=>({...c,result:$(P(o.without))(c.result)}),(c,o)=>({...c,result:$(D(o.only))(c.result)})];return async c=>{const o=await t(),h=c.params(),g={result:o,limit:0,skip:0,total:o.length},e=a.reduce((s,u)=>u(s,h,o)||s,g);if(h.count)return{result:e.result.length};const i=l.reduce((s,u)=>u(s,h,o)||s,e);return h.first?{...B(["skip","limit","total"])(i),result:i.result[0]}:i}}function N(t){const r=le(t);return async n=>{var c;n.params().first&&n.withDirConfig();const a=n.params(),l=await r(n);return a.surround?l==null?void 0:l.surround:(l!=null&&l.dirConfig&&(l.result={_path:(c=l.dirConfig)==null?void 0:c._path,...l.result,_dir:l.dirConfig}),l==null?void 0:l.result)}}var fe={exports:{}};(function(t,r){(function(n,a,l){t.exports=l(),t.exports.default=l()})("slugify",q,function(){var n=JSON.parse(`{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","¢":"cent","£":"pound","¤":"currency","¥":"yen","©":"(c)","ª":"a","®":"(r)","º":"o","À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","Þ":"TH","ß":"ss","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","þ":"th","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"DJ","đ":"dj","Ē":"E","ē":"e","Ė":"E","ė":"e","Ę":"e","ę":"e","Ě":"E","ě":"e","Ğ":"G","ğ":"g","Ģ":"G","ģ":"g","Ĩ":"I","ĩ":"i","Ī":"i","ī":"i","Į":"I","į":"i","İ":"I","ı":"i","Ķ":"k","ķ":"k","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ł":"L","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","Ō":"O","ō":"o","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ũ":"U","ũ":"u","Ū":"u","ū":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","Ə":"E","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Lj":"LJ","lj":"lj","Nj":"NJ","nj":"nj","Ș":"S","ș":"s","Ț":"T","ț":"t","ə":"e","˚":"o","Ά":"A","Έ":"E","Ή":"H","Ί":"I","Ό":"O","Ύ":"Y","Ώ":"W","ΐ":"i","Α":"A","Β":"B","Γ":"G","Δ":"D","Ε":"E","Ζ":"Z","Η":"H","Θ":"8","Ι":"I","Κ":"K","Λ":"L","Μ":"M","Ν":"N","Ξ":"3","Ο":"O","Π":"P","Ρ":"R","Σ":"S","Τ":"T","Υ":"Y","Φ":"F","Χ":"X","Ψ":"PS","Ω":"W","Ϊ":"I","Ϋ":"Y","ά":"a","έ":"e","ή":"h","ί":"i","ΰ":"y","α":"a","β":"b","γ":"g","δ":"d","ε":"e","ζ":"z","η":"h","θ":"8","ι":"i","κ":"k","λ":"l","μ":"m","ν":"n","ξ":"3","ο":"o","π":"p","ρ":"r","ς":"s","σ":"s","τ":"t","υ":"y","φ":"f","χ":"x","ψ":"ps","ω":"w","ϊ":"i","ϋ":"y","ό":"o","ύ":"y","ώ":"w","Ё":"Yo","Ђ":"DJ","Є":"Ye","І":"I","Ї":"Yi","Ј":"J","Љ":"LJ","Њ":"NJ","Ћ":"C","Џ":"DZ","А":"A","Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ж":"Zh","З":"Z","И":"I","Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R","С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh","Щ":"Sh","Ъ":"U","Ы":"Y","Ь":"","Э":"E","Ю":"Yu","Я":"Ya","а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ж":"zh","з":"z","и":"i","й":"j","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p","р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch","ш":"sh","щ":"sh","ъ":"u","ы":"y","ь":"","э":"e","ю":"yu","я":"ya","ё":"yo","ђ":"dj","є":"ye","і":"i","ї":"yi","ј":"j","љ":"lj","њ":"nj","ћ":"c","ѝ":"u","џ":"dz","Ґ":"G","ґ":"g","Ғ":"GH","ғ":"gh","Қ":"KH","қ":"kh","Ң":"NG","ң":"ng","Ү":"UE","ү":"ue","Ұ":"U","ұ":"u","Һ":"H","һ":"h","Ә":"AE","ә":"ae","Ө":"OE","ө":"oe","Ա":"A","Բ":"B","Գ":"G","Դ":"D","Ե":"E","Զ":"Z","Է":"E'","Ը":"Y'","Թ":"T'","Ժ":"JH","Ի":"I","Լ":"L","Խ":"X","Ծ":"C'","Կ":"K","Հ":"H","Ձ":"D'","Ղ":"GH","Ճ":"TW","Մ":"M","Յ":"Y","Ն":"N","Շ":"SH","Չ":"CH","Պ":"P","Ջ":"J","Ռ":"R'","Ս":"S","Վ":"V","Տ":"T","Ր":"R","Ց":"C","Փ":"P'","Ք":"Q'","Օ":"O''","Ֆ":"F","և":"EV","ء":"a","آ":"aa","أ":"a","ؤ":"u","إ":"i","ئ":"e","ا":"a","ب":"b","ة":"h","ت":"t","ث":"th","ج":"j","ح":"h","خ":"kh","د":"d","ذ":"th","ر":"r","ز":"z","س":"s","ش":"sh","ص":"s","ض":"dh","ط":"t","ظ":"z","ع":"a","غ":"gh","ف":"f","ق":"q","ك":"k","ل":"l","م":"m","ن":"n","ه":"h","و":"w","ى":"a","ي":"y","ً":"an","ٌ":"on","ٍ":"en","َ":"a","ُ":"u","ِ":"e","ْ":"","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","پ":"p","چ":"ch","ژ":"zh","ک":"k","گ":"g","ی":"y","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","฿":"baht","ა":"a","ბ":"b","გ":"g","დ":"d","ე":"e","ვ":"v","ზ":"z","თ":"t","ი":"i","კ":"k","ლ":"l","მ":"m","ნ":"n","ო":"o","პ":"p","ჟ":"zh","რ":"r","ს":"s","ტ":"t","უ":"u","ფ":"f","ქ":"k","ღ":"gh","ყ":"q","შ":"sh","ჩ":"ch","ც":"ts","ძ":"dz","წ":"ts","ჭ":"ch","ხ":"kh","ჯ":"j","ჰ":"h","Ṣ":"S","ṣ":"s","Ẁ":"W","ẁ":"w","Ẃ":"W","ẃ":"w","Ẅ":"W","ẅ":"w","ẞ":"SS","Ạ":"A","ạ":"a","Ả":"A","ả":"a","Ấ":"A","ấ":"a","Ầ":"A","ầ":"a","Ẩ":"A","ẩ":"a","Ẫ":"A","ẫ":"a","Ậ":"A","ậ":"a","Ắ":"A","ắ":"a","Ằ":"A","ằ":"a","Ẳ":"A","ẳ":"a","Ẵ":"A","ẵ":"a","Ặ":"A","ặ":"a","Ẹ":"E","ẹ":"e","Ẻ":"E","ẻ":"e","Ẽ":"E","ẽ":"e","Ế":"E","ế":"e","Ề":"E","ề":"e","Ể":"E","ể":"e","Ễ":"E","ễ":"e","Ệ":"E","ệ":"e","Ỉ":"I","ỉ":"i","Ị":"I","ị":"i","Ọ":"O","ọ":"o","Ỏ":"O","ỏ":"o","Ố":"O","ố":"o","Ồ":"O","ồ":"o","Ổ":"O","ổ":"o","Ỗ":"O","ỗ":"o","Ộ":"O","ộ":"o","Ớ":"O","ớ":"o","Ờ":"O","ờ":"o","Ở":"O","ở":"o","Ỡ":"O","ỡ":"o","Ợ":"O","ợ":"o","Ụ":"U","ụ":"u","Ủ":"U","ủ":"u","Ứ":"U","ứ":"u","Ừ":"U","ừ":"u","Ử":"U","ử":"u","Ữ":"U","ữ":"u","Ự":"U","ự":"u","Ỳ":"Y","ỳ":"y","Ỵ":"Y","ỵ":"y","Ỷ":"Y","ỷ":"y","Ỹ":"Y","ỹ":"y","–":"-","‘":"'","’":"'","“":"\\"","”":"\\"","„":"\\"","†":"+","•":"*","…":"...","₠":"ecu","₢":"cruzeiro","₣":"french franc","₤":"lira","₥":"mill","₦":"naira","₧":"peseta","₨":"rupee","₩":"won","₪":"new shequel","₫":"dong","€":"euro","₭":"kip","₮":"tugrik","₯":"drachma","₰":"penny","₱":"peso","₲":"guarani","₳":"austral","₴":"hryvnia","₵":"cedi","₸":"kazakhstani tenge","₹":"indian rupee","₺":"turkish lira","₽":"russian ruble","₿":"bitcoin","℠":"sm","™":"tm","∂":"d","∆":"delta","∑":"sum","∞":"infinity","♥":"love","元":"yuan","円":"yen","﷼":"rial","ﻵ":"laa","ﻷ":"laa","ﻹ":"lai","ﻻ":"la"}`),a=JSON.parse('{"bg":{"Й":"Y","Ц":"Ts","Щ":"Sht","Ъ":"A","Ь":"Y","й":"y","ц":"ts","щ":"sht","ъ":"a","ь":"y"},"de":{"Ä":"AE","ä":"ae","Ö":"OE","ö":"oe","Ü":"UE","ü":"ue","ß":"ss","%":"prozent","&":"und","|":"oder","∑":"summe","∞":"unendlich","♥":"liebe"},"es":{"%":"por ciento","&":"y","<":"menor que",">":"mayor que","|":"o","¢":"centavos","£":"libras","¤":"moneda","₣":"francos","∑":"suma","∞":"infinito","♥":"amor"},"fr":{"%":"pourcent","&":"et","<":"plus petit",">":"plus grand","|":"ou","¢":"centime","£":"livre","¤":"devise","₣":"franc","∑":"somme","∞":"infini","♥":"amour"},"pt":{"%":"porcento","&":"e","<":"menor",">":"maior","|":"ou","¢":"centavo","∑":"soma","£":"libra","∞":"infinito","♥":"amor"},"uk":{"И":"Y","и":"y","Й":"Y","й":"y","Ц":"Ts","ц":"ts","Х":"Kh","х":"kh","Щ":"Shch","щ":"shch","Г":"H","г":"h"},"vi":{"Đ":"D","đ":"d"},"da":{"Ø":"OE","ø":"oe","Å":"AA","å":"aa","%":"procent","&":"og","|":"eller","$":"dollar","<":"mindre end",">":"større end"},"nb":{"&":"og","Å":"AA","Æ":"AE","Ø":"OE","å":"aa","æ":"ae","ø":"oe"},"it":{"&":"e"},"nl":{"&":"en"},"sv":{"&":"och","Å":"AA","Ä":"AE","Ö":"OE","å":"aa","ä":"ae","ö":"oe"}}');function l(c,o){if(typeof c!="string")throw new Error("slugify: string argument expected");o=typeof o=="string"?{replacement:o}:o||{};var h=a[o.locale]||{},g=o.replacement===void 0?"-":o.replacement,e=o.trim===void 0?!0:o.trim,i=c.normalize().split("").reduce(function(s,u){var f=h[u];return f===void 0&&(f=n[u]),f===void 0&&(f=u),f===g&&(f=" "),s+f.replace(o.remove||/[^\w\s$*_+~.()'"!\-:@]+/g,"")},"");return o.strict&&(i=i.replace(/[^A-Za-z0-9\s]/g,"")),e&&(i=i.trim()),i=i.replace(/\s+/g,g),o.lower&&(i=i.toLowerCase()),i}return l.extend=function(c){Object.assign(n,c)},l})})(fe);const me=t=>t.split(/[\s-]/g).map(J).join(" ");function he(t,r){const{navigation:n}=M().public.content;if(n===!1)return[];const a=c=>({...pe(["title",...n.fields])(c),...de(c==null?void 0:c.navigation)?c.navigation:{}}),l=t.sort((c,o)=>c._path.localeCompare(o._path)).reduce((c,o)=>{const h=o._path.substring(1).split("/"),g=o._id.split(":").slice(1),e=!!g[g.length-1].match(/([1-9][0-9]*\.)?index.md/g),i=f=>({title:f.title,_path:f._path,_file:f._file,children:[],...a(f),...f._draft?{_draft:!0}:{}}),s=i(o);if(e){const f=r[s._path];if(typeof(f==null?void 0:f.navigation)<"u"&&!(f!=null&&f.navigation))return c;if(o._path!=="/"){const m=i(o);s.children.push(m)}Object.assign(s,a(f))}return h.length===1?(c.push(s),c):(h.slice(0,-1).reduce((f,m,y)=>{const v="/"+h.slice(0,y+1).join("/"),w=r[v];if(typeof(w==null?void 0:w.navigation)<"u"&&!w.navigation)return[];let I=f.find(O=>O._path===v);return I||(I={title:me(m),_path:v,_file:o._file,children:[],...a(w)},f.push(I)),I.children},c).push(s),c)},[]);return Y(l)}const ge=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});function Y(t){var n;t.forEach(a=>{a._file=a._file.split(".").slice(0,-1).join(".")});const r=t.sort((a,l)=>ge.compare(a._file,l._file));for(const a of r)(n=a.children)!=null&&n.length?Y(a.children):delete a.children,delete a._file;return t}function pe(t){return r=>(r=r||{},t&&t.length?t.filter(n=>typeof r[n]<"u").reduce((n,a)=>Object.assign(n,{[a]:r[a]}),{}):r)}function de(t){return Object.prototype.toString.call(t)==="[object Object]"}const ye=t=>b(t,M().public.content.api.baseURL),we=ne(oe({driver:F()}),"@content");function ve(t){async function r(){const n=new Set(await t.getKeys("cache:")),a=U().getPreviewToken();if(a){const c=await t.getItem(`${a}$`).then(g=>g||{});if(Array.isArray(c.ignoreSources)){const g=c.ignoreSources.map(e=>`cache:${e.trim()}:`);for(const e of n)g.some(i=>e.startsWith(i))&&n.delete(e)}const o=await t.getKeys(`${a}:`),h=await Promise.all(o.map(g=>t.getItem(g)));for(const g of h)n.delete(`cache:${g._id}`),g.__deleted||n.add(`${a}:${g._id}`)}return await Promise.all(Array.from(n).map(c=>t.getItem(c)))}return{storage:t,fetch:N(r),query:n=>H(N(r),{initialParams:n,legacy:!0})}}let C=null,S=null;async function Ie(){return S?await S:C||(S=Ae(),C=await S),C}async function Ae(){const t=G(),{content:r}=M().public,n=ve(we),a=await n.storage.getItem("integrity");if(r.integrity!==+(a||0)){const{contents:l,navigation:c}=await $fetch(ye(r.integrity?`cache.${r.integrity}.json`:"cache.json"));await Promise.all(l.map(o=>n.storage.setItem(`cache:${o._id}`,o))),await n.storage.setItem("navigation",c),await n.storage.setItem("integrity",r.integrity)}return await t.callHook("content:storage",n.storage),n}async function _e(t){const r=await Ie();if(!U().getPreviewToken()&&Object.keys(t||{}).length===0)return r.storage.getItem("navigation");const n=await r.query(t).where({_partial:!1,navigation:{$ne:!1}}).find(),l=(await r.query().where({_path:/\/_dir$/i,_partial:!0}).find()).reduce((c,o)=>{var g;((g=o.title)==null?void 0:g.toLowerCase())==="dir"&&(o.title=void 0);const h=o._path.split("/").slice(0,-1).join("/")||"/";return c[h]={...o,...o.body},c},{});return he(n,l)}export{we as contentStorage,ve as createDB,_e as generateNavigation,Ie as useContentDatabase}; diff --git a/_nuxt/sFyta7Xq.js b/_nuxt/D031i5cu.js similarity index 78% rename from _nuxt/sFyta7Xq.js rename to _nuxt/D031i5cu.js index 4a8667ba..f217b17c 100644 --- a/_nuxt/sFyta7Xq.js +++ b/_nuxt/D031i5cu.js @@ -1 +1 @@ -import{z as o,U as f,h as p,x as l,A as g}from"./DCQ65ZuQ.js";import{u as h}from"./BtUAytV1.js";const b=(n,c=p())=>{const r=o(n),m=g();f(()=>o(n),(i=r)=>{if(!c.path||!i)return;const e=Object.assign({},(i==null?void 0:i.head)||{});e.meta=[...e.meta||[]],e.link=[...e.link||[]];const s=e.title||(i==null?void 0:i.title);s&&(e.title=s),m.public.content.host;const t=(e==null?void 0:e.description)||(i==null?void 0:i.description);t&&e.meta.filter(u=>u.name==="description").length===0&&e.meta.push({name:"description",content:t}),e!=null&&e.image||(i==null||i.image),l(()=>h(e))},{immediate:!0})};export{b as u}; +import{z as o,U as f,h as p,x as l,A as g}from"./LCLGvLsE.js";import{u as h}from"./tIvUuwzM.js";const b=(n,c=p())=>{const r=o(n),m=g();f(()=>o(n),(i=r)=>{if(!c.path||!i)return;const e=Object.assign({},(i==null?void 0:i.head)||{});e.meta=[...e.meta||[]],e.link=[...e.link||[]];const s=e.title||(i==null?void 0:i.title);s&&(e.title=s),m.public.content.host;const t=(e==null?void 0:e.description)||(i==null?void 0:i.description);t&&e.meta.filter(u=>u.name==="description").length===0&&e.meta.push({name:"description",content:t}),e!=null&&e.image||(i==null||i.image),l(()=>h(e))},{immediate:!0})};export{b as u}; diff --git a/_nuxt/CCIVSpxi.js b/_nuxt/D3LnE11t.js similarity index 92% rename from _nuxt/CCIVSpxi.js rename to _nuxt/D3LnE11t.js index 29f2be8a..884e94dd 100644 --- a/_nuxt/CCIVSpxi.js +++ b/_nuxt/D3LnE11t.js @@ -1 +1 @@ -import{g as d,a1 as l,k as v,a2 as f,B as p,a3 as g,a4 as m,O as h,a5 as y,s as u,e as _}from"./DCQ65ZuQ.js";const C=d({name:"ContentNavigation",props:{query:{type:Object,required:!1,default:void 0}},async setup(i){const{query:a}=l(i),n=v(()=>{var t;return typeof((t=a.value)==null?void 0:t.params)=="function"?a.value.params():a.value});if(!n.value&&f("dd-navigation").value){const{navigation:t}=p();return{navigation:t}}const{data:o}=await g(`content-navigation-${m(n.value)}`,()=>y(n.value));return{navigation:o}},render(i){const a=h(),{navigation:n}=i,o=e=>u(_,{to:e._path},()=>e.title),t=(e,r)=>u("ul",r?{"data-level":r}:null,e.map(s=>s.children?u("li",null,[o(s),t(s.children,r+1)]):u("li",null,o(s)))),c=e=>t(e,0);return a!=null&&a.default?a.default({navigation:n,...this.$attrs}):c(n)}}),N=C;export{N as default}; +import{g as d,a1 as l,k as v,a2 as f,B as p,a3 as g,a4 as m,O as h,a5 as y,s as u,e as _}from"./LCLGvLsE.js";const C=d({name:"ContentNavigation",props:{query:{type:Object,required:!1,default:void 0}},async setup(i){const{query:a}=l(i),n=v(()=>{var t;return typeof((t=a.value)==null?void 0:t.params)=="function"?a.value.params():a.value});if(!n.value&&f("dd-navigation").value){const{navigation:t}=p();return{navigation:t}}const{data:o}=await g(`content-navigation-${m(n.value)}`,()=>y(n.value));return{navigation:o}},render(i){const a=h(),{navigation:n}=i,o=e=>u(_,{to:e._path},()=>e.title),t=(e,r)=>u("ul",r?{"data-level":r}:null,e.map(s=>s.children?u("li",null,[o(s),t(s.children,r+1)]):u("li",null,o(s)))),c=e=>t(e,0);return a!=null&&a.default?a.default({navigation:n,...this.$attrs}):c(n)}}),N=C;export{N as default}; diff --git a/_nuxt/OmHslson.js b/_nuxt/DBdY7ehp.js similarity index 63% rename from _nuxt/OmHslson.js rename to _nuxt/DBdY7ehp.js index 9dbe9be9..31d4e727 100644 --- a/_nuxt/OmHslson.js +++ b/_nuxt/DBdY7ehp.js @@ -1 +1 @@ -import{g as a,o as n,C as o,w as s,ad as f,e as u}from"./DCQ65ZuQ.js";const l=a({__name:"ProseA",props:{href:{type:String,default:""},target:{type:String,default:void 0,required:!1}},setup(e){return(t,c)=>{const r=u;return n(),o(r,{href:e.href,target:e.target},{default:s(()=>[f(t.$slots,"default")]),_:3},8,["href","target"])}}});export{l as default}; +import{g as a,o as n,C as o,w as s,ad as f,e as u}from"./LCLGvLsE.js";const l=a({__name:"ProseA",props:{href:{type:String,default:""},target:{type:String,default:void 0,required:!1}},setup(e){return(t,c)=>{const r=u;return n(),o(r,{href:e.href,target:e.target},{default:s(()=>[f(t.$slots,"default")]),_:3},8,["href","target"])}}});export{l as default}; diff --git a/_nuxt/Bt4D16IY.js b/_nuxt/DGrI1rgt.js similarity index 65% rename from _nuxt/Bt4D16IY.js rename to _nuxt/DGrI1rgt.js index 086ec108..b3c94505 100644 --- a/_nuxt/Bt4D16IY.js +++ b/_nuxt/DGrI1rgt.js @@ -1 +1 @@ -import{_ as o,o as r,c as t,ad as n}from"./DCQ65ZuQ.js";const s={};function c(e,a){return r(),t("strong",null,[n(e.$slots,"default")])}const _=o(s,[["render",c]]);export{_ as default}; +import{_ as o,o as r,c as t,ad as n}from"./LCLGvLsE.js";const s={};function c(e,a){return r(),t("strong",null,[n(e.$slots,"default")])}const _=o(s,[["render",c]]);export{_ as default}; diff --git a/_nuxt/BDt0kMsK.js b/_nuxt/DKWc8O0p.js similarity index 65% rename from _nuxt/BDt0kMsK.js rename to _nuxt/DKWc8O0p.js index 7a796eae..6adec122 100644 --- a/_nuxt/BDt0kMsK.js +++ b/_nuxt/DKWc8O0p.js @@ -1 +1 @@ -import{_ as o,o as r,c as t,ad as a}from"./DCQ65ZuQ.js";const s={};function c(e,n){return r(),t("table",null,[a(e.$slots,"default")])}const _=o(s,[["render",c]]);export{_ as default}; +import{_ as o,o as r,c as t,ad as a}from"./LCLGvLsE.js";const s={};function c(e,n){return r(),t("table",null,[a(e.$slots,"default")])}const _=o(s,[["render",c]]);export{_ as default}; diff --git a/_nuxt/ClS-RELa.js b/_nuxt/DUG34Y6d.js similarity index 64% rename from _nuxt/ClS-RELa.js rename to _nuxt/DUG34Y6d.js index fd9b8668..6f78754e 100644 --- a/_nuxt/ClS-RELa.js +++ b/_nuxt/DUG34Y6d.js @@ -1 +1 @@ -import{_ as o,o as r,c as t,ad as s}from"./DCQ65ZuQ.js";const c={};function n(e,a){return r(),t("td",null,[s(e.$slots,"default")])}const d=o(c,[["render",n]]);export{d as default}; +import{_ as o,o as r,c as t,ad as s}from"./LCLGvLsE.js";const c={};function n(e,a){return r(),t("td",null,[s(e.$slots,"default")])}const d=o(c,[["render",n]]);export{d as default}; diff --git a/_nuxt/DOYruCef.js b/_nuxt/DVOw9KrD.js similarity index 96% rename from _nuxt/DOYruCef.js rename to _nuxt/DVOw9KrD.js index 7a6012ed..3cb0f14f 100644 --- a/_nuxt/DOYruCef.js +++ b/_nuxt/DVOw9KrD.js @@ -1 +1 @@ -import{g as p,O as m,k as A,s as l,a0 as g}from"./DCQ65ZuQ.js";const w=["p","h1","h2","h3","h4","h5","h6","li"];function f(r,t){return r.type===t||typeof r.type=="object"&&r.type.tag===t||r.tag===t}function s(r){return f(r,"text")||f(r,Symbol.for("v-txt"))}function y(r){var t;return Array.isArray(r.children)||typeof r.children=="string"?r.children:typeof((t=r.children)==null?void 0:t.default)=="function"?r.children.default():[]}function a(r){if(!r)return"";if(Array.isArray(r))return r.map(a).join("");if(s(r))return r.children||r.value||"";const t=y(r);return Array.isArray(t)?t.map(a).filter(Boolean).join(""):""}function c(r,t=[]){if(Array.isArray(r))return r.flatMap(n=>c(n,t));let e=r;return t.some(n=>n==="*"||f(r,n))&&(e=y(r)||r,!Array.isArray(e)&&w.some(n=>f(r,n))&&(e=[e])),e}function h(r,t=[]){return r=Array.isArray(r)?r:[r],t.length?r.flatMap(e=>h(c(e,[t[0]]),t.slice(1))).filter(e=>!(s(e)&&a(e).trim()==="")):r}function S(r,t=[]){return typeof t=="string"&&(t=t.split(",").map(e=>e.trim()).filter(Boolean)),t.length?h(r,t).reduce((e,n)=>(s(n)?typeof e[e.length-1]=="string"?e[e.length-1]+=n.children:e.push(n.children):e.push(n),e),[]):r}const C=p({name:"MDCSlot",functional:!0,props:{name:{type:String,default:"default"},unwrap:{type:[Boolean,String],default:!1},use:{type:Function,default:void 0}},setup(r){const{parent:t}=g(),{default:e}=m(),n=A(()=>typeof r.unwrap=="string"?r.unwrap.split(" "):["*"]);return{fallbackSlot:e,tags:n,parent:t}},render({use:r,unwrap:t,fallbackSlot:e,tags:n,parent:i}){var o;try{let u=r;return typeof r=="string"&&(u=(i==null?void 0:i.slots[r])||((o=i==null?void 0:i.parent)==null?void 0:o.slots[r]),console.warn(`Please set :use="$slots.${r}" in component to enable reactivity`)),u?t?S(u(),n):[u()]:e?e():l("div")}catch{return l("div")}}}),_=p({props:{use:{type:Function,default:void 0},unwrap:{type:[Boolean,String],default:!1}},render(r){return l(C,r)}});export{_ as default}; +import{g as p,O as m,k as A,s as l,a0 as g}from"./LCLGvLsE.js";const w=["p","h1","h2","h3","h4","h5","h6","li"];function f(r,t){return r.type===t||typeof r.type=="object"&&r.type.tag===t||r.tag===t}function s(r){return f(r,"text")||f(r,Symbol.for("v-txt"))}function y(r){var t;return Array.isArray(r.children)||typeof r.children=="string"?r.children:typeof((t=r.children)==null?void 0:t.default)=="function"?r.children.default():[]}function a(r){if(!r)return"";if(Array.isArray(r))return r.map(a).join("");if(s(r))return r.children||r.value||"";const t=y(r);return Array.isArray(t)?t.map(a).filter(Boolean).join(""):""}function c(r,t=[]){if(Array.isArray(r))return r.flatMap(n=>c(n,t));let e=r;return t.some(n=>n==="*"||f(r,n))&&(e=y(r)||r,!Array.isArray(e)&&w.some(n=>f(r,n))&&(e=[e])),e}function h(r,t=[]){return r=Array.isArray(r)?r:[r],t.length?r.flatMap(e=>h(c(e,[t[0]]),t.slice(1))).filter(e=>!(s(e)&&a(e).trim()==="")):r}function S(r,t=[]){return typeof t=="string"&&(t=t.split(",").map(e=>e.trim()).filter(Boolean)),t.length?h(r,t).reduce((e,n)=>(s(n)?typeof e[e.length-1]=="string"?e[e.length-1]+=n.children:e.push(n.children):e.push(n),e),[]):r}const C=p({name:"MDCSlot",functional:!0,props:{name:{type:String,default:"default"},unwrap:{type:[Boolean,String],default:!1},use:{type:Function,default:void 0}},setup(r){const{parent:t}=g(),{default:e}=m(),n=A(()=>typeof r.unwrap=="string"?r.unwrap.split(" "):["*"]);return{fallbackSlot:e,tags:n,parent:t}},render({use:r,unwrap:t,fallbackSlot:e,tags:n,parent:i}){var o;try{let u=r;return typeof r=="string"&&(u=(i==null?void 0:i.slots[r])||((o=i==null?void 0:i.parent)==null?void 0:o.slots[r]),console.warn(`Please set :use="$slots.${r}" in component to enable reactivity`)),u?t?S(u(),n):[u()]:e?e():l("div")}catch{return l("div")}}}),_=p({props:{use:{type:Function,default:void 0},unwrap:{type:[Boolean,String],default:!1}},render(r){return l(C,r)}});export{_ as default}; diff --git a/_nuxt/D7wUV6EO.js b/_nuxt/DVbdpRCP.js similarity index 85% rename from _nuxt/D7wUV6EO.js rename to _nuxt/DVbdpRCP.js index a78b6410..a58bdeb5 100644 --- a/_nuxt/D7wUV6EO.js +++ b/_nuxt/DVbdpRCP.js @@ -1 +1 @@ -import{g as i,A as c,k as p,o as s,c as n,z as u,ad as t}from"./DCQ65ZuQ.js";const f=["id"],l=["href"],k=i({__name:"ProseH5",props:{id:{}},setup(a){const r=a,{headings:o}=c().public.mdc,d=p(()=>{var e;return r.id&&((e=o==null?void 0:o.anchorLinks)==null?void 0:e.h5)});return(e,m)=>(s(),n("h5",{id:e.id},[e.id&&u(d)?(s(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; +import{g as i,A as c,k as p,o as s,c as n,z as u,ad as t}from"./LCLGvLsE.js";const f=["id"],l=["href"],k=i({__name:"ProseH5",props:{id:{}},setup(a){const r=a,{headings:o}=c().public.mdc,d=p(()=>{var e;return r.id&&((e=o==null?void 0:o.anchorLinks)==null?void 0:e.h5)});return(e,m)=>(s(),n("h5",{id:e.id},[e.id&&u(d)?(s(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; diff --git a/_nuxt/fVrCQsqn.js b/_nuxt/DYP278Uv.js similarity index 95% rename from _nuxt/fVrCQsqn.js rename to _nuxt/DYP278Uv.js index b7464806..19d58ac8 100644 --- a/_nuxt/fVrCQsqn.js +++ b/_nuxt/DYP278Uv.js @@ -1 +1 @@ -import{_ as y,o as e,C as d,w as p,a as n,t as f,e as $,g as b,A as v,c as s,F as u,D as c,z as _,b as w,E as S}from"./DCQ65ZuQ.js";const k={props:{title:{type:String,default:"Title"},author:{type:String,default:"Author"},thumbnail:{type:String,default:"./nlesc-logo.svg"},url:{type:String,default:"/"}}},C={class:"relative"},B={class:"flex flex-row bg-eScienceWhite shadow-xl max-w-xl rounded-bl-3xl rounded-tr-3xl h-48"},N={class:"prose font-display m-4 mr-10"},L=["src"];function A(h,o,l,m,x,i){const a=$;return e(),d(a,{to:l.url},{default:p(()=>[n("div",C,[n("div",B,[n("div",N,[n("h3",null,f(l.title),1)]),n("img",{src:l.thumbnail,alt:"module icon",class:"max-w-xs rounded-tr-3xl"},null,8,L)])])]),_:1},8,["to"])}const D=y(k,[["render",A]]),E={class:"flex flex-col pt-4 pb-6 pl-6 ml-16"},F={class:"prose-2xl font-display font-bold text-eSciencePurple w-full pl-2"},q=b({__name:"index",setup(h){const o=v().public,l={path:"/modules",where:[{visibility:"visible"}],sort:[{id:1,$numeric:!0}]};return(m,x)=>{const i=D,a=S;return e(),s("div",E,[(e(!0),s(u,null,c(_(o).categoryOrder,r=>(e(),s("div",{key:r,class:"flex flex-wrap gap-4 mb-8"},[n("h2",F,f(r),1),w(a,{query:l},{default:p(({list:g})=>[(e(!0),s(u,null,c(g.filter(t=>t.category===r),t=>(e(),d(i,{key:t.id,title:t.title,author:t.author,thumbnail:`/${_(o).repoName}${t._path}/media/${t.thumbnail}`,url:`${t._path}/info`},null,8,["title","author","thumbnail","url"]))),128))]),_:2},1024)]))),128))])}}});export{q as default}; +import{_ as y,o as e,C as d,w as p,a as n,t as f,e as $,g as b,A as v,c as s,F as u,D as c,z as _,b as w,E as S}from"./LCLGvLsE.js";const k={props:{title:{type:String,default:"Title"},author:{type:String,default:"Author"},thumbnail:{type:String,default:"./nlesc-logo.svg"},url:{type:String,default:"/"}}},C={class:"relative"},B={class:"flex flex-row bg-eScienceWhite shadow-xl max-w-xl rounded-bl-3xl rounded-tr-3xl h-48"},N={class:"prose font-display m-4 mr-10"},L=["src"];function A(h,o,l,m,x,i){const a=$;return e(),d(a,{to:l.url},{default:p(()=>[n("div",C,[n("div",B,[n("div",N,[n("h3",null,f(l.title),1)]),n("img",{src:l.thumbnail,alt:"module icon",class:"max-w-xs rounded-tr-3xl"},null,8,L)])])]),_:1},8,["to"])}const D=y(k,[["render",A]]),E={class:"flex flex-col pt-4 pb-6 pl-6 ml-16"},F={class:"prose-2xl font-display font-bold text-eSciencePurple w-full pl-2"},q=b({__name:"index",setup(h){const o=v().public,l={path:"/modules",where:[{visibility:"visible"}],sort:[{id:1,$numeric:!0}]};return(m,x)=>{const i=D,a=S;return e(),s("div",E,[(e(!0),s(u,null,c(_(o).categoryOrder,r=>(e(),s("div",{key:r,class:"flex flex-wrap gap-4 mb-8"},[n("h2",F,f(r),1),w(a,{query:l},{default:p(({list:g})=>[(e(!0),s(u,null,c(g.filter(t=>t.category===r),t=>(e(),d(i,{key:t.id,title:t.title,author:t.author,thumbnail:`/${_(o).repoName}${t._path}/media/${t.thumbnail}`,url:`${t._path}/info`},null,8,["title","author","thumbnail","url"]))),128))]),_:2},1024)]))),128))])}}});export{q as default}; diff --git a/_nuxt/mjKfI97z.js b/_nuxt/DYbY-O0Y.js similarity index 95% rename from _nuxt/mjKfI97z.js rename to _nuxt/DYbY-O0Y.js index 698d13cc..5c917258 100644 --- a/_nuxt/mjKfI97z.js +++ b/_nuxt/DYbY-O0Y.js @@ -1 +1 @@ -import{u as o}from"./BtUAytV1.js";import{_ as a,o as s,c as i,a as e,t as r,p as u,f as l}from"./DCQ65ZuQ.js";const c=t=>(u("data-v-6fdef64d"),t=t(),l(),t),d={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},p=c(()=>e("div",{class:"fixed -bottom-1/2 left-0 right-0 h-1/2 spotlight"},null,-1)),f={class:"max-w-520px text-center"},h=["textContent"],g=["textContent"],b={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const n=t;return o({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[],style:[{children:'*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(m,x)=>(s(),i("div",d,[p,e("div",f,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:r(t.statusCode)},null,8,h),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:r(t.description)},null,8,g)])]))}},w=a(b,[["__scopeId","data-v-6fdef64d"]]);export{w as default}; +import{u as o}from"./tIvUuwzM.js";import{_ as a,o as s,c as i,a as e,t as r,p as u,f as l}from"./LCLGvLsE.js";const c=t=>(u("data-v-6fdef64d"),t=t(),l(),t),d={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},p=c(()=>e("div",{class:"fixed -bottom-1/2 left-0 right-0 h-1/2 spotlight"},null,-1)),f={class:"max-w-520px text-center"},h=["textContent"],g=["textContent"],b={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const n=t;return o({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[],style:[{children:'*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(m,x)=>(s(),i("div",d,[p,e("div",f,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:r(t.statusCode)},null,8,h),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:r(t.description)},null,8,g)])]))}},w=a(b,[["__scopeId","data-v-6fdef64d"]]);export{w as default}; diff --git a/_nuxt/BD3ivV8j.js b/_nuxt/DZjJAkRf.js similarity index 65% rename from _nuxt/BD3ivV8j.js rename to _nuxt/DZjJAkRf.js index eca90165..098ea96a 100644 --- a/_nuxt/BD3ivV8j.js +++ b/_nuxt/DZjJAkRf.js @@ -1 +1 @@ -import{_ as o,o as r,c as t,ad as a}from"./DCQ65ZuQ.js";const s={};function c(e,n){return r(),t("thead",null,[a(e.$slots,"default")])}const d=o(s,[["render",c]]);export{d as default}; +import{_ as o,o as r,c as t,ad as a}from"./LCLGvLsE.js";const s={};function c(e,n){return r(),t("thead",null,[a(e.$slots,"default")])}const d=o(s,[["render",c]]);export{d as default}; diff --git a/_nuxt/COVmoRWc.js b/_nuxt/Dgm6rCDZ.js similarity index 99% rename from _nuxt/COVmoRWc.js rename to _nuxt/Dgm6rCDZ.js index 015248a6..85f67105 100644 --- a/_nuxt/COVmoRWc.js +++ b/_nuxt/Dgm6rCDZ.js @@ -1 +1 @@ -import{g as z,A as J,a6 as G,k as x,s as E,a7 as Q,a8 as _,a9 as w,aa as nn,h as ln,ab as en,ac as on,o as tn,C as rn,z as an}from"./DCQ65ZuQ.js";class S{constructor(l,o,t){this.property=l,this.normal=o,t&&(this.space=t)}}S.prototype.property={};S.prototype.normal={};S.prototype.space=null;function I(n,l){const o={},t={};let r=-1;for(;++r4&&o.slice(0,4)==="data"&&dn.test(l)){if(l.charAt(4)==="-"){const a=l.slice(5).replace(U,fn);t="data"+a.charAt(0).toUpperCase()+a.slice(1)}else{const a=l.slice(4);if(!U.test(a)){let i=a.replace(gn,mn);i.charAt(0)!=="-"&&(i="-"+i),l="data"+i}}r=R}return new r(t,l)}function mn(n){return"-"+n.toLowerCase()}function fn(n){return n.charAt(1).toUpperCase()}const yn=I([H,F,q,W,cn],"html");I([H,F,q,W,pn],"svg");const T=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"],M="default",K=/^@|^v-on:/,X=/^:|^v-bind:/,Y=/^v-model/,vn=["select","textarea","input"],bn=Object.fromEntries(["p","a","blockquote","code","pre","code","em","h1","h2","h3","h4","h5","h6","hr","img","ul","ol","li","strong","table","thead","tbody","td","th","tr","script"].map(n=>[n,`prose-${n}`])),kn=z({name:"MDCRenderer",props:{body:{type:Object,required:!0},data:{type:Object,default:()=>({})},tag:{type:[String,Boolean],default:void 0},prose:{type:Boolean,default:void 0},components:{type:Object,default:()=>({})}},async setup(n){var r,a;const{mdc:l}=J().public,o={...l.components.prose&&n.prose!==!1?bn:{},...l.components.map,...G(((a=(r=n.data)==null?void 0:r.mdc)==null?void 0:a.components)||{}),...n.components},t=x(()=>{var s;const i=(((s=n.body)==null?void 0:s.children)||[]).map(c=>c.tag||c.type).filter(c=>!T.includes(c));return Array.from(new Set(i)).sort().join(".")});return await Tn(n.body,{tags:o}),{tags:o,contentKey:t}},render(n){var h,y,d;const{tags:l,tag:o,body:t,data:r,contentKey:a}=n;if(!t)return null;const i={...r,tags:l},s=o!==!1?A(o||((h=i.component)==null?void 0:h.name)||i.component||"div"):void 0,c=$(t,E,i,i);return s?E(s,{...(y=i.component)==null?void 0:y.props,...this.$attrs,key:a},c):(d=c.default)==null?void 0:d.call(c)}});function Cn(n,l,o,t={}){if(n.type==="text")return l(w,n.value);const r=n.tag,a=Z(n,o.tags);if(n.tag==="binding")return Sn(n,l,o,t);const i=A(a);typeof i=="object"&&(i.tag=r);const s=xn(n,o);return l(i,s,$(n,l,o,{...t,...s}))}function Sn(n,l,o,t={}){var h,y;const r={...t,$route:()=>ln(),$document:o,$doc:o},a=/\.|\[(\d+)\]/,s=((h=n.props)==null?void 0:h.value.trim().split(a).filter(Boolean)).reduce((d,b)=>b in d?typeof d[b]=="function"?d[b]():d[b]:{},r),c=(y=n.props)==null?void 0:y.defaultValue;return l(w,s??c??"")}function $(n,l,o,t){const a=(n.children||[]).reduce((s,c)=>{if(!Mn(c))return s[M].push(c),s;const h=Ln(c);return s[h]=s[h]||[],c.type==="element"&&s[h].push(...c.children||[]),s},{[M]:[]});return Object.entries(a).reduce((s,[c,h])=>(h.length&&(s[c]=()=>{const y=h.map(d=>Cn(d,l,o,t));return Rn(y)}),s),{})}function xn(n,l){const{tag:o="",props:t={}}=n;return Object.keys(t).reduce(function(r,a){if(a==="__ignoreMap")return r;const i=t[a];if(Y.test(a)&&!vn.includes(o))return wn(a,i,r,l);if(a==="v-bind")return Pn(a,i,r,l);if(K.test(a))return On(a,i,r,l);if(X.test(a))return Dn(a,i,r,l);const{attribute:s}=hn(yn,a);return Array.isArray(i)&&i.every(c=>typeof c=="string")?(r[s]=i.join(" "),r):(r[s]=i,r)},{})}function wn(n,l,o,t){const r=d=>+d,a=d=>d.trim(),i=d=>d,s=n.replace(Y,"").split(".").filter(d=>d).reduce((d,b)=>(d[b]=!0,d),{}),c="value",h=s.lazy?"change":"input",y=s.number?r:s.trim?a:i;return o[c]=P(l,t),o.on=o.on||{},o.on[h]=d=>t[l]=y(d),o}function Pn(n,l,o,t){const r=P(l,t);return o=Object.assign(o,r),o}function On(n,l,o,t){return n=n.replace(K,""),o.on=o.on||{},o.on[n]=()=>P(l,t),o}function Dn(n,l,o,t){return n=n.replace(X,""),o[n]=P(l,t),o}const A=n=>{if(!T.includes(n)&&!(n!=null&&n.render)){const l=Q(_(n),!1);if(typeof l=="object")return l}return n};function P(n,l){const o=n.split(".").reduce((t,r)=>typeof t=="object"?t[r]:void 0,l);return typeof o>"u"?en(n):o}function Ln(n){let l="";for(const o of Object.keys(n.props||{}))if(!(!o.startsWith("#")&&!o.startsWith("v-slot:"))){l=o.split(/[:#]/,2)[1];break}return l||M}function Mn(n){return n.tag==="template"}function Rn(n){const l=[];for(const o of n){const t=l[l.length-1];o.type===w&&(t==null?void 0:t.type)===w?t.children=t.children+o.children:l.push(o)}return l}async function Tn(n,l){if(!n)return;const o=Array.from(new Set(t(n,l)));await Promise.all(o.map(async r=>{if(r!=null&&r.render||r!=null&&r.ssrRender||r!=null&&r.__ssrInlineRender)return;const a=A(r);a!=null&&a.__asyncLoader&&!a.__asyncResolved&&await a.__asyncLoader()}));function t(r,a){const i=r.tag;if(r.type==="text"||i==="binding")return[];const s=Z(r,a.tags),c=[];r.type!=="root"&&!T.includes(s)&&c.push(s);for(const h of r.children||[])c.push(...t(h,a));return c}}function Z(n,l){var t;const o=n.tag;return!o||typeof((t=n.props)==null?void 0:t.__ignoreMap)<"u"?o:l[o]||l[_(o)]||l[nn(n.tag)]||o}const An=kn,Bn=z({__name:"ContentRendererMarkdown",props:{value:{type:Object,required:!0},excerpt:{type:Boolean,default:!1},tag:{type:String,default:"div"},components:{type:Object,default:()=>({})},data:{type:Object,default:()=>({})}},setup(n){const l=n,o=on().isEnabled(),t=x(()=>{let i=l.value.body||l.value;return l.excerpt&&l.value.excerpt&&(i=l.value.excerpt),i}),r=x(()=>{const{body:i,excerpt:s,...c}=l.value;return{...c,...l.data}}),a=x(()=>({...l.components,...r.value._components||{}}));return(i,s)=>{const c=An;return tn(),rn(c,{body:t.value,data:r.value,tag:n.tag,components:a.value,"data-content-id":an(o)?n.value._id:void 0},null,8,["body","data","tag","components","data-content-id"])}}});export{Bn as _}; +import{g as z,A as J,a6 as G,k as x,s as E,a7 as Q,a8 as _,a9 as w,aa as nn,h as ln,ab as en,ac as on,o as tn,C as rn,z as an}from"./LCLGvLsE.js";class S{constructor(l,o,t){this.property=l,this.normal=o,t&&(this.space=t)}}S.prototype.property={};S.prototype.normal={};S.prototype.space=null;function I(n,l){const o={},t={};let r=-1;for(;++r4&&o.slice(0,4)==="data"&&dn.test(l)){if(l.charAt(4)==="-"){const a=l.slice(5).replace(U,fn);t="data"+a.charAt(0).toUpperCase()+a.slice(1)}else{const a=l.slice(4);if(!U.test(a)){let i=a.replace(gn,mn);i.charAt(0)!=="-"&&(i="-"+i),l="data"+i}}r=R}return new r(t,l)}function mn(n){return"-"+n.toLowerCase()}function fn(n){return n.charAt(1).toUpperCase()}const yn=I([H,F,q,W,cn],"html");I([H,F,q,W,pn],"svg");const T=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"],M="default",K=/^@|^v-on:/,X=/^:|^v-bind:/,Y=/^v-model/,vn=["select","textarea","input"],bn=Object.fromEntries(["p","a","blockquote","code","pre","code","em","h1","h2","h3","h4","h5","h6","hr","img","ul","ol","li","strong","table","thead","tbody","td","th","tr","script"].map(n=>[n,`prose-${n}`])),kn=z({name:"MDCRenderer",props:{body:{type:Object,required:!0},data:{type:Object,default:()=>({})},tag:{type:[String,Boolean],default:void 0},prose:{type:Boolean,default:void 0},components:{type:Object,default:()=>({})}},async setup(n){var r,a;const{mdc:l}=J().public,o={...l.components.prose&&n.prose!==!1?bn:{},...l.components.map,...G(((a=(r=n.data)==null?void 0:r.mdc)==null?void 0:a.components)||{}),...n.components},t=x(()=>{var s;const i=(((s=n.body)==null?void 0:s.children)||[]).map(c=>c.tag||c.type).filter(c=>!T.includes(c));return Array.from(new Set(i)).sort().join(".")});return await Tn(n.body,{tags:o}),{tags:o,contentKey:t}},render(n){var h,y,d;const{tags:l,tag:o,body:t,data:r,contentKey:a}=n;if(!t)return null;const i={...r,tags:l},s=o!==!1?A(o||((h=i.component)==null?void 0:h.name)||i.component||"div"):void 0,c=$(t,E,i,i);return s?E(s,{...(y=i.component)==null?void 0:y.props,...this.$attrs,key:a},c):(d=c.default)==null?void 0:d.call(c)}});function Cn(n,l,o,t={}){if(n.type==="text")return l(w,n.value);const r=n.tag,a=Z(n,o.tags);if(n.tag==="binding")return Sn(n,l,o,t);const i=A(a);typeof i=="object"&&(i.tag=r);const s=xn(n,o);return l(i,s,$(n,l,o,{...t,...s}))}function Sn(n,l,o,t={}){var h,y;const r={...t,$route:()=>ln(),$document:o,$doc:o},a=/\.|\[(\d+)\]/,s=((h=n.props)==null?void 0:h.value.trim().split(a).filter(Boolean)).reduce((d,b)=>b in d?typeof d[b]=="function"?d[b]():d[b]:{},r),c=(y=n.props)==null?void 0:y.defaultValue;return l(w,s??c??"")}function $(n,l,o,t){const a=(n.children||[]).reduce((s,c)=>{if(!Mn(c))return s[M].push(c),s;const h=Ln(c);return s[h]=s[h]||[],c.type==="element"&&s[h].push(...c.children||[]),s},{[M]:[]});return Object.entries(a).reduce((s,[c,h])=>(h.length&&(s[c]=()=>{const y=h.map(d=>Cn(d,l,o,t));return Rn(y)}),s),{})}function xn(n,l){const{tag:o="",props:t={}}=n;return Object.keys(t).reduce(function(r,a){if(a==="__ignoreMap")return r;const i=t[a];if(Y.test(a)&&!vn.includes(o))return wn(a,i,r,l);if(a==="v-bind")return Pn(a,i,r,l);if(K.test(a))return On(a,i,r,l);if(X.test(a))return Dn(a,i,r,l);const{attribute:s}=hn(yn,a);return Array.isArray(i)&&i.every(c=>typeof c=="string")?(r[s]=i.join(" "),r):(r[s]=i,r)},{})}function wn(n,l,o,t){const r=d=>+d,a=d=>d.trim(),i=d=>d,s=n.replace(Y,"").split(".").filter(d=>d).reduce((d,b)=>(d[b]=!0,d),{}),c="value",h=s.lazy?"change":"input",y=s.number?r:s.trim?a:i;return o[c]=P(l,t),o.on=o.on||{},o.on[h]=d=>t[l]=y(d),o}function Pn(n,l,o,t){const r=P(l,t);return o=Object.assign(o,r),o}function On(n,l,o,t){return n=n.replace(K,""),o.on=o.on||{},o.on[n]=()=>P(l,t),o}function Dn(n,l,o,t){return n=n.replace(X,""),o[n]=P(l,t),o}const A=n=>{if(!T.includes(n)&&!(n!=null&&n.render)){const l=Q(_(n),!1);if(typeof l=="object")return l}return n};function P(n,l){const o=n.split(".").reduce((t,r)=>typeof t=="object"?t[r]:void 0,l);return typeof o>"u"?en(n):o}function Ln(n){let l="";for(const o of Object.keys(n.props||{}))if(!(!o.startsWith("#")&&!o.startsWith("v-slot:"))){l=o.split(/[:#]/,2)[1];break}return l||M}function Mn(n){return n.tag==="template"}function Rn(n){const l=[];for(const o of n){const t=l[l.length-1];o.type===w&&(t==null?void 0:t.type)===w?t.children=t.children+o.children:l.push(o)}return l}async function Tn(n,l){if(!n)return;const o=Array.from(new Set(t(n,l)));await Promise.all(o.map(async r=>{if(r!=null&&r.render||r!=null&&r.ssrRender||r!=null&&r.__ssrInlineRender)return;const a=A(r);a!=null&&a.__asyncLoader&&!a.__asyncResolved&&await a.__asyncLoader()}));function t(r,a){const i=r.tag;if(r.type==="text"||i==="binding")return[];const s=Z(r,a.tags),c=[];r.type!=="root"&&!T.includes(s)&&c.push(s);for(const h of r.children||[])c.push(...t(h,a));return c}}function Z(n,l){var t;const o=n.tag;return!o||typeof((t=n.props)==null?void 0:t.__ignoreMap)<"u"?o:l[o]||l[_(o)]||l[nn(n.tag)]||o}const An=kn,Bn=z({__name:"ContentRendererMarkdown",props:{value:{type:Object,required:!0},excerpt:{type:Boolean,default:!1},tag:{type:String,default:"div"},components:{type:Object,default:()=>({})},data:{type:Object,default:()=>({})}},setup(n){const l=n,o=on().isEnabled(),t=x(()=>{let i=l.value.body||l.value;return l.excerpt&&l.value.excerpt&&(i=l.value.excerpt),i}),r=x(()=>{const{body:i,excerpt:s,...c}=l.value;return{...c,...l.data}}),a=x(()=>({...l.components,...r.value._components||{}}));return(i,s)=>{const c=An;return tn(),rn(c,{body:t.value,data:r.value,tag:n.tag,components:a.value,"data-content-id":an(o)?n.value._id:void 0},null,8,["body","data","tag","components","data-content-id"])}}});export{Bn as _}; diff --git a/_nuxt/5FOXgD99.js b/_nuxt/DkeyjNz2.js similarity index 88% rename from _nuxt/5FOXgD99.js rename to _nuxt/DkeyjNz2.js index 271d8ec8..756dc7e7 100644 --- a/_nuxt/5FOXgD99.js +++ b/_nuxt/DkeyjNz2.js @@ -1 +1 @@ -import k from"./D-99yswp.js";import P from"./D18jxc4x.js";import b from"./BucyQ5gi.js";import{u as L,g as f,i as g,P as C,h as R,j as x,k as B,r as S,l as j,m,n as T,q as A,s as p,v as E,x as N,S as H,T as O,y as w,L as D,z as u,A as $,B as q,o as d,c as z,b as y,w as _,C as v}from"./DCQ65ZuQ.js";import{u as F}from"./sFyta7Xq.js";import"./COVmoRWc.js";import"./BtUAytV1.js";const I=f({name:"LayoutLoader",inheritAttrs:!1,props:{name:String,layoutProps:Object},async setup(t,n){const e=await m[t.name]().then(o=>o.default||o);return()=>p(e,t.layoutProps,n.slots)}}),M=f({name:"NuxtLayout",inheritAttrs:!1,props:{name:{type:[String,Boolean,Object],default:null},fallback:{type:[String,Object],default:null}},setup(t,n){const e=L(),o=g(C),s=o===R()?x():o,r=B(()=>{let a=u(t.name)??s.meta.layout??"default";return a&&!(a in m)&&t.fallback&&(a=u(t.fallback)),a}),i=S();n.expose({layoutRef:i});const l=e.deferHydration();if(e.isHydrating){const a=e.hooks.hookOnce("app:error",l);j().beforeEach(a)}return()=>{const a=r.value&&r.value in m,c=s.meta.layoutTransition??T;return A(O,a&&c,{default:()=>p(H,{suspensible:!0,onResolve:()=>{N(l)}},{default:()=>p(V,{layoutProps:E(n.attrs,{ref:i}),key:r.value||void 0,name:r.value,shouldProvide:!t.name,hasTransition:!!c},n.slots)})}).default()}}}),V=f({name:"NuxtLayoutProvider",inheritAttrs:!1,props:{name:{type:[String,Boolean]},layoutProps:{type:Object},hasTransition:{type:Boolean},shouldProvide:{type:Boolean}},setup(t,n){const e=t.name;return t.shouldProvide&&w(D,{isCurrent:o=>e===(o.meta.layout??"default")}),()=>{var o,s;return!e||typeof e=="string"&&!(e in m)?(s=(o=n.slots).default)==null?void 0:s.call(o):p(I,{key:e,layoutProps:t.layoutProps,name:e},n.slots)}}}),G={class:"document-driven-page"},Z=f({__name:"document-driven",setup(t){const{contentHead:n}=$().public.content,{page:e,layout:o}=q();return e.value,n&&F(e),(s,r)=>{const i=k,l=P,a=b,c=M;return d(),z("div",G,[y(c,{name:u(o)||"default"},{default:_(()=>[u(e)?(d(),v(l,{key:u(e)._id,value:u(e)},{empty:_(({value:h})=>[y(i,{value:h},null,8,["value"])]),_:1},8,["value"])):(d(),v(a,{key:1}))]),_:1},8,["name"])])}}});export{Z as default}; +import k from"./C49RwB7F.js";import P from"./CVF0_ZUn.js";import b from"./CSRjDKbk.js";import{u as L,g as f,i as g,P as C,h as R,j as x,k as B,r as S,l as j,m,n as T,q as A,s as p,v as E,x as N,S as H,T as O,y as w,L as D,z as u,A as $,B as q,o as d,c as z,b as y,w as _,C as v}from"./LCLGvLsE.js";import{u as F}from"./D031i5cu.js";import"./Dgm6rCDZ.js";import"./tIvUuwzM.js";const I=f({name:"LayoutLoader",inheritAttrs:!1,props:{name:String,layoutProps:Object},async setup(t,n){const e=await m[t.name]().then(o=>o.default||o);return()=>p(e,t.layoutProps,n.slots)}}),M=f({name:"NuxtLayout",inheritAttrs:!1,props:{name:{type:[String,Boolean,Object],default:null},fallback:{type:[String,Object],default:null}},setup(t,n){const e=L(),o=g(C),s=o===R()?x():o,r=B(()=>{let a=u(t.name)??s.meta.layout??"default";return a&&!(a in m)&&t.fallback&&(a=u(t.fallback)),a}),i=S();n.expose({layoutRef:i});const l=e.deferHydration();if(e.isHydrating){const a=e.hooks.hookOnce("app:error",l);j().beforeEach(a)}return()=>{const a=r.value&&r.value in m,c=s.meta.layoutTransition??T;return A(O,a&&c,{default:()=>p(H,{suspensible:!0,onResolve:()=>{N(l)}},{default:()=>p(V,{layoutProps:E(n.attrs,{ref:i}),key:r.value||void 0,name:r.value,shouldProvide:!t.name,hasTransition:!!c},n.slots)})}).default()}}}),V=f({name:"NuxtLayoutProvider",inheritAttrs:!1,props:{name:{type:[String,Boolean]},layoutProps:{type:Object},hasTransition:{type:Boolean},shouldProvide:{type:Boolean}},setup(t,n){const e=t.name;return t.shouldProvide&&w(D,{isCurrent:o=>e===(o.meta.layout??"default")}),()=>{var o,s;return!e||typeof e=="string"&&!(e in m)?(s=(o=n.slots).default)==null?void 0:s.call(o):p(I,{key:e,layoutProps:t.layoutProps,name:e},n.slots)}}}),G={class:"document-driven-page"},Z=f({__name:"document-driven",setup(t){const{contentHead:n}=$().public.content,{page:e,layout:o}=q();return e.value,n&&F(e),(s,r)=>{const i=k,l=P,a=b,c=M;return d(),z("div",G,[y(c,{name:u(o)||"default"},{default:_(()=>[u(e)?(d(),v(l,{key:u(e)._id,value:u(e)},{empty:_(({value:h})=>[y(i,{value:h},null,8,["value"])]),_:1},8,["value"])):(d(),v(a,{key:1}))]),_:1},8,["name"])])}}});export{Z as default}; diff --git a/_nuxt/CYdyMkrt.js b/_nuxt/DwB7O9Nt.js similarity index 64% rename from _nuxt/CYdyMkrt.js rename to _nuxt/DwB7O9Nt.js index 00bb4c49..2c3fc610 100644 --- a/_nuxt/CYdyMkrt.js +++ b/_nuxt/DwB7O9Nt.js @@ -1 +1 @@ -import{_ as o,o as r,c as t,ad as s}from"./DCQ65ZuQ.js";const c={};function n(e,a){return r(),t("th",null,[s(e.$slots,"default")])}const _=o(c,[["render",n]]);export{_ as default}; +import{_ as o,o as r,c as t,ad as s}from"./LCLGvLsE.js";const c={};function n(e,a){return r(),t("th",null,[s(e.$slots,"default")])}const _=o(c,[["render",n]]);export{_ as default}; diff --git a/_nuxt/Dc0b9Idc.js b/_nuxt/Dz1cAOXu.js similarity index 82% rename from _nuxt/Dc0b9Idc.js rename to _nuxt/Dz1cAOXu.js index 3e444060..14fa100e 100644 --- a/_nuxt/Dc0b9Idc.js +++ b/_nuxt/Dz1cAOXu.js @@ -1 +1 @@ -import{_ as l}from"./Bd7xMkGn.js";import{g as n,o as s,C as i,w as o,a as r,ae as g,af as u,ad as f}from"./DCQ65ZuQ.js";const h=n({__name:"ProsePre",props:{code:{type:String,default:""},language:{type:String,default:null},filename:{type:String,default:null},highlights:{type:Array,default:()=>[]},meta:{type:String,default:null},class:{type:String,default:null},style:{type:[String,Object],default:null}},setup(e){return(a,d)=>{const t=l;return s(),i(t,{code:e.code,language:e.language,filename:e.filename,highlights:e.highlights,meta:e.meta},{default:o(()=>[r("pre",{class:g(a.$props.class),style:u(e.style)},[f(a.$slots,"default")],6)]),_:3},8,["code","language","filename","highlights","meta"])}}});export{h as default}; +import{_ as l}from"./CXw4cyZj.js";import{g as n,o as s,C as i,w as o,a as r,ae as g,af as u,ad as f}from"./LCLGvLsE.js";const h=n({__name:"ProsePre",props:{code:{type:String,default:""},language:{type:String,default:null},filename:{type:String,default:null},highlights:{type:Array,default:()=>[]},meta:{type:String,default:null},class:{type:String,default:null},style:{type:[String,Object],default:null}},setup(e){return(a,d)=>{const t=l;return s(),i(t,{code:e.code,language:e.language,filename:e.filename,highlights:e.highlights,meta:e.meta},{default:o(()=>[r("pre",{class:g(a.$props.class),style:u(e.style)},[f(a.$slots,"default")],6)]),_:3},8,["code","language","filename","highlights","meta"])}}});export{h as default}; diff --git a/_nuxt/dpI3ZOQe.js b/_nuxt/EoVG4rqH.js similarity index 85% rename from _nuxt/dpI3ZOQe.js rename to _nuxt/EoVG4rqH.js index dab25dde..69e2aa5f 100644 --- a/_nuxt/dpI3ZOQe.js +++ b/_nuxt/EoVG4rqH.js @@ -1 +1 @@ -import{g as i,A as c,k as p,o as s,c as n,z as u,ad as t}from"./DCQ65ZuQ.js";const f=["id"],l=["href"],k=i({__name:"ProseH2",props:{id:{}},setup(a){const r=a,{headings:o}=c().public.mdc,d=p(()=>{var e;return r.id&&((e=o==null?void 0:o.anchorLinks)==null?void 0:e.h2)});return(e,m)=>(s(),n("h2",{id:e.id},[e.id&&u(d)?(s(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; +import{g as i,A as c,k as p,o as s,c as n,z as u,ad as t}from"./LCLGvLsE.js";const f=["id"],l=["href"],k=i({__name:"ProseH2",props:{id:{}},setup(a){const r=a,{headings:o}=c().public.mdc,d=p(()=>{var e;return r.id&&((e=o==null?void 0:o.anchorLinks)==null?void 0:e.h2)});return(e,m)=>(s(),n("h2",{id:e.id},[e.id&&u(d)?(s(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; diff --git a/_nuxt/D2VvGIaI.js b/_nuxt/EpcERS4a.js similarity index 86% rename from _nuxt/D2VvGIaI.js rename to _nuxt/EpcERS4a.js index c11fab66..f9f33aa0 100644 --- a/_nuxt/D2VvGIaI.js +++ b/_nuxt/EpcERS4a.js @@ -1 +1 @@ -import{g,A as C,O as v,Q as D,h as w,s as o,R as _}from"./DCQ65ZuQ.js";import{u as d}from"./sFyta7Xq.js";import S from"./D18jxc4x.js";import"./BtUAytV1.js";import"./COVmoRWc.js";const q=g({name:"ContentDoc",props:{tag:{type:String,required:!1,default:"div"},excerpt:{type:Boolean,default:!1},path:{type:String,required:!1,default:void 0},query:{type:Object,required:!1,default:void 0},head:{type:Boolean,required:!1,default:void 0}},render(f){const{contentHead:c}=C().public.content,e=v(),{tag:m,excerpt:a,path:s,query:i,head:r}=f,u=r===void 0?c:r,l={...i||{},path:s||(i==null?void 0:i.path)||D(w().path),find:"one"},h=(t,n)=>o("pre",null,JSON.stringify({message:"You should use slots with ",slot:t,data:n},null,2));return o(_,l,{default:e!=null&&e.default?({data:t,refresh:n,isPartial:y})=>{var p;return u&&d(t),(p=e.default)==null?void 0:p.call(e,{doc:t,refresh:n,isPartial:y,excerpt:a,...this.$attrs})}:({data:t})=>(u&&d(t),o(S,{value:t,excerpt:a,tag:m,...this.$attrs},{empty:n=>e!=null&&e.empty?e.empty(n):h("default",t)})),empty:t=>{var n;return((n=e==null?void 0:e.empty)==null?void 0:n.call(e,t))||o("p",null,"Document is empty, overwrite this content with #empty slot in .")},"not-found":t=>{var n;return((n=e==null?void 0:e["not-found"])==null?void 0:n.call(e,t))||o("p",null,"Document not found, overwrite this content with #not-found slot in .")}})}}),b=q;export{b as default}; +import{g,A as C,O as v,Q as D,h as w,s as o,R as _}from"./LCLGvLsE.js";import{u as d}from"./D031i5cu.js";import S from"./CVF0_ZUn.js";import"./tIvUuwzM.js";import"./Dgm6rCDZ.js";const q=g({name:"ContentDoc",props:{tag:{type:String,required:!1,default:"div"},excerpt:{type:Boolean,default:!1},path:{type:String,required:!1,default:void 0},query:{type:Object,required:!1,default:void 0},head:{type:Boolean,required:!1,default:void 0}},render(f){const{contentHead:c}=C().public.content,e=v(),{tag:m,excerpt:a,path:s,query:i,head:r}=f,u=r===void 0?c:r,l={...i||{},path:s||(i==null?void 0:i.path)||D(w().path),find:"one"},h=(t,n)=>o("pre",null,JSON.stringify({message:"You should use slots with ",slot:t,data:n},null,2));return o(_,l,{default:e!=null&&e.default?({data:t,refresh:n,isPartial:y})=>{var p;return u&&d(t),(p=e.default)==null?void 0:p.call(e,{doc:t,refresh:n,isPartial:y,excerpt:a,...this.$attrs})}:({data:t})=>(u&&d(t),o(S,{value:t,excerpt:a,tag:m,...this.$attrs},{empty:n=>e!=null&&e.empty?e.empty(n):h("default",t)})),empty:t=>{var n;return((n=e==null?void 0:e.empty)==null?void 0:n.call(e,t))||o("p",null,"Document is empty, overwrite this content with #empty slot in .")},"not-found":t=>{var n;return((n=e==null?void 0:e["not-found"])==null?void 0:n.call(e,t))||o("p",null,"Document not found, overwrite this content with #not-found slot in .")}})}}),b=q;export{b as default}; diff --git a/_nuxt/CtWy9qbC.js b/_nuxt/Fc95O8bf.js similarity index 85% rename from _nuxt/CtWy9qbC.js rename to _nuxt/Fc95O8bf.js index af12b5a5..b2658c01 100644 --- a/_nuxt/CtWy9qbC.js +++ b/_nuxt/Fc95O8bf.js @@ -1 +1 @@ -import{g as i,A as c,k as p,o as s,c as n,z as u,ad as t}from"./DCQ65ZuQ.js";const f=["id"],l=["href"],k=i({__name:"ProseH3",props:{id:{}},setup(a){const r=a,{headings:o}=c().public.mdc,d=p(()=>{var e;return r.id&&((e=o==null?void 0:o.anchorLinks)==null?void 0:e.h3)});return(e,m)=>(s(),n("h3",{id:e.id},[e.id&&u(d)?(s(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; +import{g as i,A as c,k as p,o as s,c as n,z as u,ad as t}from"./LCLGvLsE.js";const f=["id"],l=["href"],k=i({__name:"ProseH3",props:{id:{}},setup(a){const r=a,{headings:o}=c().public.mdc,d=p(()=>{var e;return r.id&&((e=o==null?void 0:o.anchorLinks)==null?void 0:e.h3)});return(e,m)=>(s(),n("h3",{id:e.id},[e.id&&u(d)?(s(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; diff --git a/_nuxt/tvGjYoxK.js b/_nuxt/Ga6hsoRA.js similarity index 84% rename from _nuxt/tvGjYoxK.js rename to _nuxt/Ga6hsoRA.js index 8a40eae5..fc9f1cc9 100644 --- a/_nuxt/tvGjYoxK.js +++ b/_nuxt/Ga6hsoRA.js @@ -1 +1 @@ -import y from"./D2VvGIaI.js";import{G as c,g as m,h as u,H as w,I as v,o as e,c as t,F as b,D as k,b as n,w as x,a as r,J as C,t as f,z as h,e as B,K as S}from"./DCQ65ZuQ.js";import"./sFyta7Xq.js";import"./BtUAytV1.js";import"./D18jxc4x.js";import"./COVmoRWc.js";const $=c("/icons/info.svg"),N=c("/icons/exercise.svg"),D=c("/icons/reading.svg"),L=c("/icons/presentation.svg"),P={class:"flex no-wrap text-left ml-20"},V={class:"text-2xl px-1.5 py-3 content-center flex-none rounded-bl-xl bg-eScienceYellow"},A={key:0,src:$,width:"25"},F={key:1,src:N,width:"25"},R={key:2,src:D,width:"25"},q={key:3,src:L,width:"25"},z={class:"p-4 flex-initial text-lg font-display font-semibold rounded-tr-xl bg-eScienceBlue bg-opacity-10 text-eSciencePurple hover:bg-eScienceWhite hover:text-eScienceBlue"},E=m({__name:"ChapterBar",async setup(g){let s,i;const l=u(),_=([s,i]=w(()=>v("/modules/"+l.params.module+"/").sort({order:1,$numeric:!0}).find()),s=await s,i(),s);return(a,p)=>{const d=B;return e(),t("div",P,[(e(!0),t(b,null,k(h(_),o=>(e(),t("div",{key:o._path},[n(d,{to:o._path,role:"button",class:"flex max-h-20 m-4"},{default:x(()=>[r("div",V,[o.type==="info"?(e(),t("img",A)):o.type==="exercise"?(e(),t("img",F)):o.type==="reading"?(e(),t("img",R)):o.type==="slides"?(e(),t("img",q)):C("",!0)]),r("div",z,f(o.title),1)]),_:2},1032,["to"])]))),128))])}}}),G={class:"flex flex-col h-full w-full p-5"},H={class:"prose-2xl font-display mx-16 font-bold text-eSciencePurple w-full pl-2"},Y=m({__name:"[module]",setup(g){const s=u();return(i,l)=>{const _=y,a=E,p=S;return e(),t("div",G,[n(_,null,{default:x(({doc:d})=>[r("h2",H," Module: "+f(h(s).params.module),1)]),_:1}),n(a),n(p)])}}});export{Y as default}; +import y from"./EpcERS4a.js";import{G as c,g as m,h as u,H as w,I as v,o as e,c as t,F as b,D as k,b as n,w as x,a as r,J as C,t as f,z as h,e as B,K as S}from"./LCLGvLsE.js";import"./D031i5cu.js";import"./tIvUuwzM.js";import"./CVF0_ZUn.js";import"./Dgm6rCDZ.js";const $=c("/icons/info.svg"),N=c("/icons/exercise.svg"),D=c("/icons/reading.svg"),L=c("/icons/presentation.svg"),P={class:"flex no-wrap text-left ml-20"},V={class:"text-2xl px-1.5 py-3 content-center flex-none rounded-bl-xl bg-eScienceYellow"},A={key:0,src:$,width:"25"},F={key:1,src:N,width:"25"},R={key:2,src:D,width:"25"},q={key:3,src:L,width:"25"},z={class:"p-4 flex-initial text-lg font-display font-semibold rounded-tr-xl bg-eScienceBlue bg-opacity-10 text-eSciencePurple hover:bg-eScienceWhite hover:text-eScienceBlue"},E=m({__name:"ChapterBar",async setup(g){let s,i;const l=u(),_=([s,i]=w(()=>v("/modules/"+l.params.module+"/").sort({order:1,$numeric:!0}).find()),s=await s,i(),s);return(a,p)=>{const d=B;return e(),t("div",P,[(e(!0),t(b,null,k(h(_),o=>(e(),t("div",{key:o._path},[n(d,{to:o._path,role:"button",class:"flex max-h-20 m-4"},{default:x(()=>[r("div",V,[o.type==="info"?(e(),t("img",A)):o.type==="exercise"?(e(),t("img",F)):o.type==="reading"?(e(),t("img",R)):o.type==="slides"?(e(),t("img",q)):C("",!0)]),r("div",z,f(o.title),1)]),_:2},1032,["to"])]))),128))])}}}),G={class:"flex flex-col h-full w-full p-5"},H={class:"prose-2xl font-display mx-16 font-bold text-eSciencePurple w-full pl-2"},Y=m({__name:"[module]",setup(g){const s=u();return(i,l)=>{const _=y,a=E,p=S;return e(),t("div",G,[n(_,null,{default:x(({doc:d})=>[r("h2",H," Module: "+f(h(s).params.module),1)]),_:1}),n(a),n(p)])}}});export{Y as default}; diff --git a/_nuxt/D6b-zaqQ.js b/_nuxt/Knxihn3T.js similarity index 85% rename from _nuxt/D6b-zaqQ.js rename to _nuxt/Knxihn3T.js index bd34378f..6f1cf841 100644 --- a/_nuxt/D6b-zaqQ.js +++ b/_nuxt/Knxihn3T.js @@ -1 +1 @@ -import{g as c,A as i,k as p,o as s,c as t,z as u,ad as n}from"./DCQ65ZuQ.js";const f=["id"],l=["href"],k=c({__name:"ProseH1",props:{id:{}},setup(a){const r=a,{headings:o}=i().public.mdc,d=p(()=>{var e;return r.id&&((e=o==null?void 0:o.anchorLinks)==null?void 0:e.h1)});return(e,m)=>(s(),t("h1",{id:e.id},[u(d)?(s(),t("a",{key:0,href:`#${e.id}`},[n(e.$slots,"default")],8,l)):n(e.$slots,"default",{key:1})],8,f))}});export{k as default}; +import{g as c,A as i,k as p,o as s,c as t,z as u,ad as n}from"./LCLGvLsE.js";const f=["id"],l=["href"],k=c({__name:"ProseH1",props:{id:{}},setup(a){const r=a,{headings:o}=i().public.mdc,d=p(()=>{var e;return r.id&&((e=o==null?void 0:o.anchorLinks)==null?void 0:e.h1)});return(e,m)=>(s(),t("h1",{id:e.id},[u(d)?(s(),t("a",{key:0,href:`#${e.id}`},[n(e.$slots,"default")],8,l)):n(e.$slots,"default",{key:1})],8,f))}});export{k as default}; diff --git a/_nuxt/DCQ65ZuQ.js b/_nuxt/LCLGvLsE.js similarity index 98% rename from _nuxt/DCQ65ZuQ.js rename to _nuxt/LCLGvLsE.js index 20714499..e2708e1a 100644 --- a/_nuxt/DCQ65ZuQ.js +++ b/_nuxt/LCLGvLsE.js @@ -1,4 +1,4 @@ -const __vite__fileDeps=["./5FOXgD99.js","./D-99yswp.js","./D18jxc4x.js","./COVmoRWc.js","./BucyQ5gi.js","./sFyta7Xq.js","./BtUAytV1.js","./BBa-Er6H.js","./D2VvGIaI.js","./tvGjYoxK.js","./B_gon5vj.js","./Cpj98o6Y.js","./fio-yYFF.js","./CZMOUkek.js","./KmdXbZ5S.js","./DOYruCef.js","./BZN8ALec.js","./Bd7xMkGn.js","./ProsePre.CchFRBtv.css","./Dc0b9Idc.js","./bSgsziye.js","./DEmzrrNC.js","./error-404.CyhgO96i.css","./mjKfI97z.js","./error-500.Cph627d6.css"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); +const __vite__fileDeps=["./DkeyjNz2.js","./C49RwB7F.js","./CVF0_ZUn.js","./Dgm6rCDZ.js","./CSRjDKbk.js","./D031i5cu.js","./tIvUuwzM.js","./CXVzcd7o.js","./EpcERS4a.js","./Ga6hsoRA.js","./CBT8na2g.js","./Cpj98o6Y.js","./fio-yYFF.js","./Zpk1VdH2.js","./BpByekOG.js","./DVOw9KrD.js","./0li69SiJ.js","./CXw4cyZj.js","./ProsePre.CchFRBtv.css","./Dz1cAOXu.js","./CytIWpRH.js","./CMVTt0wN.js","./error-404.CyhgO96i.css","./DYbY-O0Y.js","./error-500.Cph627d6.css"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); /** * @vue/shared v3.4.23 * (c) 2018-present Yuxi (Evan) You and Vue contributors @@ -17,10 +17,10 @@ const __vite__fileDeps=["./5FOXgD99.js","./D-99yswp.js","./D18jxc4x.js","./COVmo * @license MIT **/const Bf="http://www.w3.org/2000/svg",Ff="http://www.w3.org/1998/Math/MathML",Ct=typeof document<"u"?document:null,gi=Ct&&Ct.createElement("template"),Uf={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ct.createElementNS(Bf,e):t==="mathml"?Ct.createElementNS(Ff,e):Ct.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Ct.createTextNode(e),createComment:e=>Ct.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ct.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{gi.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const a=gi.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},yt="transition",En="animation",Fn=Symbol("_vtc"),ko=(e,{slots:t})=>He(Yu,Vf(e),t);ko.displayName="Transition";const $l={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};ko.props=ve({},sl,$l);const Mt=(e,t=[])=>{z(e)?e.forEach(n=>n(...t)):e&&e(...t)},yi=e=>e?z(e)?e.some(t=>t.length>1):e.length>1:!1;function Vf(e){const t={};for(const H in e)H in $l||(t[H]=e[H]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=o,appearActiveClass:u=i,appearToClass:c=a,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,y=Kf(s),v=y&&y[0],R=y&&y[1],{onBeforeEnter:C,onEnter:_,onEnterCancelled:m,onLeave:b,onLeaveCancelled:E,onBeforeAppear:P=C,onAppear:O=_,onAppearCancelled:k=m}=t,N=(H,G,ce)=>{Dt(H,G?c:a),Dt(H,G?u:i),ce&&ce()},$=(H,G)=>{H._isLeaving=!1,Dt(H,f),Dt(H,p),Dt(H,d),G&&G()},Q=H=>(G,ce)=>{const ue=H?O:_,U=()=>N(G,H,ce);Mt(ue,[G,U]),_i(()=>{Dt(G,H?l:o),_t(G,H?c:a),yi(ue)||vi(G,r,v,U)})};return ve(t,{onBeforeEnter(H){Mt(C,[H]),_t(H,o),_t(H,i)},onBeforeAppear(H){Mt(P,[H]),_t(H,l),_t(H,u)},onEnter:Q(!1),onAppear:Q(!0),onLeave(H,G){H._isLeaving=!0;const ce=()=>$(H,G);_t(H,f),zf(),_t(H,d),_i(()=>{H._isLeaving&&(Dt(H,f),_t(H,p),yi(b)||vi(H,r,R,ce))}),Mt(b,[H,ce])},onEnterCancelled(H){N(H,!1),Mt(m,[H])},onAppearCancelled(H){N(H,!0),Mt(k,[H])},onLeaveCancelled(H){$(H),Mt(E,[H])}})}function Kf(e){if(e==null)return null;if(fe(e))return[ls(e.enter),ls(e.leave)];{const t=ls(e);return[t,t]}}function ls(e){return Ra(e)}function _t(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Fn]||(e[Fn]=new Set)).add(t)}function Dt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Fn];n&&(n.delete(t),n.size||(e[Fn]=void 0))}function _i(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Wf=0;function vi(e,t,n,r){const s=e._endId=++Wf,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:a,propCount:l}=qf(e,t);if(!i)return r();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,d),o()},d=p=>{p.target===e&&++c>=l&&f()};setTimeout(()=>{c(n[y]||"").split(", "),s=r(`${yt}Delay`),o=r(`${yt}Duration`),i=bi(s,o),a=r(`${En}Delay`),l=r(`${En}Duration`),u=bi(a,l);let c=null,f=0,d=0;t===yt?i>0&&(c=yt,f=i,d=o.length):t===En?u>0&&(c=En,f=u,d=l.length):(f=Math.max(i,u),c=f>0?i>u?yt:En:null,d=c?c===yt?o.length:l.length:0);const p=c===yt&&/\b(transform|all)(,|$)/.test(r(`${yt}Property`).toString());return{type:c,timeout:f,propCount:d,hasTransform:p}}function bi(e,t){for(;e.lengthwi(n)+wi(e[r])))}function wi(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function zf(){return document.body.offsetHeight}function Gf(e,t,n){const r=e[Fn];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ei=Symbol("_vod"),Qf=Symbol("_vsh"),Jf=Symbol(""),Yf=/(^|;)\s*display\s*:/;function Xf(e,t,n){const r=e.style,s=ye(n);let o=!1;if(n&&!s){if(t)if(ye(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&hr(r,a,"")}else for(const i in t)n[i]==null&&hr(r,i,"");for(const i in n)i==="display"&&(o=!0),hr(r,i,n[i])}else if(s){if(t!==n){const i=r[Jf];i&&(n+=";"+i),r.cssText=n,o=Yf.test(n)}}else t&&e.removeAttribute("style");Ei in e&&(e[Ei]=o?r.display:"",e[Qf]&&(r.display="none"))}const Pi=/\s*!important$/;function hr(e,t,n){if(z(n))n.forEach(r=>hr(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Zf(e,t);Pi.test(n)?e.setProperty(yn(r),n.replace(Pi,""),"important"):e[r]=n}}const Ci=["Webkit","Moz","ms"],cs={};function Zf(e,t){const n=cs[t];if(n)return n;let r=st(t);if(r!=="filter"&&r in e)return cs[t]=r;r=$r(r);for(let s=0;sus||(id.then(()=>us=0),us=Date.now());function ld(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Ke(cd(r,n.value),t,5,[r])};return n.value=e,n.attached=ad(),n}function cd(e,t){if(z(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const xi=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ud=(e,t,n,r,s,o,i,a,l)=>{const u=s==="svg";t==="class"?Gf(e,r,u):t==="style"?Xf(e,n,r):qn(t)?io(t)||sd(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):fd(e,t,r,u))?td(e,t,r,o,i,a,l):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),ed(e,t,r,u))};function fd(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&xi(t)&&Y(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return xi(t)&&ye(n)?!1:t in e}const Nl=ve({patchProp:ud},Uf);let In,ki=!1;function dd(){return In||(In=Tf(Nl))}function hd(){return In=ki?In:Sf(Nl),ki=!0,In}const pd=(...e)=>{const t=dd().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Dl(r);if(!s)return;const o=t._component;!Y(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,Ml(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},md=(...e)=>{const t=hd().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Dl(r);if(s)return n(s,!0,Ml(s))},t};function Ml(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Dl(e){return ye(e)?document.querySelector(e):e}const gd=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,yd=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,_d=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function vd(e,t){if(e==="__proto__"||e==="constructor"&&t&&typeof t=="object"&&"prototype"in t){bd(e);return}return t}function bd(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function Un(e,t={}){if(typeof e!="string")return e;const n=e.trim();if(e[0]==='"'&&e.endsWith('"')&&!e.includes("\\"))return n.slice(1,-1);if(n.length<=9){const r=n.toLowerCase();if(r==="true")return!0;if(r==="false")return!1;if(r==="undefined")return;if(r==="null")return null;if(r==="nan")return Number.NaN;if(r==="infinity")return Number.POSITIVE_INFINITY;if(r==="-infinity")return Number.NEGATIVE_INFINITY}if(!_d.test(e)){if(t.strict)throw new SyntaxError("[destr] Invalid JSON");return e}try{if(gd.test(e)||yd.test(e)){if(t.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(e,vd)}return JSON.parse(e)}catch(r){if(t.strict)throw r;return e}}const wd=/#/g,Ed=/&/g,Pd=/\//g,Cd=/=/g,Ao=/\+/g,Rd=/%5e/gi,Td=/%60/gi,Sd=/%7c/gi,xd=/%20/gi;function kd(e){return encodeURI(""+e).replace(Sd,"|")}function Bs(e){return kd(typeof e=="string"?e:JSON.stringify(e)).replace(Ao,"%2B").replace(xd,"+").replace(wd,"%23").replace(Ed,"%26").replace(Td,"`").replace(Rd,"^").replace(Pd,"%2F")}function fs(e){return Bs(e).replace(Cd,"%3D")}function xr(e=""){try{return decodeURIComponent(""+e)}catch{return""+e}}function Ad(e){return xr(e.replace(Ao," "))}function Od(e){return xr(e.replace(Ao," "))}function jl(e=""){const t={};e[0]==="?"&&(e=e.slice(1));for(const n of e.split("&")){const r=n.match(/([^=]+)=?(.*)/)||[];if(r.length<2)continue;const s=Ad(r[1]);if(s==="__proto__"||s==="constructor")continue;const o=Od(r[2]||"");t[s]===void 0?t[s]=o:Array.isArray(t[s])?t[s].push(o):t[s]=[t[s],o]}return t}function Ld(e,t){return(typeof t=="number"||typeof t=="boolean")&&(t=String(t)),t?Array.isArray(t)?t.map(n=>`${fs(e)}=${Bs(n)}`).join("&"):`${fs(e)}=${Bs(t)}`:fs(e)}function Id(e){return Object.keys(e).filter(t=>e[t]!==void 0).map(t=>Ld(t,e[t])).filter(Boolean).join("&")}const Hd=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,$d=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,Nd=/^([/\\]\s*){2,}[^/\\]/,Md=/^[\s\0]*(blob|data|javascript|vbscript):$/i,Dd=/\/$|\/\?|\/#/,jd=/^\.?\//;function Je(e,t={}){return typeof t=="boolean"&&(t={acceptRelative:t}),t.strict?Hd.test(e):$d.test(e)||(t.acceptRelative?Nd.test(e):!1)}function Bd(e){return!!e&&Md.test(e)}function Fs(e="",t){return t?Dd.test(e):e.endsWith("/")}function Ot(e="",t){if(!t)return(Fs(e)?e.slice(0,-1):e)||"/";if(!Fs(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");s>=0&&(n=e.slice(0,s),r=e.slice(s));const[o,...i]=n.split("?");return((o.endsWith("/")?o.slice(0,-1):o)||"/")+(i.length>0?`?${i.join("?")}`:"")+r}function kr(e="",t){if(!t)return e.endsWith("/")?e:e+"/";if(Fs(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");if(s>=0&&(n=e.slice(0,s),r=e.slice(s),!n))return r;const[o,...i]=n.split("?");return o+"/"+(i.length>0?`?${i.join("?")}`:"")+r}function Fd(e=""){return e.startsWith("/")}function Us(e=""){return Fd(e)?e:"/"+e}function Bl(e,t){if(Ul(t)||Je(e))return e;const n=Ot(t);return e.startsWith(n)?e:Jn(n,e)}function Ai(e,t){if(Ul(t))return e;const n=Ot(t);if(!e.startsWith(n))return e;const r=e.slice(n.length);return r[0]==="/"?r:"/"+r}function Fl(e,t){const n=qr(e),r={...jl(n.search),...t};return n.search=Id(r),Kd(n)}function Ul(e){return!e||e==="/"}function Ud(e){return e&&e!=="/"}function Jn(e,...t){let n=e||"";for(const r of t.filter(s=>Ud(s)))if(n){const s=r.replace(jd,"");n=kr(n)+s}else n=r;return n}function Vl(...e){var i,a,l,u;const t=/\/(?!\/)/,n=e.filter(Boolean),r=[];let s=0;for(const c of n)if(!(!c||c==="/")){for(const[f,d]of c.split(t).entries())if(!(!d||d===".")){if(d===".."){if(r.length===1&&Je(r[0]))continue;r.pop(),s--;continue}if(f===1&&((i=r[r.length-1])!=null&&i.endsWith(":/"))){r[r.length-1]+="/"+d;continue}r.push(d),s++}}let o=r.join("/");return s>=0?(a=n[0])!=null&&a.startsWith("/")&&!o.startsWith("/")?o="/"+o:(l=n[0])!=null&&l.startsWith("./")&&!o.startsWith("./")&&(o="./"+o):o="../".repeat(-1*s)+o,(u=n[n.length-1])!=null&&u.endsWith("/")&&!o.endsWith("/")&&(o+="/"),o}function Vd(e,t,n={}){return n.trailingSlash||(e=kr(e),t=kr(t)),n.leadingSlash||(e=Us(e),t=Us(t)),n.encoding||(e=xr(e),t=xr(t)),e===t}const Kl=Symbol.for("ufo:protocolRelative");function qr(e="",t){const n=e.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i);if(n){const[,f,d=""]=n;return{protocol:f.toLowerCase(),pathname:d,href:f+d,auth:"",host:"",search:"",hash:""}}if(!Je(e,{acceptRelative:!0}))return Oi(e);const[,r="",s,o=""]=e.replace(/\\/g,"/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/)||[],[,i="",a=""]=o.match(/([^#/?]*)(.*)?/)||[],{pathname:l,search:u,hash:c}=Oi(a.replace(/\/(?=[A-Za-z]:)/,""));return{protocol:r.toLowerCase(),auth:s?s.slice(0,Math.max(0,s.length-1)):"",host:i,pathname:l,search:u,hash:c,[Kl]:!r}}function Oi(e=""){const[t="",n="",r=""]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:r}}function Kd(e){const t=e.pathname||"",n=e.search?(e.search.startsWith("?")?"":"?")+e.search:"",r=e.hash||"",s=e.auth?e.auth+"@":"",o=e.host||"";return(e.protocol||e[Kl]?(e.protocol||"")+"//":"")+s+o+t+n+r}class Wd extends Error{constructor(t,n){super(t,n),this.name="FetchError",n!=null&&n.cause&&!this.cause&&(this.cause=n.cause)}}function qd(e){var l,u,c,f,d;const t=((l=e.error)==null?void 0:l.message)||((u=e.error)==null?void 0:u.toString())||"",n=((c=e.request)==null?void 0:c.method)||((f=e.options)==null?void 0:f.method)||"GET",r=((d=e.request)==null?void 0:d.url)||String(e.request)||"/",s=`[${n}] ${JSON.stringify(r)}`,o=e.response?`${e.response.status} ${e.response.statusText}`:"",i=`${s}: ${o}${t?` ${t}`:""}`,a=new Wd(i,e.error?{cause:e.error}:void 0);for(const p of["request","options","response"])Object.defineProperty(a,p,{get(){return e[p]}});for(const[p,y]of[["data","_data"],["status","status"],["statusCode","status"],["statusText","statusText"],["statusMessage","statusText"]])Object.defineProperty(a,p,{get(){return e.response&&e.response[y]}});return a}const zd=new Set(Object.freeze(["PATCH","POST","PUT","DELETE"]));function Li(e="GET"){return zd.has(e.toUpperCase())}function Gd(e){if(e===void 0)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"||t===null?!0:t!=="object"?!1:Array.isArray(e)?!0:e.buffer?!1:e.constructor&&e.constructor.name==="Object"||typeof e.toJSON=="function"}const Qd=new Set(["image/svg","application/xml","application/xhtml","application/html"]),Jd=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function Yd(e=""){if(!e)return"json";const t=e.split(";").shift()||"";return Jd.test(t)?"json":Qd.has(t)||t.startsWith("text/")?"text":"blob"}function Xd(e,t,n=globalThis.Headers){const r={...t,...e};if(t!=null&&t.params&&(e!=null&&e.params)&&(r.params={...t==null?void 0:t.params,...e==null?void 0:e.params}),t!=null&&t.query&&(e!=null&&e.query)&&(r.query={...t==null?void 0:t.query,...e==null?void 0:e.query}),t!=null&&t.headers&&(e!=null&&e.headers)){r.headers=new n((t==null?void 0:t.headers)||{});for(const[s,o]of new n((e==null?void 0:e.headers)||{}))r.headers.set(s,o)}return r}const Zd=new Set([408,409,425,429,500,502,503,504]),eh=new Set([101,204,205,304]);function Wl(e={}){const{fetch:t=globalThis.fetch,Headers:n=globalThis.Headers,AbortController:r=globalThis.AbortController}=e;async function s(a){const l=a.error&&a.error.name==="AbortError"&&!a.options.timeout||!1;if(a.options.retry!==!1&&!l){let c;typeof a.options.retry=="number"?c=a.options.retry:c=Li(a.options.method)?0:1;const f=a.response&&a.response.status||500;if(c>0&&(Array.isArray(a.options.retryStatusCodes)?a.options.retryStatusCodes.includes(f):Zd.has(f))){const d=a.options.retryDelay||0;return d>0&&await new Promise(p=>setTimeout(p,d)),o(a.request,{...a.options,retry:c-1})}}const u=qd(a);throw Error.captureStackTrace&&Error.captureStackTrace(u,o),u}const o=async function(l,u={}){var p;const c={request:l,options:Xd(u,e.defaults,n),response:void 0,error:void 0};c.options.method=(p=c.options.method)==null?void 0:p.toUpperCase(),c.options.onRequest&&await c.options.onRequest(c),typeof c.request=="string"&&(c.options.baseURL&&(c.request=Bl(c.request,c.options.baseURL)),(c.options.query||c.options.params)&&(c.request=Fl(c.request,{...c.options.params,...c.options.query}))),c.options.body&&Li(c.options.method)&&(Gd(c.options.body)?(c.options.body=typeof c.options.body=="string"?c.options.body:JSON.stringify(c.options.body),c.options.headers=new n(c.options.headers||{}),c.options.headers.has("content-type")||c.options.headers.set("content-type","application/json"),c.options.headers.has("accept")||c.options.headers.set("accept","application/json")):("pipeTo"in c.options.body&&typeof c.options.body.pipeTo=="function"||typeof c.options.body.pipe=="function")&&("duplex"in c.options||(c.options.duplex="half")));let f;if(!c.options.signal&&c.options.timeout){const y=new r;f=setTimeout(()=>y.abort(),c.options.timeout),c.options.signal=y.signal}try{c.response=await t(c.request,c.options)}catch(y){return c.error=y,c.options.onRequestError&&await c.options.onRequestError(c),await s(c)}finally{f&&clearTimeout(f)}if(c.response.body&&!eh.has(c.response.status)&&c.options.method!=="HEAD"){const y=(c.options.parseResponse?"json":c.options.responseType)||Yd(c.response.headers.get("content-type")||"");switch(y){case"json":{const v=await c.response.text(),R=c.options.parseResponse||Un;c.response._data=R(v);break}case"stream":{c.response._data=c.response.body;break}default:c.response._data=await c.response[y]()}}return c.options.onResponse&&await c.options.onResponse(c),!c.options.ignoreResponseError&&c.response.status>=400&&c.response.status<600?(c.options.onResponseError&&await c.options.onResponseError(c),await s(c)):c.response},i=async function(l,u){return(await o(l,u))._data};return i.raw=o,i.native=(...a)=>t(...a),i.create=(a={})=>Wl({...e,defaults:{...e.defaults,...a}}),i}const Oo=function(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")}(),th=Oo.fetch||(()=>Promise.reject(new Error("[ofetch] global.fetch is not supported!"))),nh=Oo.Headers,rh=Oo.AbortController,sh=Wl({fetch:th,Headers:nh,AbortController:rh}),oh=sh,ih=()=>{var e;return((e=window==null?void 0:window.__NUXT__)==null?void 0:e.config)||{}},Ar=ih().app,ah=()=>Ar.baseURL,lh=()=>Ar.buildAssetsDir,Lo=(...e)=>Vl(zr(),lh(),...e),zr=(...e)=>{const t=Ar.cdnURL||Ar.baseURL;return e.length?Vl(t,...e):t};globalThis.__buildAssetsURL=Lo,globalThis.__publicAssetsURL=zr;globalThis.$fetch||(globalThis.$fetch=oh.create({baseURL:ah()}));function Vs(e,t={},n){for(const r in e){const s=e[r],o=n?`${n}:${r}`:r;typeof s=="object"&&s!==null?Vs(s,t,o):typeof s=="function"&&(t[o]=s)}return t}const ch={run:e=>e()},uh=()=>ch,ql=typeof console.createTask<"u"?console.createTask:uh;function fh(e,t){const n=t.shift(),r=ql(n);return e.reduce((s,o)=>s.then(()=>r.run(()=>o(...t))),Promise.resolve())}function dh(e,t){const n=t.shift(),r=ql(n);return Promise.all(e.map(s=>r.run(()=>s(...t))))}function ds(e,t){for(const n of[...e])n(t)}class hh{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(t,n,r={}){if(!t||typeof n!="function")return()=>{};const s=t;let o;for(;this._deprecatedHooks[t];)o=this._deprecatedHooks[t],t=o.to;if(o&&!r.allowDeprecated){let i=o.message;i||(i=`${s} hook has been deprecated`+(o.to?`, please use ${o.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(i)||(console.warn(i),this._deprecatedMessages.add(i))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+t.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=void 0)}}hookOnce(t,n){let r,s=(...o)=>(typeof r=="function"&&r(),r=void 0,s=void 0,n(...o));return r=this.hook(t,s),r}removeHook(t,n){if(this._hooks[t]){const r=this._hooks[t].indexOf(n);r!==-1&&this._hooks[t].splice(r,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const r=this._hooks[t]||[];delete this._hooks[t];for(const s of r)this.hook(t,s)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=Vs(t),r=Object.keys(n).map(s=>this.hook(s,n[s]));return()=>{for(const s of r.splice(0,r.length))s()}}removeHooks(t){const n=Vs(t);for(const r in n)this.removeHook(r,n[r])}removeAllHooks(){for(const t in this._hooks)delete this._hooks[t]}callHook(t,...n){return n.unshift(t),this.callHookWith(fh,t,...n)}callHookParallel(t,...n){return n.unshift(t),this.callHookWith(dh,t,...n)}callHookWith(t,n,...r){const s=this._before||this._after?{name:n,args:r,context:{}}:void 0;this._before&&ds(this._before,s);const o=t(n in this._hooks?[...this._hooks[n]]:[],r);return o instanceof Promise?o.finally(()=>{this._after&&s&&ds(this._after,s)}):(this._after&&s&&ds(this._after,s),o)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{if(this._before!==void 0){const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{if(this._after!==void 0){const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}}function zl(){return new hh}function ph(e={}){let t,n=!1;const r=i=>{if(t&&t!==i)throw new Error("Context conflict")};let s;if(e.asyncContext){const i=e.AsyncLocalStorage||globalThis.AsyncLocalStorage;i?s=new i:console.warn("[unctx] `AsyncLocalStorage` is not provided.")}const o=()=>{if(s&&t===void 0){const i=s.getStore();if(i!==void 0)return i}return t};return{use:()=>{const i=o();if(i===void 0)throw new Error("Context is not available");return i},tryUse:()=>o(),set:(i,a)=>{a||r(i),t=i,n=!0},unset:()=>{t=void 0,n=!1},call:(i,a)=>{r(i),t=i;try{return s?s.run(i,a):a()}finally{n||(t=void 0)}},async callAsync(i,a){t=i;const l=()=>{t=i},u=()=>t===i?l:void 0;Ks.add(u);try{const c=s?s.run(i,a):a();return n||(t=void 0),await c}finally{Ks.delete(u)}}}}function mh(e={}){const t={};return{get(n,r={}){return t[n]||(t[n]=ph({...e,...r})),t[n],t[n]}}}const Or=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof global<"u"?global:typeof window<"u"?window:{},Ii="__unctx__",gh=Or[Ii]||(Or[Ii]=mh()),yh=(e,t={})=>gh.get(e,t),Hi="__unctx_async_handlers__",Ks=Or[Hi]||(Or[Hi]=new Set);function hn(e){const t=[];for(const s of Ks){const o=s();o&&t.push(o)}const n=()=>{for(const s of t)s()};let r=e();return r&&typeof r=="object"&&"catch"in r&&(r=r.catch(s=>{throw n(),s})),[r,n]}const Gl=yh("nuxt-app",{asyncContext:!1}),_h="__nuxt_plugin";function vh(e){let t=0;const n={_scope:Xc(),provide:void 0,globalName:"nuxt",versions:{get nuxt(){return"3.11.2"},get vue(){return n.vueApp.version}},payload:Ht({data:{},state:{},once:new Set,_errors:{},...window.__NUXT__??{}}),static:{data:{}},runWithContext:s=>n._scope.run(()=>Ql(n,s)),isHydrating:!0,deferHydration(){if(!n.isHydrating)return()=>{};t++;let s=!1;return()=>{if(!s&&(s=!0,t--,t===0))return n.isHydrating=!1,n.callHook("app:suspense:resolve")}},_asyncDataPromises:{},_asyncData:{},_payloadRevivers:{},...e};n.hooks=zl(),n.hook=n.hooks.hook,n.callHook=n.hooks.callHook,n.provide=(s,o)=>{const i="$"+s;lr(n,i,o),lr(n.vueApp.config.globalProperties,i,o)},lr(n.vueApp,"$nuxt",n),lr(n.vueApp.config.globalProperties,"$nuxt",n);{window.addEventListener("nuxt.preloadError",o=>{n.callHook("app:chunkError",{error:o.payload})}),window.useNuxtApp=window.useNuxtApp||le;const s=n.hook("app:error",(...o)=>{console.error("[nuxt] error caught during app initialization",...o)});n.hook("app:mounted",s)}const r=n.payload.config;return n.provide("config",r),n}async function bh(e,t){if(t.hooks&&e.hooks.addHooks(t.hooks),typeof t=="function"){const{provide:n}=await e.runWithContext(()=>t(e))||{};if(n&&typeof n=="object")for(const r in n)e.provide(r,n[r])}}async function wh(e,t){const n=[],r=[],s=[],o=[];let i=0;async function a(l){var c;const u=((c=l.dependsOn)==null?void 0:c.filter(f=>t.some(d=>d._name===f)&&!n.includes(f)))??[];if(u.length>0)r.push([new Set(u),l]);else{const f=bh(e,l).then(async()=>{l._name&&(n.push(l._name),await Promise.all(r.map(async([d,p])=>{d.has(l._name)&&(d.delete(l._name),d.size===0&&(i++,await a(p)))})))});l.parallel?s.push(f.catch(d=>o.push(d))):await f}}for(const l of t)await a(l);if(await Promise.all(s),i)for(let l=0;l{}),e,{[_h]:!0,_name:t})}function Ql(e,t,n){const r=()=>n?t(...n):t();return Gl.set(e),e.vueApp.runWithContext(r)}function Eh(){var t;let e;return ml()&&(e=(t=bn())==null?void 0:t.appContext.app.$nuxt),e=e||Gl.tryUse(),e||null}function le(){const e=Eh();if(!e)throw new Error("[nuxt] instance unavailable");return e}function je(e){return le().$config}function lr(e,t,n){Object.defineProperty(e,t,{get:()=>n})}const cr=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;function Ph(e,t){if(typeof e!="string")throw new TypeError("argument str must be a string");const n={},s=(t||{}).decode||Th;let o=0;for(;o{t+=s};return{toString(){return t},getContext(){return n},dispatch(s){return e.replacer&&(s=e.replacer(s)),this[s===null?"null":typeof s](s)},object(s){if(s&&typeof s.toJSON=="function")return this.object(s.toJSON());const o=Object.prototype.toString.call(s);let i="";const a=o.length;a<10?i="unknown:["+o+"]":i=o.slice(8,a-1),i=i.toLowerCase();let l=null;if((l=n.get(s))===void 0)n.set(s,n.size);else return this.dispatch("[CIRCULAR:"+l+"]");if(typeof Buffer<"u"&&Buffer.isBuffer&&Buffer.isBuffer(s))return r("buffer:"),r(s.toString("utf8"));if(i!=="object"&&i!=="function"&&i!=="asyncfunction")this[i]?this[i](s):e.ignoreUnknown||this.unkown(s,i);else{let u=Object.keys(s);e.unorderedObjects&&(u=u.sort());let c=[];e.respectType!==!1&&!Mi(s)&&(c=xh),e.excludeKeys&&(u=u.filter(d=>!e.excludeKeys(d)),c=c.filter(d=>!e.excludeKeys(d))),r("object:"+(u.length+c.length)+":");const f=d=>{this.dispatch(d),r(":"),e.excludeValues||this.dispatch(s[d]),r(",")};for(const d of u)f(d);for(const d of c)f(d)}},array(s,o){if(o=o===void 0?e.unorderedArrays!==!1:o,r("array:"+s.length+":"),!o||s.length<=1){for(const l of s)this.dispatch(l);return}const i=new Map,a=s.map(l=>{const u=Jl(e);u.dispatch(l);for(const[c,f]of u.getContext())i.set(c,f);return u.toString()});return n=i,a.sort(),this.array(a,!1)},date(s){return r("date:"+s.toJSON())},symbol(s){return r("symbol:"+s.toString())},unkown(s,o){if(r(o),!!s&&(r(":"),s&&typeof s.entries=="function"))return this.array(Array.from(s.entries()),!0)},error(s){return r("error:"+s.toString())},boolean(s){return r("bool:"+s)},string(s){r("string:"+s.length+":"),r(s)},function(s){r("fn:"),Mi(s)?this.dispatch("[native]"):this.dispatch(s.toString()),e.respectFunctionNames!==!1&&this.dispatch("function-name:"+String(s.name)),e.respectFunctionProperties&&this.object(s)},number(s){return r("number:"+s)},xml(s){return r("xml:"+s.toString())},null(){return r("Null")},undefined(){return r("Undefined")},regexp(s){return r("regex:"+s.toString())},uint8array(s){return r("uint8array:"),this.dispatch(Array.prototype.slice.call(s))},uint8clampedarray(s){return r("uint8clampedarray:"),this.dispatch(Array.prototype.slice.call(s))},int8array(s){return r("int8array:"),this.dispatch(Array.prototype.slice.call(s))},uint16array(s){return r("uint16array:"),this.dispatch(Array.prototype.slice.call(s))},int16array(s){return r("int16array:"),this.dispatch(Array.prototype.slice.call(s))},uint32array(s){return r("uint32array:"),this.dispatch(Array.prototype.slice.call(s))},int32array(s){return r("int32array:"),this.dispatch(Array.prototype.slice.call(s))},float32array(s){return r("float32array:"),this.dispatch(Array.prototype.slice.call(s))},float64array(s){return r("float64array:"),this.dispatch(Array.prototype.slice.call(s))},arraybuffer(s){return r("arraybuffer:"),this.dispatch(new Uint8Array(s))},url(s){return r("url:"+s.toString())},map(s){r("map:");const o=[...s];return this.array(o,e.unorderedSets!==!1)},set(s){r("set:");const o=[...s];return this.array(o,e.unorderedSets!==!1)},file(s){return r("file:"),this.dispatch([s.name,s.size,s.type,s.lastModfied])},blob(){if(e.ignoreUnknown)return r("[blob]");throw new Error(`Hashing Blob objects is currently not supported Use "options.replacer" or "options.ignoreUnknown" -`)},domwindow(){return r("domwindow")},bigint(s){return r("bigint:"+s.toString())},process(){return r("process")},timer(){return r("timer")},pipe(){return r("pipe")},tcp(){return r("tcp")},udp(){return r("udp")},tty(){return r("tty")},statwatcher(){return r("statwatcher")},securecontext(){return r("securecontext")},connection(){return r("connection")},zlib(){return r("zlib")},context(){return r("context")},nodescript(){return r("nodescript")},httpparser(){return r("httpparser")},dataview(){return r("dataview")},signal(){return r("signal")},fsevent(){return r("fsevent")},tlswrap(){return r("tlswrap")}}}const Yl="[native code] }",kh=Yl.length;function Mi(e){return typeof e!="function"?!1:Function.prototype.toString.call(e).slice(-kh)===Yl}class kt{constructor(t,n){t=this.words=t||[],this.sigBytes=n===void 0?t.length*4:n}toString(t){return(t||Ah).stringify(this)}concat(t){if(this.clamp(),this.sigBytes%4)for(let n=0;n>>2]>>>24-n%4*8&255;this.words[this.sigBytes+n>>>2]|=r<<24-(this.sigBytes+n)%4*8}else for(let n=0;n>>2]=t.words[n>>>2];return this.sigBytes+=t.sigBytes,this}clamp(){this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4)}clone(){return new kt([...this.words])}}const Ah={stringify(e){const t=[];for(let n=0;n>>2]>>>24-n%4*8&255;t.push((r>>>4).toString(16),(r&15).toString(16))}return t.join("")}},Oh={stringify(e){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=[];for(let r=0;r>>2]>>>24-r%4*8&255,o=e.words[r+1>>>2]>>>24-(r+1)%4*8&255,i=e.words[r+2>>>2]>>>24-(r+2)%4*8&255,a=s<<16|o<<8|i;for(let l=0;l<4&&r*8+l*6>>6*(3-l)&63))}return n.join("")}},Lh={parse(e){const t=e.length,n=[];for(let r=0;r>>2]|=(e.charCodeAt(r)&255)<<24-r%4*8;return new kt(n,t)}},Ih={parse(e){return Lh.parse(unescape(encodeURIComponent(e)))}};class Hh{constructor(){this._data=new kt,this._nDataBytes=0,this._minBufferSize=0,this.blockSize=512/32}reset(){this._data=new kt,this._nDataBytes=0}_append(t){typeof t=="string"&&(t=Ih.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}_doProcessBlock(t,n){}_process(t){let n,r=this._data.sigBytes/(this.blockSize*4);t?r=Math.ceil(r):r=Math.max((r|0)-this._minBufferSize,0);const s=r*this.blockSize,o=Math.min(s*4,this._data.sigBytes);if(s){for(let i=0;i>>7)^(m<<14|m>>>18)^m>>>3,E=jt[d-2],P=(E<<15|E>>>17)^(E<<13|E>>>19)^E>>>10;jt[d]=b+jt[d-7]+P+jt[d-16]}const p=l&u^~l&c,y=s&o^s&i^o&i,v=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),R=(l<<26|l>>>6)^(l<<21|l>>>11)^(l<<7|l>>>25),C=f+R+p+Nh[d]+jt[d],_=v+y;f=c,c=u,u=l,l=a+C|0,a=i,i=o,o=s,s=C+_|0}r[0]=r[0]+s|0,r[1]=r[1]+o|0,r[2]=r[2]+i|0,r[3]=r[3]+a|0,r[4]=r[4]+l|0,r[5]=r[5]+u|0,r[6]=r[6]+c|0,r[7]=r[7]+f|0}finalize(t){super.finalize(t);const n=this._nDataBytes*8,r=this._data.sigBytes*8;return this._data.words[r>>>5]|=128<<24-r%32,this._data.words[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),this._data.words[(r+64>>>9<<4)+15]=n,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}}function Dh(e){return new Mh().finalize(e).toString(Oh)}function Vn(e,t={}){const n=typeof e=="string"?e:Ws(e,t);return Dh(n).slice(0,10)}function jh(e,t,n={}){return e===t||Ws(e,n)===Ws(t,n)}function Bh(e,t){return{ctx:{table:e},matchAll:n=>Zl(n,e)}}function Xl(e){const t={};for(const n in e)t[n]=n==="dynamic"?new Map(Object.entries(e[n]).map(([r,s])=>[r,Xl(s)])):new Map(Object.entries(e[n]));return t}function Fh(e){return Bh(Xl(e))}function Zl(e,t,n){e.endsWith("/")&&(e=e.slice(0,-1)||"/");const r=[];for(const[o,i]of ji(t.wildcard))(e===o||e.startsWith(o+"/"))&&r.push(i);for(const[o,i]of ji(t.dynamic))if(e.startsWith(o+"/")){const a="/"+e.slice(o.length).split("/").splice(2).join("/");r.push(...Zl(a,i))}const s=t.static.get(e);return s&&r.push(s),r.filter(Boolean)}function ji(e){return[...e.entries()].sort((t,n)=>t[0].length-n[0].length)}function hs(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function qs(e,t,n=".",r){if(!hs(t))return qs(e,{},n,r);const s=Object.assign({},t);for(const o in e){if(o==="__proto__"||o==="constructor")continue;const i=e[o];i!=null&&(r&&r(s,o,i,n)||(Array.isArray(i)&&Array.isArray(s[o])?s[o]=[...i,...s[o]]:hs(i)&&hs(s[o])?s[o]=qs(i,s[o],(n?`${n}.`:"")+o.toString(),r):s[o]=i))}return s}function ec(e){return(...t)=>t.reduce((n,r)=>qs(n,r,"",e),{})}const tc=ec(),Uh=ec((e,t,n)=>{if(e[t]!==void 0&&typeof n=="function")return e[t]=n(e[t]),!0});function Vh(e,t){try{return t in e}catch{return!1}}var Kh=Object.defineProperty,Wh=(e,t,n)=>t in e?Kh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Bt=(e,t,n)=>(Wh(e,typeof t!="symbol"?t+"":t,n),n);class zs extends Error{constructor(t,n={}){super(t,n),Bt(this,"statusCode",500),Bt(this,"fatal",!1),Bt(this,"unhandled",!1),Bt(this,"statusMessage"),Bt(this,"data"),Bt(this,"cause"),n.cause&&!this.cause&&(this.cause=n.cause)}toJSON(){const t={message:this.message,statusCode:Qs(this.statusCode,500)};return this.statusMessage&&(t.statusMessage=nc(this.statusMessage)),this.data!==void 0&&(t.data=this.data),t}}Bt(zs,"__h3_error__",!0);function Gs(e){if(typeof e=="string")return new zs(e);if(qh(e))return e;const t=new zs(e.message??e.statusMessage??"",{cause:e.cause||e});if(Vh(e,"stack"))try{Object.defineProperty(t,"stack",{get(){return e.stack}})}catch{try{t.stack=e.stack}catch{}}if(e.data&&(t.data=e.data),e.statusCode?t.statusCode=Qs(e.statusCode,t.statusCode):e.status&&(t.statusCode=Qs(e.status,t.statusCode)),e.statusMessage?t.statusMessage=e.statusMessage:e.statusText&&(t.statusMessage=e.statusText),t.statusMessage){const n=t.statusMessage;nc(t.statusMessage)!==n&&console.warn("[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default.")}return e.fatal!==void 0&&(t.fatal=e.fatal),e.unhandled!==void 0&&(t.unhandled=e.unhandled),t}function qh(e){var t;return((t=e==null?void 0:e.constructor)==null?void 0:t.__h3_error__)===!0}const zh=/[^\u0009\u0020-\u007E]/g;function nc(e=""){return e.replace(zh,"")}function Qs(e,t=200){return!e||(typeof e=="string"&&(e=Number.parseInt(e,10)),e<100||e>999)?t:e}const Gh=Symbol("layout-meta"),Gr=Symbol("route"),We=()=>{var e;return(e=le())==null?void 0:e.$router},pn=()=>ml()?Ie(Gr,le()._route):le()._route;const Qh=(e,t,n={})=>{const r=le(),s=n.global||typeof e!="string",o=typeof e!="string"?e:t;if(!o){console.warn("[nuxt] No route middleware passed to `addRouteMiddleware`.",e);return}s?r._middleware.global.push(o):r._middleware.named[e]=o},Jh=()=>{try{if(le()._processingMiddleware)return!0}catch{return!1}return!1},rc=(e,t)=>{e||(e="/");const n=typeof e=="string"?e:Fl(e.path||"/",e.query||{})+(e.hash||"");if(t!=null&&t.open){const{target:a="_blank",windowFeatures:l={}}=t.open,u=Object.entries(l).filter(([c,f])=>f!==void 0).map(([c,f])=>`${c.toLowerCase()}=${f}`).join(", ");return open(n,a,u),Promise.resolve()}const r=(t==null?void 0:t.external)||Je(n,{acceptRelative:!0});if(r){if(!(t!=null&&t.external))throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");const a=qr(n).protocol;if(a&&Bd(a))throw new Error(`Cannot navigate to a URL with '${a}' protocol.`)}const s=Jh();if(!r&&s)return e;const o=We(),i=le();return r?(i._scope.stop(),t!=null&&t.replace?location.replace(n):location.href=n,s?i.isHydrating?new Promise(()=>{}):!1:Promise.resolve()):t!=null&&t.replace?o.replace(e):o.push(e)},sc="__nuxt_error",Qr=()=>vo(le().payload,"error"),Zt=e=>{const t=Yn(e);try{const n=le(),r=Qr();n.hooks.callHook("app:error",t),r.value=r.value||t}catch{throw t}return t},Yh=async(e={})=>{const t=le(),n=Qr();t.callHook("app:error:cleared",e),e.redirect&&await We().replace(e.redirect),n.value=null},Xh=e=>!!e&&typeof e=="object"&&sc in e,Yn=e=>{const t=Gs(e);return Object.defineProperty(t,sc,{value:!0,configurable:!1,writable:!1}),t},Zh="modulepreload",ep=function(e,t){return e[0]==="."?new URL(e,t).href:e},Bi={},tp=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.all(n.map(a=>{if(a=ep(a,r),a in Bi)return;Bi[a]=!0;const l=a.endsWith(".css"),u=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${a}"]${u}`))return;const c=document.createElement("link");if(c.rel=l?"stylesheet":Zh,l||(c.as="script",c.crossOrigin=""),c.href=a,i&&c.setAttribute("nonce",i),document.head.appendChild(c),l)return new Promise((f,d)=>{c.addEventListener("load",f),c.addEventListener("error",()=>d(new Error(`Unable to preload CSS for ${a}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},J=(...e)=>tp(...e).catch(t=>{const n=new Event("nuxt.preloadError");throw n.payload=t,window.dispatchEvent(n),t}),np=-1,rp=-2,sp=-3,op=-4,ip=-5,ap=-6;function lp(e,t){return cp(JSON.parse(e),t)}function cp(e,t){if(typeof e=="number")return s(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);function s(o,i=!1){if(o===np)return;if(o===sp)return NaN;if(o===op)return 1/0;if(o===ip)return-1/0;if(o===ap)return-0;if(i)throw new Error("Invalid input");if(o in r)return r[o];const a=n[o];if(!a||typeof a!="object")r[o]=a;else if(Array.isArray(a))if(typeof a[0]=="string"){const l=a[0],u=t==null?void 0:t[l];if(u)return r[o]=u(s(a[1]));switch(l){case"Date":r[o]=new Date(a[1]);break;case"Set":const c=new Set;r[o]=c;for(let p=1;p>>9)+65536).toString(16).substring(1,8).toLowerCase()}function Fi(e){return e._h||Io(e._d?e._d:`${e.tag}:${e.textContent||e.innerHTML||""}:${Object.entries(e.props).map(([t,n])=>`${t}:${String(n)}`).join(",")}`)}function ic(e,t){const{props:n,tag:r}=e;if(hp.includes(r))return r;if(r==="link"&&n.rel==="canonical")return"canonical";if(n.charset)return"charset";const s=["id"];r==="meta"&&s.push("name","property","http-equiv");for(const o of s)if(typeof n[o]<"u"){const i=String(n[o]);return`${r}:${o}:${i}`}return!1}function Ui(e,t){return e==null?t||null:typeof e=="function"?e(t):e}async function mp(e,t,n){const r={tag:e,props:await ac(typeof t=="object"&&typeof t!="function"&&!(t instanceof Promise)?{...t}:{[["script","noscript","style"].includes(e)?"innerHTML":"textContent"]:t},["templateParams","titleTemplate"].includes(e))};return oc.forEach(s=>{const o=typeof r.props[s]<"u"?r.props[s]:n[s];typeof o<"u"&&((!["innerHTML","textContent","children"].includes(s)||fp.includes(r.tag))&&(r[s==="children"?"innerHTML":s]=o),delete r.props[s])}),r.props.body&&(r.tagPosition="bodyClose",delete r.props.body),r.tag==="script"&&typeof r.innerHTML=="object"&&(r.innerHTML=JSON.stringify(r.innerHTML),r.props.type=r.props.type||"application/json"),Array.isArray(r.props.content)?r.props.content.map(s=>({...r,props:{...r.props,content:s}})):r}function gp(e,t){var r;const n=e==="class"?" ":";";return typeof t=="object"&&!Array.isArray(t)&&(t=Object.entries(t).filter(([,s])=>s).map(([s,o])=>e==="style"?`${s}:${o}`:s)),(r=Array.isArray(t)?t.join(n):t)==null?void 0:r.split(n).filter(s=>s.trim()).filter(Boolean).join(n)}async function ac(e,t){for(const n of Object.keys(e)){if(["class","style"].includes(n)){e[n]=gp(n,e[n]);continue}if(e[n]instanceof Promise&&(e[n]=await e[n]),!t&&!oc.includes(n)){const r=String(e[n]),s=n.startsWith("data-");r==="true"||r===""?e[n]=s?"true":!0:e[n]||(s&&r==="false"?e[n]="false":delete e[n])}}return e}const yp=10;async function _p(e){const t=[];return Object.entries(e.resolvedInput).filter(([n,r])=>typeof r<"u"&&dp.includes(n)).forEach(([n,r])=>{const s=up(r);t.push(...s.map(o=>mp(n,o,e)).flat())}),(await Promise.all(t)).flat().filter(Boolean).map((n,r)=>(n._e=e._i,e.mode&&(n._m=e.mode),n._p=(e._i<l&&l[u]||void 0,t):a=t[i],typeof a<"u"?(a||"").replace(/"/g,'\\"'):!1}let s=e;try{s=decodeURI(e)}catch{}return(s.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(i=>{const a=r(i.slice(1));typeof a=="string"&&(e=e.replace(new RegExp(`\\${i}(\\W|$)`,"g"),(l,u)=>`${a}${u}`).trim())}),e.includes(vt)&&(e.endsWith(vt)&&(e=e.slice(0,-vt.length).trim()),e.startsWith(vt)&&(e=e.slice(vt.length).trim()),e=e.replace(new RegExp(`\\${vt}\\s*\\${vt}`,"g"),vt),e=mr(e,{separator:n},n)),e}async function lc(e,t={}){var c;const n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;const r={shouldRender:!0,tags:[]};if(await e.hooks.callHook("dom:beforeRender",r),!r.shouldRender)return;const s=(await e.resolveTags()).map(f=>({tag:f,id:pr.includes(f.tag)?Fi(f):f.tag,shouldRender:!0}));let o=e._dom;if(!o){o={elMap:{htmlAttrs:n.documentElement,bodyAttrs:n.body}};for(const f of["body","head"]){const d=(c=n[f])==null?void 0:c.children,p=[];for(const y of[...d].filter(v=>pr.includes(v.tagName.toLowerCase()))){const v={tag:y.tagName.toLowerCase(),props:await ac(y.getAttributeNames().reduce((_,m)=>({..._,[m]:y.getAttribute(m)}),{})),innerHTML:y.innerHTML};let R=1,C=ic(v);for(;C&&p.find(_=>_._d===C);)C=`${C}:${R++}`;v._d=C||void 0,p.push(v),o.elMap[y.getAttribute("data-hid")||Fi(v)]=y}}}o.pendingSideEffects={...o.sideEffects||{}},o.sideEffects={};function i(f,d,p){const y=`${f}:${d}`;o.sideEffects[y]=p,delete o.pendingSideEffects[y]}function a({id:f,$el:d,tag:p}){const y=p.tag.endsWith("Attrs");o.elMap[f]=d,y||(["textContent","innerHTML"].forEach(v=>{p[v]&&p[v]!==d[v]&&(d[v]=p[v])}),i(f,"el",()=>{var v;(v=o.elMap[f])==null||v.remove(),delete o.elMap[f]}));for(const[v,R]of Object.entries(p._eventHandlers||{}))d.getAttribute(`data-${v}`)!==""&&((p.tag==="bodyAttrs"?n.defaultView:d).addEventListener(v.replace("on",""),R.bind(d)),d.setAttribute(`data-${v}`,""));Object.entries(p.props).forEach(([v,R])=>{const C=`attr:${v}`;if(v==="class")for(const _ of(R||"").split(" ").filter(Boolean))y&&i(f,`${C}:${_}`,()=>d.classList.remove(_)),!d.classList.contains(_)&&d.classList.add(_);else if(v==="style")for(const _ of(R||"").split(";").filter(Boolean)){const[m,...b]=_.split(":").map(E=>E.trim());i(f,`${C}:${_}:${m}`,()=>{d.style.removeProperty(m)}),d.style.setProperty(m,b.join(":"))}else d.getAttribute(v)!==R&&d.setAttribute(v,R===!0?"":String(R)),y&&i(f,C,()=>d.removeAttribute(v))})}const l=[],u={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const f of s){const{tag:d,shouldRender:p,id:y}=f;if(p){if(d.tag==="title"){n.title=d.textContent;continue}f.$el=f.$el||o.elMap[y],f.$el?a(f):pr.includes(d.tag)&&l.push(f)}}for(const f of l){const d=f.tag.tagPosition||"head";f.$el=n.createElement(f.tag.tag),a(f),u[d]=u[d]||n.createDocumentFragment(),u[d].appendChild(f.$el)}for(const f of s)await e.hooks.callHook("dom:renderTag",f,n,i);u.head&&n.head.appendChild(u.head),u.bodyOpen&&n.body.insertBefore(u.bodyOpen,n.body.firstChild),u.bodyClose&&n.body.appendChild(u.bodyClose),Object.values(o.pendingSideEffects).forEach(f=>f()),e._dom=o,e.dirty=!1,await e.hooks.callHook("dom:rendered",{renders:s})}async function bp(e,t={}){const n=t.delayFn||(r=>setTimeout(r,10));return e._domUpdatePromise=e._domUpdatePromise||new Promise(r=>n(async()=>{await lc(e,t),delete e._domUpdatePromise,r()}))}function wp(e){return t=>{var r,s;const n=((s=(r=t.resolvedOptions.document)==null?void 0:r.head.querySelector('script[id="unhead:payload"]'))==null?void 0:s.innerHTML)||!1;return n&&t.push(JSON.parse(n)),{mode:"client",hooks:{"entries:updated":function(o){bp(o,e)}}}}}const Ep=["templateParams","htmlAttrs","bodyAttrs"],Pp={hooks:{"tag:normalise":function({tag:e}){["hid","vmid","key"].forEach(r=>{e.props[r]&&(e.key=e.props[r],delete e.props[r])});const n=ic(e)||(e.key?`${e.tag}:${e.key}`:!1);n&&(e._d=n)},"tags:resolve":function(e){const t={};e.tags.forEach(r=>{const s=(r.key?`${r.tag}:${r.key}`:r._d)||r._p,o=t[s];if(o){let a=r==null?void 0:r.tagDuplicateStrategy;if(!a&&Ep.includes(r.tag)&&(a="merge"),a==="merge"){const l=o.props;["class","style"].forEach(u=>{l[u]&&(r.props[u]?(u==="style"&&!l[u].endsWith(";")&&(l[u]+=";"),r.props[u]=`${l[u]} ${r.props[u]}`):r.props[u]=l[u])}),t[s].props={...l,...r.props};return}else if(r._e===o._e){o._duped=o._duped||[],r._d=`${o._d}:${o._duped.length+1}`,o._duped.push(r);return}else if(Lr(r)>Lr(o))return}const i=Object.keys(r.props).length+(r.innerHTML?1:0)+(r.textContent?1:0);if(pr.includes(r.tag)&&i===0){delete t[s];return}t[s]=r});const n=[];Object.values(t).forEach(r=>{const s=r._duped;delete r._duped,n.push(r),s&&n.push(...s)}),e.tags=n,e.tags=e.tags.filter(r=>!(r.tag==="meta"&&(r.props.name||r.props.property)&&!r.props.content))}}},Cp={mode:"server",hooks:{"tags:resolve":function(e){const t={};e.tags.filter(n=>["titleTemplate","templateParams","title"].includes(n.tag)&&n._m==="server").forEach(n=>{t[n.tag]=n.tag.startsWith("title")?n.textContent:n.props}),Object.keys(t).length&&e.tags.push({tag:"script",innerHTML:JSON.stringify(t),props:{id:"unhead:payload",type:"application/json"}})}}},Rp=["script","link","bodyAttrs"],Tp=e=>({hooks:{"tags:resolve":function(t){for(const n of t.tags.filter(r=>Rp.includes(r.tag)))Object.entries(n.props).forEach(([r,s])=>{r.startsWith("on")&&typeof s=="function"&&(e.ssr&&Wi.includes(r)?n.props[r]=`this.dataset.${r}fired = true`:delete n.props[r],n._eventHandlers=n._eventHandlers||{},n._eventHandlers[r]=s)}),e.ssr&&n._eventHandlers&&(n.props.src||n.props.href)&&(n.key=n.key||Io(n.props.src||n.props.href))},"dom:renderTag":function({$el:t,tag:n}){var r,s;for(const o of Object.keys((t==null?void 0:t.dataset)||{}).filter(i=>Wi.some(a=>`${a}fired`===i))){const i=o.replace("fired","");(s=(r=n._eventHandlers)==null?void 0:r[i])==null||s.call(t,new Event(i.replace("on","")))}}}}),Sp=["link","style","script","noscript"],xp={hooks:{"tag:normalise":({tag:e})=>{e.key&&Sp.includes(e.tag)&&(e.props["data-hid"]=e._h=Io(e.key))}}},kp={hooks:{"tags:resolve":e=>{const t=n=>{var r;return(r=e.tags.find(s=>s._d===n))==null?void 0:r._p};for(const{prefix:n,offset:r}of vp)for(const s of e.tags.filter(o=>typeof o.tagPriority=="string"&&o.tagPriority.startsWith(n))){const o=t(s.tagPriority.replace(n,""));typeof o<"u"&&(s._p=o+r)}e.tags.sort((n,r)=>n._p-r._p).sort((n,r)=>Lr(n)-Lr(r))}}},Ap={meta:"content",link:"href",htmlAttrs:"lang"},Op=e=>({hooks:{"tags:resolve":t=>{var a;const{tags:n}=t,r=(a=n.find(l=>l.tag==="title"))==null?void 0:a.textContent,s=n.findIndex(l=>l.tag==="templateParams"),o=s!==-1?n[s].props:{},i=o.separator||"|";delete o.separator,o.pageTitle=mr(o.pageTitle||r||"",o,i);for(const l of n.filter(u=>u.processTemplateParams!==!1)){const u=Ap[l.tag];u&&typeof l.props[u]=="string"?l.props[u]=mr(l.props[u],o,i):(l.processTemplateParams===!0||["titleTemplate","title"].includes(l.tag))&&["innerHTML","textContent"].forEach(c=>{typeof l[c]=="string"&&(l[c]=mr(l[c],o,i))})}e._templateParams=o,e._separator=i,t.tags=n.filter(l=>l.tag!=="templateParams")}}}),Lp={hooks:{"tags:resolve":e=>{const{tags:t}=e;let n=t.findIndex(s=>s.tag==="titleTemplate");const r=t.findIndex(s=>s.tag==="title");if(r!==-1&&n!==-1){const s=Ui(t[n].textContent,t[r].textContent);s!==null?t[r].textContent=s||t[r].textContent:delete t[r]}else if(n!==-1){const s=Ui(t[n].textContent);s!==null&&(t[n].textContent=s,t[n].tag="title",n=-1)}n!==-1&&delete t[n],e.tags=t.filter(Boolean)}}},Ip={hooks:{"tags:afterResolve":function(e){for(const t of e.tags)typeof t.innerHTML=="string"&&(t.innerHTML&&["application/ld+json","application/json"].includes(t.props.type)?t.innerHTML=t.innerHTML.replace(/{a.dirty=!0,t.callHook("entries:updated",a)};let s=0,o=[];const i=[],a={plugins:i,dirty:!1,resolvedOptions:e,hooks:t,headEntries(){return o},use(l){const u=typeof l=="function"?l(a):l;(!u.key||!i.some(c=>c.key===u.key))&&(i.push(u),qi(u.mode,n)&&t.addHooks(u.hooks||{}))},push(l,u){u==null||delete u.head;const c={_i:s++,input:l,...u};return qi(c.mode,n)&&(o.push(c),r()),{dispose(){o=o.filter(f=>f._i!==c._i),t.callHook("entries:updated",a),r()},patch(f){o=o.map(d=>(d._i===c._i&&(d.input=c.input=f),d)),r()}}},async resolveTags(){const l={tags:[],entries:[...o]};await t.callHook("entries:resolve",l);for(const u of l.entries){const c=u.resolvedInput||u.input;if(u.resolvedInput=await(u.transform?u.transform(c):c),u.resolvedInput)for(const f of await _p(u)){const d={tag:f,entry:u,resolvedOptions:a.resolvedOptions};await t.callHook("tag:normalise",d),l.tags.push(d.tag)}}return await t.callHook("tags:beforeResolve",l),await t.callHook("tags:resolve",l),await t.callHook("tags:afterResolve",l),l.tags},ssr:n};return[Pp,Cp,Tp,xp,kp,Op,Lp,Ip,...(e==null?void 0:e.plugins)||[]].forEach(l=>a.use(l)),a.hooks.callHook("init",a),a}function Np(){return cc}const Mp=Hl.startsWith("3");function Dp(e){return typeof e=="function"?e():me(e)}function Js(e,t=""){if(e instanceof Promise)return e;const n=Dp(e);return!e||!n?n:Array.isArray(n)?n.map(r=>Js(r,t)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([r,s])=>r==="titleTemplate"||r.startsWith("on")?[r,me(s)]:[r,Js(s,r)])):n}const jp={hooks:{"entries:resolve":function(e){for(const t of e.entries)t.resolvedInput=Js(t.input)}}},uc="usehead";function Bp(e){return{install(n){Mp&&(n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide(uc,e))}}.install}function Fp(e={}){e.domDelayFn=e.domDelayFn||(n=>vn(()=>setTimeout(()=>n(),0)));const t=Hp(e);return t.use(jp),t.install=Bp(t),t}const Ys=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Xs="__unhead_injection_handler__";function Up(e){Ys[Xs]=e}function T_(){if(Xs in Ys)return Ys[Xs]();const e=Ie(uc);return e||Np()}function et(e){if(typeof e!="object")return e;var t,n,r=Object.prototype.toString.call(e);if(r==="[object Object]"){if(e.constructor!==Object&&typeof e.constructor=="function"){n=new e.constructor;for(t in e)e.hasOwnProperty(t)&&n[t]!==e[t]&&(n[t]=et(e[t]))}else{n={};for(t in e)t==="__proto__"?Object.defineProperty(n,t,{value:et(e[t]),configurable:!0,enumerable:!0,writable:!0}):n[t]=et(e[t])}return n}if(r==="[object Array]"){for(t=e.length,n=Array(t);t--;)n[t]=et(e[t]);return n}return r==="[object Set]"?(n=new Set,e.forEach(function(s){n.add(et(s))}),n):r==="[object Map]"?(n=new Map,e.forEach(function(s,o){n.set(et(o),et(s))}),n):r==="[object Date]"?new Date(+e):r==="[object RegExp]"?(n=new RegExp(e.source,e.flags),n.lastIndex=e.lastIndex,n):r==="[object DataView]"?new e.constructor(et(e.buffer)):r==="[object ArrayBuffer]"?e.slice(0):r.slice(-6)==="Array]"?new e.constructor(e):e}const Vp={nuxt:{buildId:"7a4208a9-5950-49f9-beb9-1f5f8fee98c5"}},Kp=Uh(Vp);function fc(){const e=le();return e._appConfig||(e._appConfig=Ht(Kp)),e._appConfig}const S_=!1,Zs=!1,Wp=!1,qp={componentName:"NuxtLink"},zp={deep:!0},Gp="#__nuxt";let gr,dc;function Qp(){var t;const e=(t=fc().nuxt)==null?void 0:t.buildId;return gr=$fetch(Lo(`builds/meta/${e}.json`)),gr.then(n=>{dc=Fh(n.matcher)}),gr}function Jr(){return gr||Qp()}async function Ho(e){return await Jr(),tc({},...dc.matchAll(e).reverse())}function zi(e,t={}){const n=Yp(e,t),r=le(),s=r._payloadCache=r._payloadCache||{};return n in s||(s[n]=Xp(e).then(o=>o?hc(n).then(i=>i||(delete s[n],null)):(s[n]=null,null))),s[n]}const Jp="_payload.json";function Yp(e,t={}){var s;const n=new URL(e,"http://localhost");if(n.host!=="localhost"||Je(n.pathname,{acceptRelative:!0}))throw new Error("Payload URL must not include hostname: "+e);const r=t.hash||(t.fresh?Date.now():(s=fc().nuxt)==null?void 0:s.buildId);return Jn(je().app.baseURL,n.pathname,Jp+(r?`?${r}`:""))}async function hc(e){const t=fetch(e).then(n=>n.text().then(pc));try{return await t}catch(n){console.warn("[nuxt] Cannot load payload ",e,n)}return null}async function Xp(e=pn().path){if(e=Ot(e),(await Jr()).prerendered.includes(e))return!0;const n=await Ho(e);return!!n.prerender&&!n.redirect}let ur=null;async function Zp(){if(ur)return ur;const e=document.getElementById("__NUXT_DATA__");if(!e)return{};const t=await pc(e.textContent||""),n=e.dataset.src?await hc(e.dataset.src):void 0;return ur={...t,...n,...window.__NUXT__},ur}async function pc(e){return await lp(e,le()._payloadRevivers)}function em(e,t){le()._payloadRevivers[e]=t}const Gi={NuxtError:e=>Yn(e),EmptyShallowRef:e=>ft(e==="_"?void 0:e==="0n"?BigInt(0):Un(e)),EmptyRef:e=>xe(e==="_"?void 0:e==="0n"?BigInt(0):Un(e)),ShallowRef:e=>ft(e),ShallowReactive:e=>St(e),Ref:e=>xe(e),Reactive:e=>Ht(e)},tm=ot({name:"nuxt:revive-payload:client",order:-30,async setup(e){let t,n;for(const r in Gi)em(r,Gi[r]);Object.assign(e.payload,([t,n]=hn(()=>e.runWithContext(Zp)),t=await t,n(),t)),window.__NUXT__=e.payload}}),nm=[],rm=ot({name:"nuxt:head",enforce:"pre",setup(e){const t=Fp({plugins:nm});Up(()=>le().vueApp._context.provides.usehead),e.vueApp.use(t);{let n=!0;const r=async()=>{n=!1,await lc(t)};t.hooks.hook("dom:beforeRender",s=>{s.shouldRender=!n}),e.hooks.hook("page:start",()=>{n=!0}),e.hooks.hook("page:finish",()=>{e.isHydrating||r()}),e.hooks.hook("app:error",r),e.hooks.hook("app:suspense:resolve",r)}}});/*! +`)},domwindow(){return r("domwindow")},bigint(s){return r("bigint:"+s.toString())},process(){return r("process")},timer(){return r("timer")},pipe(){return r("pipe")},tcp(){return r("tcp")},udp(){return r("udp")},tty(){return r("tty")},statwatcher(){return r("statwatcher")},securecontext(){return r("securecontext")},connection(){return r("connection")},zlib(){return r("zlib")},context(){return r("context")},nodescript(){return r("nodescript")},httpparser(){return r("httpparser")},dataview(){return r("dataview")},signal(){return r("signal")},fsevent(){return r("fsevent")},tlswrap(){return r("tlswrap")}}}const Yl="[native code] }",kh=Yl.length;function Mi(e){return typeof e!="function"?!1:Function.prototype.toString.call(e).slice(-kh)===Yl}class kt{constructor(t,n){t=this.words=t||[],this.sigBytes=n===void 0?t.length*4:n}toString(t){return(t||Ah).stringify(this)}concat(t){if(this.clamp(),this.sigBytes%4)for(let n=0;n>>2]>>>24-n%4*8&255;this.words[this.sigBytes+n>>>2]|=r<<24-(this.sigBytes+n)%4*8}else for(let n=0;n>>2]=t.words[n>>>2];return this.sigBytes+=t.sigBytes,this}clamp(){this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4)}clone(){return new kt([...this.words])}}const Ah={stringify(e){const t=[];for(let n=0;n>>2]>>>24-n%4*8&255;t.push((r>>>4).toString(16),(r&15).toString(16))}return t.join("")}},Oh={stringify(e){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=[];for(let r=0;r>>2]>>>24-r%4*8&255,o=e.words[r+1>>>2]>>>24-(r+1)%4*8&255,i=e.words[r+2>>>2]>>>24-(r+2)%4*8&255,a=s<<16|o<<8|i;for(let l=0;l<4&&r*8+l*6>>6*(3-l)&63))}return n.join("")}},Lh={parse(e){const t=e.length,n=[];for(let r=0;r>>2]|=(e.charCodeAt(r)&255)<<24-r%4*8;return new kt(n,t)}},Ih={parse(e){return Lh.parse(unescape(encodeURIComponent(e)))}};class Hh{constructor(){this._data=new kt,this._nDataBytes=0,this._minBufferSize=0,this.blockSize=512/32}reset(){this._data=new kt,this._nDataBytes=0}_append(t){typeof t=="string"&&(t=Ih.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}_doProcessBlock(t,n){}_process(t){let n,r=this._data.sigBytes/(this.blockSize*4);t?r=Math.ceil(r):r=Math.max((r|0)-this._minBufferSize,0);const s=r*this.blockSize,o=Math.min(s*4,this._data.sigBytes);if(s){for(let i=0;i>>7)^(m<<14|m>>>18)^m>>>3,E=jt[d-2],P=(E<<15|E>>>17)^(E<<13|E>>>19)^E>>>10;jt[d]=b+jt[d-7]+P+jt[d-16]}const p=l&u^~l&c,y=s&o^s&i^o&i,v=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),R=(l<<26|l>>>6)^(l<<21|l>>>11)^(l<<7|l>>>25),C=f+R+p+Nh[d]+jt[d],_=v+y;f=c,c=u,u=l,l=a+C|0,a=i,i=o,o=s,s=C+_|0}r[0]=r[0]+s|0,r[1]=r[1]+o|0,r[2]=r[2]+i|0,r[3]=r[3]+a|0,r[4]=r[4]+l|0,r[5]=r[5]+u|0,r[6]=r[6]+c|0,r[7]=r[7]+f|0}finalize(t){super.finalize(t);const n=this._nDataBytes*8,r=this._data.sigBytes*8;return this._data.words[r>>>5]|=128<<24-r%32,this._data.words[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),this._data.words[(r+64>>>9<<4)+15]=n,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}}function Dh(e){return new Mh().finalize(e).toString(Oh)}function Vn(e,t={}){const n=typeof e=="string"?e:Ws(e,t);return Dh(n).slice(0,10)}function jh(e,t,n={}){return e===t||Ws(e,n)===Ws(t,n)}function Bh(e,t){return{ctx:{table:e},matchAll:n=>Zl(n,e)}}function Xl(e){const t={};for(const n in e)t[n]=n==="dynamic"?new Map(Object.entries(e[n]).map(([r,s])=>[r,Xl(s)])):new Map(Object.entries(e[n]));return t}function Fh(e){return Bh(Xl(e))}function Zl(e,t,n){e.endsWith("/")&&(e=e.slice(0,-1)||"/");const r=[];for(const[o,i]of ji(t.wildcard))(e===o||e.startsWith(o+"/"))&&r.push(i);for(const[o,i]of ji(t.dynamic))if(e.startsWith(o+"/")){const a="/"+e.slice(o.length).split("/").splice(2).join("/");r.push(...Zl(a,i))}const s=t.static.get(e);return s&&r.push(s),r.filter(Boolean)}function ji(e){return[...e.entries()].sort((t,n)=>t[0].length-n[0].length)}function hs(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function qs(e,t,n=".",r){if(!hs(t))return qs(e,{},n,r);const s=Object.assign({},t);for(const o in e){if(o==="__proto__"||o==="constructor")continue;const i=e[o];i!=null&&(r&&r(s,o,i,n)||(Array.isArray(i)&&Array.isArray(s[o])?s[o]=[...i,...s[o]]:hs(i)&&hs(s[o])?s[o]=qs(i,s[o],(n?`${n}.`:"")+o.toString(),r):s[o]=i))}return s}function ec(e){return(...t)=>t.reduce((n,r)=>qs(n,r,"",e),{})}const tc=ec(),Uh=ec((e,t,n)=>{if(e[t]!==void 0&&typeof n=="function")return e[t]=n(e[t]),!0});function Vh(e,t){try{return t in e}catch{return!1}}var Kh=Object.defineProperty,Wh=(e,t,n)=>t in e?Kh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Bt=(e,t,n)=>(Wh(e,typeof t!="symbol"?t+"":t,n),n);class zs extends Error{constructor(t,n={}){super(t,n),Bt(this,"statusCode",500),Bt(this,"fatal",!1),Bt(this,"unhandled",!1),Bt(this,"statusMessage"),Bt(this,"data"),Bt(this,"cause"),n.cause&&!this.cause&&(this.cause=n.cause)}toJSON(){const t={message:this.message,statusCode:Qs(this.statusCode,500)};return this.statusMessage&&(t.statusMessage=nc(this.statusMessage)),this.data!==void 0&&(t.data=this.data),t}}Bt(zs,"__h3_error__",!0);function Gs(e){if(typeof e=="string")return new zs(e);if(qh(e))return e;const t=new zs(e.message??e.statusMessage??"",{cause:e.cause||e});if(Vh(e,"stack"))try{Object.defineProperty(t,"stack",{get(){return e.stack}})}catch{try{t.stack=e.stack}catch{}}if(e.data&&(t.data=e.data),e.statusCode?t.statusCode=Qs(e.statusCode,t.statusCode):e.status&&(t.statusCode=Qs(e.status,t.statusCode)),e.statusMessage?t.statusMessage=e.statusMessage:e.statusText&&(t.statusMessage=e.statusText),t.statusMessage){const n=t.statusMessage;nc(t.statusMessage)!==n&&console.warn("[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default.")}return e.fatal!==void 0&&(t.fatal=e.fatal),e.unhandled!==void 0&&(t.unhandled=e.unhandled),t}function qh(e){var t;return((t=e==null?void 0:e.constructor)==null?void 0:t.__h3_error__)===!0}const zh=/[^\u0009\u0020-\u007E]/g;function nc(e=""){return e.replace(zh,"")}function Qs(e,t=200){return!e||(typeof e=="string"&&(e=Number.parseInt(e,10)),e<100||e>999)?t:e}const Gh=Symbol("layout-meta"),Gr=Symbol("route"),We=()=>{var e;return(e=le())==null?void 0:e.$router},pn=()=>ml()?Ie(Gr,le()._route):le()._route;const Qh=(e,t,n={})=>{const r=le(),s=n.global||typeof e!="string",o=typeof e!="string"?e:t;if(!o){console.warn("[nuxt] No route middleware passed to `addRouteMiddleware`.",e);return}s?r._middleware.global.push(o):r._middleware.named[e]=o},Jh=()=>{try{if(le()._processingMiddleware)return!0}catch{return!1}return!1},rc=(e,t)=>{e||(e="/");const n=typeof e=="string"?e:Fl(e.path||"/",e.query||{})+(e.hash||"");if(t!=null&&t.open){const{target:a="_blank",windowFeatures:l={}}=t.open,u=Object.entries(l).filter(([c,f])=>f!==void 0).map(([c,f])=>`${c.toLowerCase()}=${f}`).join(", ");return open(n,a,u),Promise.resolve()}const r=(t==null?void 0:t.external)||Je(n,{acceptRelative:!0});if(r){if(!(t!=null&&t.external))throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");const a=qr(n).protocol;if(a&&Bd(a))throw new Error(`Cannot navigate to a URL with '${a}' protocol.`)}const s=Jh();if(!r&&s)return e;const o=We(),i=le();return r?(i._scope.stop(),t!=null&&t.replace?location.replace(n):location.href=n,s?i.isHydrating?new Promise(()=>{}):!1:Promise.resolve()):t!=null&&t.replace?o.replace(e):o.push(e)},sc="__nuxt_error",Qr=()=>vo(le().payload,"error"),Zt=e=>{const t=Yn(e);try{const n=le(),r=Qr();n.hooks.callHook("app:error",t),r.value=r.value||t}catch{throw t}return t},Yh=async(e={})=>{const t=le(),n=Qr();t.callHook("app:error:cleared",e),e.redirect&&await We().replace(e.redirect),n.value=null},Xh=e=>!!e&&typeof e=="object"&&sc in e,Yn=e=>{const t=Gs(e);return Object.defineProperty(t,sc,{value:!0,configurable:!1,writable:!1}),t},Zh="modulepreload",ep=function(e,t){return e[0]==="."?new URL(e,t).href:e},Bi={},tp=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.all(n.map(a=>{if(a=ep(a,r),a in Bi)return;Bi[a]=!0;const l=a.endsWith(".css"),u=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${a}"]${u}`))return;const c=document.createElement("link");if(c.rel=l?"stylesheet":Zh,l||(c.as="script",c.crossOrigin=""),c.href=a,i&&c.setAttribute("nonce",i),document.head.appendChild(c),l)return new Promise((f,d)=>{c.addEventListener("load",f),c.addEventListener("error",()=>d(new Error(`Unable to preload CSS for ${a}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},J=(...e)=>tp(...e).catch(t=>{const n=new Event("nuxt.preloadError");throw n.payload=t,window.dispatchEvent(n),t}),np=-1,rp=-2,sp=-3,op=-4,ip=-5,ap=-6;function lp(e,t){return cp(JSON.parse(e),t)}function cp(e,t){if(typeof e=="number")return s(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);function s(o,i=!1){if(o===np)return;if(o===sp)return NaN;if(o===op)return 1/0;if(o===ip)return-1/0;if(o===ap)return-0;if(i)throw new Error("Invalid input");if(o in r)return r[o];const a=n[o];if(!a||typeof a!="object")r[o]=a;else if(Array.isArray(a))if(typeof a[0]=="string"){const l=a[0],u=t==null?void 0:t[l];if(u)return r[o]=u(s(a[1]));switch(l){case"Date":r[o]=new Date(a[1]);break;case"Set":const c=new Set;r[o]=c;for(let p=1;p>>9)+65536).toString(16).substring(1,8).toLowerCase()}function Fi(e){return e._h||Io(e._d?e._d:`${e.tag}:${e.textContent||e.innerHTML||""}:${Object.entries(e.props).map(([t,n])=>`${t}:${String(n)}`).join(",")}`)}function ic(e,t){const{props:n,tag:r}=e;if(hp.includes(r))return r;if(r==="link"&&n.rel==="canonical")return"canonical";if(n.charset)return"charset";const s=["id"];r==="meta"&&s.push("name","property","http-equiv");for(const o of s)if(typeof n[o]<"u"){const i=String(n[o]);return`${r}:${o}:${i}`}return!1}function Ui(e,t){return e==null?t||null:typeof e=="function"?e(t):e}async function mp(e,t,n){const r={tag:e,props:await ac(typeof t=="object"&&typeof t!="function"&&!(t instanceof Promise)?{...t}:{[["script","noscript","style"].includes(e)?"innerHTML":"textContent"]:t},["templateParams","titleTemplate"].includes(e))};return oc.forEach(s=>{const o=typeof r.props[s]<"u"?r.props[s]:n[s];typeof o<"u"&&((!["innerHTML","textContent","children"].includes(s)||fp.includes(r.tag))&&(r[s==="children"?"innerHTML":s]=o),delete r.props[s])}),r.props.body&&(r.tagPosition="bodyClose",delete r.props.body),r.tag==="script"&&typeof r.innerHTML=="object"&&(r.innerHTML=JSON.stringify(r.innerHTML),r.props.type=r.props.type||"application/json"),Array.isArray(r.props.content)?r.props.content.map(s=>({...r,props:{...r.props,content:s}})):r}function gp(e,t){var r;const n=e==="class"?" ":";";return typeof t=="object"&&!Array.isArray(t)&&(t=Object.entries(t).filter(([,s])=>s).map(([s,o])=>e==="style"?`${s}:${o}`:s)),(r=Array.isArray(t)?t.join(n):t)==null?void 0:r.split(n).filter(s=>s.trim()).filter(Boolean).join(n)}async function ac(e,t){for(const n of Object.keys(e)){if(["class","style"].includes(n)){e[n]=gp(n,e[n]);continue}if(e[n]instanceof Promise&&(e[n]=await e[n]),!t&&!oc.includes(n)){const r=String(e[n]),s=n.startsWith("data-");r==="true"||r===""?e[n]=s?"true":!0:e[n]||(s&&r==="false"?e[n]="false":delete e[n])}}return e}const yp=10;async function _p(e){const t=[];return Object.entries(e.resolvedInput).filter(([n,r])=>typeof r<"u"&&dp.includes(n)).forEach(([n,r])=>{const s=up(r);t.push(...s.map(o=>mp(n,o,e)).flat())}),(await Promise.all(t)).flat().filter(Boolean).map((n,r)=>(n._e=e._i,e.mode&&(n._m=e.mode),n._p=(e._i<l&&l[u]||void 0,t):a=t[i],typeof a<"u"?(a||"").replace(/"/g,'\\"'):!1}let s=e;try{s=decodeURI(e)}catch{}return(s.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(i=>{const a=r(i.slice(1));typeof a=="string"&&(e=e.replace(new RegExp(`\\${i}(\\W|$)`,"g"),(l,u)=>`${a}${u}`).trim())}),e.includes(vt)&&(e.endsWith(vt)&&(e=e.slice(0,-vt.length).trim()),e.startsWith(vt)&&(e=e.slice(vt.length).trim()),e=e.replace(new RegExp(`\\${vt}\\s*\\${vt}`,"g"),vt),e=mr(e,{separator:n},n)),e}async function lc(e,t={}){var c;const n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;const r={shouldRender:!0,tags:[]};if(await e.hooks.callHook("dom:beforeRender",r),!r.shouldRender)return;const s=(await e.resolveTags()).map(f=>({tag:f,id:pr.includes(f.tag)?Fi(f):f.tag,shouldRender:!0}));let o=e._dom;if(!o){o={elMap:{htmlAttrs:n.documentElement,bodyAttrs:n.body}};for(const f of["body","head"]){const d=(c=n[f])==null?void 0:c.children,p=[];for(const y of[...d].filter(v=>pr.includes(v.tagName.toLowerCase()))){const v={tag:y.tagName.toLowerCase(),props:await ac(y.getAttributeNames().reduce((_,m)=>({..._,[m]:y.getAttribute(m)}),{})),innerHTML:y.innerHTML};let R=1,C=ic(v);for(;C&&p.find(_=>_._d===C);)C=`${C}:${R++}`;v._d=C||void 0,p.push(v),o.elMap[y.getAttribute("data-hid")||Fi(v)]=y}}}o.pendingSideEffects={...o.sideEffects||{}},o.sideEffects={};function i(f,d,p){const y=`${f}:${d}`;o.sideEffects[y]=p,delete o.pendingSideEffects[y]}function a({id:f,$el:d,tag:p}){const y=p.tag.endsWith("Attrs");o.elMap[f]=d,y||(["textContent","innerHTML"].forEach(v=>{p[v]&&p[v]!==d[v]&&(d[v]=p[v])}),i(f,"el",()=>{var v;(v=o.elMap[f])==null||v.remove(),delete o.elMap[f]}));for(const[v,R]of Object.entries(p._eventHandlers||{}))d.getAttribute(`data-${v}`)!==""&&((p.tag==="bodyAttrs"?n.defaultView:d).addEventListener(v.replace("on",""),R.bind(d)),d.setAttribute(`data-${v}`,""));Object.entries(p.props).forEach(([v,R])=>{const C=`attr:${v}`;if(v==="class")for(const _ of(R||"").split(" ").filter(Boolean))y&&i(f,`${C}:${_}`,()=>d.classList.remove(_)),!d.classList.contains(_)&&d.classList.add(_);else if(v==="style")for(const _ of(R||"").split(";").filter(Boolean)){const[m,...b]=_.split(":").map(E=>E.trim());i(f,`${C}:${_}:${m}`,()=>{d.style.removeProperty(m)}),d.style.setProperty(m,b.join(":"))}else d.getAttribute(v)!==R&&d.setAttribute(v,R===!0?"":String(R)),y&&i(f,C,()=>d.removeAttribute(v))})}const l=[],u={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const f of s){const{tag:d,shouldRender:p,id:y}=f;if(p){if(d.tag==="title"){n.title=d.textContent;continue}f.$el=f.$el||o.elMap[y],f.$el?a(f):pr.includes(d.tag)&&l.push(f)}}for(const f of l){const d=f.tag.tagPosition||"head";f.$el=n.createElement(f.tag.tag),a(f),u[d]=u[d]||n.createDocumentFragment(),u[d].appendChild(f.$el)}for(const f of s)await e.hooks.callHook("dom:renderTag",f,n,i);u.head&&n.head.appendChild(u.head),u.bodyOpen&&n.body.insertBefore(u.bodyOpen,n.body.firstChild),u.bodyClose&&n.body.appendChild(u.bodyClose),Object.values(o.pendingSideEffects).forEach(f=>f()),e._dom=o,e.dirty=!1,await e.hooks.callHook("dom:rendered",{renders:s})}async function bp(e,t={}){const n=t.delayFn||(r=>setTimeout(r,10));return e._domUpdatePromise=e._domUpdatePromise||new Promise(r=>n(async()=>{await lc(e,t),delete e._domUpdatePromise,r()}))}function wp(e){return t=>{var r,s;const n=((s=(r=t.resolvedOptions.document)==null?void 0:r.head.querySelector('script[id="unhead:payload"]'))==null?void 0:s.innerHTML)||!1;return n&&t.push(JSON.parse(n)),{mode:"client",hooks:{"entries:updated":function(o){bp(o,e)}}}}}const Ep=["templateParams","htmlAttrs","bodyAttrs"],Pp={hooks:{"tag:normalise":function({tag:e}){["hid","vmid","key"].forEach(r=>{e.props[r]&&(e.key=e.props[r],delete e.props[r])});const n=ic(e)||(e.key?`${e.tag}:${e.key}`:!1);n&&(e._d=n)},"tags:resolve":function(e){const t={};e.tags.forEach(r=>{const s=(r.key?`${r.tag}:${r.key}`:r._d)||r._p,o=t[s];if(o){let a=r==null?void 0:r.tagDuplicateStrategy;if(!a&&Ep.includes(r.tag)&&(a="merge"),a==="merge"){const l=o.props;["class","style"].forEach(u=>{l[u]&&(r.props[u]?(u==="style"&&!l[u].endsWith(";")&&(l[u]+=";"),r.props[u]=`${l[u]} ${r.props[u]}`):r.props[u]=l[u])}),t[s].props={...l,...r.props};return}else if(r._e===o._e){o._duped=o._duped||[],r._d=`${o._d}:${o._duped.length+1}`,o._duped.push(r);return}else if(Lr(r)>Lr(o))return}const i=Object.keys(r.props).length+(r.innerHTML?1:0)+(r.textContent?1:0);if(pr.includes(r.tag)&&i===0){delete t[s];return}t[s]=r});const n=[];Object.values(t).forEach(r=>{const s=r._duped;delete r._duped,n.push(r),s&&n.push(...s)}),e.tags=n,e.tags=e.tags.filter(r=>!(r.tag==="meta"&&(r.props.name||r.props.property)&&!r.props.content))}}},Cp={mode:"server",hooks:{"tags:resolve":function(e){const t={};e.tags.filter(n=>["titleTemplate","templateParams","title"].includes(n.tag)&&n._m==="server").forEach(n=>{t[n.tag]=n.tag.startsWith("title")?n.textContent:n.props}),Object.keys(t).length&&e.tags.push({tag:"script",innerHTML:JSON.stringify(t),props:{id:"unhead:payload",type:"application/json"}})}}},Rp=["script","link","bodyAttrs"],Tp=e=>({hooks:{"tags:resolve":function(t){for(const n of t.tags.filter(r=>Rp.includes(r.tag)))Object.entries(n.props).forEach(([r,s])=>{r.startsWith("on")&&typeof s=="function"&&(e.ssr&&Wi.includes(r)?n.props[r]=`this.dataset.${r}fired = true`:delete n.props[r],n._eventHandlers=n._eventHandlers||{},n._eventHandlers[r]=s)}),e.ssr&&n._eventHandlers&&(n.props.src||n.props.href)&&(n.key=n.key||Io(n.props.src||n.props.href))},"dom:renderTag":function({$el:t,tag:n}){var r,s;for(const o of Object.keys((t==null?void 0:t.dataset)||{}).filter(i=>Wi.some(a=>`${a}fired`===i))){const i=o.replace("fired","");(s=(r=n._eventHandlers)==null?void 0:r[i])==null||s.call(t,new Event(i.replace("on","")))}}}}),Sp=["link","style","script","noscript"],xp={hooks:{"tag:normalise":({tag:e})=>{e.key&&Sp.includes(e.tag)&&(e.props["data-hid"]=e._h=Io(e.key))}}},kp={hooks:{"tags:resolve":e=>{const t=n=>{var r;return(r=e.tags.find(s=>s._d===n))==null?void 0:r._p};for(const{prefix:n,offset:r}of vp)for(const s of e.tags.filter(o=>typeof o.tagPriority=="string"&&o.tagPriority.startsWith(n))){const o=t(s.tagPriority.replace(n,""));typeof o<"u"&&(s._p=o+r)}e.tags.sort((n,r)=>n._p-r._p).sort((n,r)=>Lr(n)-Lr(r))}}},Ap={meta:"content",link:"href",htmlAttrs:"lang"},Op=e=>({hooks:{"tags:resolve":t=>{var a;const{tags:n}=t,r=(a=n.find(l=>l.tag==="title"))==null?void 0:a.textContent,s=n.findIndex(l=>l.tag==="templateParams"),o=s!==-1?n[s].props:{},i=o.separator||"|";delete o.separator,o.pageTitle=mr(o.pageTitle||r||"",o,i);for(const l of n.filter(u=>u.processTemplateParams!==!1)){const u=Ap[l.tag];u&&typeof l.props[u]=="string"?l.props[u]=mr(l.props[u],o,i):(l.processTemplateParams===!0||["titleTemplate","title"].includes(l.tag))&&["innerHTML","textContent"].forEach(c=>{typeof l[c]=="string"&&(l[c]=mr(l[c],o,i))})}e._templateParams=o,e._separator=i,t.tags=n.filter(l=>l.tag!=="templateParams")}}}),Lp={hooks:{"tags:resolve":e=>{const{tags:t}=e;let n=t.findIndex(s=>s.tag==="titleTemplate");const r=t.findIndex(s=>s.tag==="title");if(r!==-1&&n!==-1){const s=Ui(t[n].textContent,t[r].textContent);s!==null?t[r].textContent=s||t[r].textContent:delete t[r]}else if(n!==-1){const s=Ui(t[n].textContent);s!==null&&(t[n].textContent=s,t[n].tag="title",n=-1)}n!==-1&&delete t[n],e.tags=t.filter(Boolean)}}},Ip={hooks:{"tags:afterResolve":function(e){for(const t of e.tags)typeof t.innerHTML=="string"&&(t.innerHTML&&["application/ld+json","application/json"].includes(t.props.type)?t.innerHTML=t.innerHTML.replace(/{a.dirty=!0,t.callHook("entries:updated",a)};let s=0,o=[];const i=[],a={plugins:i,dirty:!1,resolvedOptions:e,hooks:t,headEntries(){return o},use(l){const u=typeof l=="function"?l(a):l;(!u.key||!i.some(c=>c.key===u.key))&&(i.push(u),qi(u.mode,n)&&t.addHooks(u.hooks||{}))},push(l,u){u==null||delete u.head;const c={_i:s++,input:l,...u};return qi(c.mode,n)&&(o.push(c),r()),{dispose(){o=o.filter(f=>f._i!==c._i),t.callHook("entries:updated",a),r()},patch(f){o=o.map(d=>(d._i===c._i&&(d.input=c.input=f),d)),r()}}},async resolveTags(){const l={tags:[],entries:[...o]};await t.callHook("entries:resolve",l);for(const u of l.entries){const c=u.resolvedInput||u.input;if(u.resolvedInput=await(u.transform?u.transform(c):c),u.resolvedInput)for(const f of await _p(u)){const d={tag:f,entry:u,resolvedOptions:a.resolvedOptions};await t.callHook("tag:normalise",d),l.tags.push(d.tag)}}return await t.callHook("tags:beforeResolve",l),await t.callHook("tags:resolve",l),await t.callHook("tags:afterResolve",l),l.tags},ssr:n};return[Pp,Cp,Tp,xp,kp,Op,Lp,Ip,...(e==null?void 0:e.plugins)||[]].forEach(l=>a.use(l)),a.hooks.callHook("init",a),a}function Np(){return cc}const Mp=Hl.startsWith("3");function Dp(e){return typeof e=="function"?e():me(e)}function Js(e,t=""){if(e instanceof Promise)return e;const n=Dp(e);return!e||!n?n:Array.isArray(n)?n.map(r=>Js(r,t)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([r,s])=>r==="titleTemplate"||r.startsWith("on")?[r,me(s)]:[r,Js(s,r)])):n}const jp={hooks:{"entries:resolve":function(e){for(const t of e.entries)t.resolvedInput=Js(t.input)}}},uc="usehead";function Bp(e){return{install(n){Mp&&(n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide(uc,e))}}.install}function Fp(e={}){e.domDelayFn=e.domDelayFn||(n=>vn(()=>setTimeout(()=>n(),0)));const t=Hp(e);return t.use(jp),t.install=Bp(t),t}const Ys=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Xs="__unhead_injection_handler__";function Up(e){Ys[Xs]=e}function T_(){if(Xs in Ys)return Ys[Xs]();const e=Ie(uc);return e||Np()}function et(e){if(typeof e!="object")return e;var t,n,r=Object.prototype.toString.call(e);if(r==="[object Object]"){if(e.constructor!==Object&&typeof e.constructor=="function"){n=new e.constructor;for(t in e)e.hasOwnProperty(t)&&n[t]!==e[t]&&(n[t]=et(e[t]))}else{n={};for(t in e)t==="__proto__"?Object.defineProperty(n,t,{value:et(e[t]),configurable:!0,enumerable:!0,writable:!0}):n[t]=et(e[t])}return n}if(r==="[object Array]"){for(t=e.length,n=Array(t);t--;)n[t]=et(e[t]);return n}return r==="[object Set]"?(n=new Set,e.forEach(function(s){n.add(et(s))}),n):r==="[object Map]"?(n=new Map,e.forEach(function(s,o){n.set(et(o),et(s))}),n):r==="[object Date]"?new Date(+e):r==="[object RegExp]"?(n=new RegExp(e.source,e.flags),n.lastIndex=e.lastIndex,n):r==="[object DataView]"?new e.constructor(et(e.buffer)):r==="[object ArrayBuffer]"?e.slice(0):r.slice(-6)==="Array]"?new e.constructor(e):e}const Vp={nuxt:{buildId:"18104f39-2737-4f59-ae26-8b4aaf870380"}},Kp=Uh(Vp);function fc(){const e=le();return e._appConfig||(e._appConfig=Ht(Kp)),e._appConfig}const S_=!1,Zs=!1,Wp=!1,qp={componentName:"NuxtLink"},zp={deep:!0},Gp="#__nuxt";let gr,dc;function Qp(){var t;const e=(t=fc().nuxt)==null?void 0:t.buildId;return gr=$fetch(Lo(`builds/meta/${e}.json`)),gr.then(n=>{dc=Fh(n.matcher)}),gr}function Jr(){return gr||Qp()}async function Ho(e){return await Jr(),tc({},...dc.matchAll(e).reverse())}function zi(e,t={}){const n=Yp(e,t),r=le(),s=r._payloadCache=r._payloadCache||{};return n in s||(s[n]=Xp(e).then(o=>o?hc(n).then(i=>i||(delete s[n],null)):(s[n]=null,null))),s[n]}const Jp="_payload.json";function Yp(e,t={}){var s;const n=new URL(e,"http://localhost");if(n.host!=="localhost"||Je(n.pathname,{acceptRelative:!0}))throw new Error("Payload URL must not include hostname: "+e);const r=t.hash||(t.fresh?Date.now():(s=fc().nuxt)==null?void 0:s.buildId);return Jn(je().app.baseURL,n.pathname,Jp+(r?`?${r}`:""))}async function hc(e){const t=fetch(e).then(n=>n.text().then(pc));try{return await t}catch(n){console.warn("[nuxt] Cannot load payload ",e,n)}return null}async function Xp(e=pn().path){if(e=Ot(e),(await Jr()).prerendered.includes(e))return!0;const n=await Ho(e);return!!n.prerender&&!n.redirect}let ur=null;async function Zp(){if(ur)return ur;const e=document.getElementById("__NUXT_DATA__");if(!e)return{};const t=await pc(e.textContent||""),n=e.dataset.src?await hc(e.dataset.src):void 0;return ur={...t,...n,...window.__NUXT__},ur}async function pc(e){return await lp(e,le()._payloadRevivers)}function em(e,t){le()._payloadRevivers[e]=t}const Gi={NuxtError:e=>Yn(e),EmptyShallowRef:e=>ft(e==="_"?void 0:e==="0n"?BigInt(0):Un(e)),EmptyRef:e=>xe(e==="_"?void 0:e==="0n"?BigInt(0):Un(e)),ShallowRef:e=>ft(e),ShallowReactive:e=>St(e),Ref:e=>xe(e),Reactive:e=>Ht(e)},tm=ot({name:"nuxt:revive-payload:client",order:-30,async setup(e){let t,n;for(const r in Gi)em(r,Gi[r]);Object.assign(e.payload,([t,n]=hn(()=>e.runWithContext(Zp)),t=await t,n(),t)),window.__NUXT__=e.payload}}),nm=[],rm=ot({name:"nuxt:head",enforce:"pre",setup(e){const t=Fp({plugins:nm});Up(()=>le().vueApp._context.provides.usehead),e.vueApp.use(t);{let n=!0;const r=async()=>{n=!1,await lc(t)};t.hooks.hook("dom:beforeRender",s=>{s.shouldRender=!n}),e.hooks.hook("page:start",()=>{n=!0}),e.hooks.hook("page:finish",()=>{e.isHydrating||r()}),e.hooks.hook("app:error",r),e.hooks.hook("app:suspense:resolve",r)}}});/*! * vue-router v4.3.2 * (c) 2024 Eduardo San Martin Morote * @license MIT - */const Jt=typeof document<"u";function sm(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ie=Object.assign;function ps(e,t){const n={};for(const r in t){const s=t[r];n[r]=Ye(s)?s.map(e):e(s)}return n}const Hn=()=>{},Ye=Array.isArray,mc=/#/g,om=/&/g,im=/\//g,am=/=/g,lm=/\?/g,gc=/\+/g,cm=/%5B/g,um=/%5D/g,yc=/%5E/g,fm=/%60/g,_c=/%7B/g,dm=/%7C/g,vc=/%7D/g,hm=/%20/g;function $o(e){return encodeURI(""+e).replace(dm,"|").replace(cm,"[").replace(um,"]")}function pm(e){return $o(e).replace(_c,"{").replace(vc,"}").replace(yc,"^")}function eo(e){return $o(e).replace(gc,"%2B").replace(hm,"+").replace(mc,"%23").replace(om,"%26").replace(fm,"`").replace(_c,"{").replace(vc,"}").replace(yc,"^")}function mm(e){return eo(e).replace(am,"%3D")}function gm(e){return $o(e).replace(mc,"%23").replace(lm,"%3F")}function ym(e){return e==null?"":gm(e).replace(im,"%2F")}function Kn(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const _m=/\/$/,vm=e=>e.replace(_m,"");function ms(e,t,n="/"){let r,s={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return a=0&&(l=-1),l>-1&&(r=t.slice(0,l),o=t.slice(l+1,a>-1?a:t.length),s=e(o)),a>-1&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=Pm(r??t,n),{fullPath:r+(o&&"?")+o+i,path:r,query:s,hash:Kn(i)}}function bm(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Qi(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function wm(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&mn(t.matched[r],n.matched[s])&&bc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function mn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function bc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Em(e[n],t[n]))return!1;return!0}function Em(e,t){return Ye(e)?Ji(e,t):Ye(t)?Ji(t,e):e===t}function Ji(e,t){return Ye(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Pm(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,a;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}var Wn;(function(e){e.pop="pop",e.push="push"})(Wn||(Wn={}));var $n;(function(e){e.back="back",e.forward="forward",e.unknown=""})($n||($n={}));function Cm(e){if(!e)if(Jt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),vm(e)}const Rm=/^[^#]+#/;function Tm(e,t){return e.replace(Rm,"#")+t}function Sm(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Yr=()=>({left:window.scrollX,top:window.scrollY});function xm(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Sm(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Yi(e,t){return(history.state?history.state.position-t:-1)+e}const to=new Map;function km(e,t){to.set(e,t)}function Am(e){const t=to.get(e);return to.delete(e),t}let Om=()=>location.protocol+"//"+location.host;function wc(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let a=s.includes(e.slice(o))?e.slice(o).length:1,l=s.slice(a);return l[0]!=="/"&&(l="/"+l),Qi(l,"")}return Qi(n,e)+r+s}function Lm(e,t,n,r){let s=[],o=[],i=null;const a=({state:d})=>{const p=wc(e,location),y=n.value,v=t.value;let R=0;if(d){if(n.value=p,t.value=d,i&&i===y){i=null;return}R=v?d.position-v.position:0}else r(p);s.forEach(C=>{C(n.value,y,{delta:R,type:Wn.pop,direction:R?R>0?$n.forward:$n.back:$n.unknown})})};function l(){i=n.value}function u(d){s.push(d);const p=()=>{const y=s.indexOf(d);y>-1&&s.splice(y,1)};return o.push(p),p}function c(){const{history:d}=window;d.state&&d.replaceState(ie({},d.state,{scroll:Yr()}),"")}function f(){for(const d of o)d();o=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:l,listen:u,destroy:f}}function Xi(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?Yr():null}}function Im(e){const{history:t,location:n}=window,r={value:wc(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:Om()+e+l;try{t[c?"replaceState":"pushState"](u,"",d),s.value=u}catch(p){console.error(p),n[c?"replace":"assign"](d)}}function i(l,u){const c=ie({},t.state,Xi(s.value.back,l,s.value.forward,!0),u,{position:s.value.position});o(l,c,!0),r.value=l}function a(l,u){const c=ie({},s.value,t.state,{forward:l,scroll:Yr()});o(c.current,c,!0);const f=ie({},Xi(r.value,l,null),{position:c.position+1},u);o(l,f,!1),r.value=l}return{location:r,state:s,push:a,replace:i}}function Ec(e){e=Cm(e);const t=Im(e),n=Lm(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=ie({location:"",base:e,go:r,createHref:Tm.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function Hm(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),Ec(e)}function $m(e){return typeof e=="string"||e&&typeof e=="object"}function Pc(e){return typeof e=="string"||typeof e=="symbol"}const Ge={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Cc=Symbol("");var Zi;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Zi||(Zi={}));function gn(e,t){return ie(new Error,{type:e,[Cc]:!0},t)}function it(e,t){return e instanceof Error&&Cc in e&&(t==null||!!(e.type&t))}const ea="[^/]+?",Nm={sensitive:!1,strict:!1,start:!0,end:!0},Mm=/[.+*?^${}()[\]/\\]/g;function Dm(e,t){const n=ie({},Nm,t),r=[];let s=n.start?"^":"";const o=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(s+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function Bm(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const Fm={type:0,value:""},Um=/[a-zA-Z0-9_]/;function Vm(e){if(!e)return[[]];if(e==="/")return[[Fm]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(p){throw new Error(`ERR (${n})/"${u}": ${p}`)}let n=0,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,l,u="",c="";function f(){u&&(n===0?o.push({type:0,value:u}):n===1||n===2||n===3?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;a{i(_)}:Hn}function i(c){if(Pc(c)){const f=r.get(c);f&&(r.delete(c),n.splice(n.indexOf(f),1),f.children.forEach(i),f.alias.forEach(i))}else{const f=n.indexOf(c);f>-1&&(n.splice(f,1),c.record.name&&r.delete(c.record.name),c.children.forEach(i),c.alias.forEach(i))}}function a(){return n}function l(c){let f=0;for(;f=0&&(c.record.path!==n[f].record.path||!Rc(c,n[f]));)f++;n.splice(f,0,c),c.record.name&&!ra(c)&&r.set(c.record.name,c)}function u(c,f){let d,p={},y,v;if("name"in c&&c.name){if(d=r.get(c.name),!d)throw gn(1,{location:c});v=d.record.name,p=ie(na(f.params,d.keys.filter(_=>!_.optional).concat(d.parent?d.parent.keys.filter(_=>_.optional):[]).map(_=>_.name)),c.params&&na(c.params,d.keys.map(_=>_.name))),y=d.stringify(p)}else if(c.path!=null)y=c.path,d=n.find(_=>_.re.test(y)),d&&(p=d.parse(y),v=d.record.name);else{if(d=f.name?r.get(f.name):n.find(_=>_.re.test(f.path)),!d)throw gn(1,{location:c,currentLocation:f});v=d.record.name,p=ie({},f.params,c.params),y=d.stringify(p)}const R=[];let C=d;for(;C;)R.unshift(C.record),C=C.parent;return{name:v,path:y,params:p,matched:R,meta:Gm(R)}}return e.forEach(c=>o(c)),{addRoute:o,resolve:u,removeRoute:i,getRoutes:a,getRecordMatcher:s}}function na(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function qm(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:zm(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function zm(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function ra(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Gm(e){return e.reduce((t,n)=>ie(t,n.meta),{})}function sa(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function Rc(e,t){return t.children.some(n=>n===e||Rc(e,n))}function Qm(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&eo(o)):[r&&eo(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Jm(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=Ye(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const Ym=Symbol(""),ia=Symbol(""),No=Symbol(""),Mo=Symbol(""),no=Symbol("");function Pn(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Rt(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const u=d=>{d===!1?l(gn(4,{from:n,to:t})):d instanceof Error?l(d):$m(d)?l(gn(2,{from:t,to:d})):(i&&r.enterCallbacks[s]===i&&typeof d=="function"&&i.push(d),a())},c=o(()=>e.call(r&&r.instances[s],t,n,u));let f=Promise.resolve(c);e.length<3&&(f=f.then(u)),f.catch(d=>l(d))})}function gs(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Xm(l)){const c=(l.__vccOpts||l)[t];c&&o.push(Rt(c,n,r,i,a,s))}else{let u=l();o.push(()=>u.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${a}" at "${i.path}"`));const f=sm(c)?c.default:c;i.components[a]=f;const p=(f.__vccOpts||f)[t];return p&&Rt(p,n,r,i,a,s)()}))}}return o}function Xm(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function aa(e){const t=Ie(No),n=Ie(Mo),r=de(()=>{const l=me(e.to);return t.resolve(l)}),s=de(()=>{const{matched:l}=r.value,{length:u}=l,c=l[u-1],f=n.matched;if(!c||!f.length)return-1;const d=f.findIndex(mn.bind(null,c));if(d>-1)return d;const p=la(l[u-2]);return u>1&&la(c)===p&&f[f.length-1].path!==p?f.findIndex(mn.bind(null,l[u-2])):d}),o=de(()=>s.value>-1&&ng(n.params,r.value.params)),i=de(()=>s.value>-1&&s.value===n.matched.length-1&&bc(n.params,r.value.params));function a(l={}){return tg(l)?t[me(e.replace)?"replace":"push"](me(e.to)).catch(Hn):Promise.resolve()}return{route:r,href:de(()=>r.value.href),isActive:o,isExactActive:i,navigate:a}}const Zm=$t({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:aa,setup(e,{slots:t}){const n=Ht(aa(e)),{options:r}=Ie(No),s=de(()=>({[ca(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[ca(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:He("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),eg=Zm;function tg(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function ng(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!Ye(s)||s.length!==r.length||r.some((o,i)=>o!==s[i]))return!1}return!0}function la(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ca=(e,t,n)=>e??t??n,rg=$t({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Ie(no),s=de(()=>e.route||r.value),o=Ie(ia,0),i=de(()=>{let u=me(o);const{matched:c}=s.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),a=de(()=>s.value.matched[i.value]);an(ia,de(()=>i.value+1)),an(Ym,a),an(no,s);const l=xe();return rt(()=>[l.value,a.value,e.name],([u,c,f],[d,p,y])=>{c&&(c.instances[f]=u,p&&p!==c&&u&&u===d&&(c.leaveGuards.size||(c.leaveGuards=p.leaveGuards),c.updateGuards.size||(c.updateGuards=p.updateGuards))),u&&c&&(!p||!mn(c,p)||!d)&&(c.enterCallbacks[f]||[]).forEach(v=>v(u))},{flush:"post"}),()=>{const u=s.value,c=e.name,f=a.value,d=f&&f.components[c];if(!d)return ua(n.default,{Component:d,route:u});const p=f.props[c],y=p?p===!0?u.params:typeof p=="function"?p(u):p:null,R=He(d,ie({},y,t,{onVnodeUnmounted:C=>{C.component.isUnmounted&&(f.instances[c]=null)},ref:l}));return ua(n.default,{Component:R,route:u})||R}}});function ua(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Tc=rg;function sg(e){const t=Wm(e.routes,e),n=e.parseQuery||Qm,r=e.stringifyQuery||oa,s=e.history,o=Pn(),i=Pn(),a=Pn(),l=ft(Ge);let u=Ge;Jt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=ps.bind(null,S=>""+S),f=ps.bind(null,ym),d=ps.bind(null,Kn);function p(S,B){let D,V;return Pc(S)?(D=t.getRecordMatcher(S),V=B):V=S,t.addRoute(V,D)}function y(S){const B=t.getRecordMatcher(S);B&&t.removeRoute(B)}function v(){return t.getRoutes().map(S=>S.record)}function R(S){return!!t.getRecordMatcher(S)}function C(S,B){if(B=ie({},B||l.value),typeof S=="string"){const g=ms(n,S,B.path),w=t.resolve({path:g.path},B),x=s.createHref(g.fullPath);return ie(g,w,{params:d(w.params),hash:Kn(g.hash),redirectedFrom:void 0,href:x})}let D;if(S.path!=null)D=ie({},S,{path:ms(n,S.path,B.path).path});else{const g=ie({},S.params);for(const w in g)g[w]==null&&delete g[w];D=ie({},S,{params:f(g)}),B.params=f(B.params)}const V=t.resolve(D,B),se=S.hash||"";V.params=c(d(V.params));const he=bm(r,ie({},S,{hash:pm(se),path:V.path})),h=s.createHref(he);return ie({fullPath:he,hash:se,query:r===oa?Jm(S.query):S.query||{}},V,{redirectedFrom:void 0,href:h})}function _(S){return typeof S=="string"?ms(n,S,l.value.path):ie({},S)}function m(S,B){if(u!==S)return gn(8,{from:B,to:S})}function b(S){return O(S)}function E(S){return b(ie(_(S),{replace:!0}))}function P(S){const B=S.matched[S.matched.length-1];if(B&&B.redirect){const{redirect:D}=B;let V=typeof D=="function"?D(S):D;return typeof V=="string"&&(V=V.includes("?")||V.includes("#")?V=_(V):{path:V},V.params={}),ie({query:S.query,hash:S.hash,params:V.path!=null?{}:S.params},V)}}function O(S,B){const D=u=C(S),V=l.value,se=S.state,he=S.force,h=S.replace===!0,g=P(D);if(g)return O(ie(_(g),{state:typeof g=="object"?ie({},se,g.state):se,force:he,replace:h}),B||D);const w=D;w.redirectedFrom=B;let x;return!he&&wm(r,V,D)&&(x=gn(16,{to:w,from:V}),Xe(V,V,!0,!1)),(x?Promise.resolve(x):$(w,V)).catch(T=>it(T)?it(T,2)?T:pt(T):K(T,w,V)).then(T=>{if(T){if(it(T,2))return O(ie({replace:h},_(T.to),{state:typeof T.to=="object"?ie({},se,T.to.state):se,force:he}),B||w)}else T=H(w,V,!0,h,se);return Q(w,V,T),T})}function k(S,B){const D=m(S,B);return D?Promise.reject(D):Promise.resolve()}function N(S){const B=Gt.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(S):S()}function $(S,B){let D;const[V,se,he]=og(S,B);D=gs(V.reverse(),"beforeRouteLeave",S,B);for(const g of V)g.leaveGuards.forEach(w=>{D.push(Rt(w,S,B))});const h=k.bind(null,S,B);return D.push(h),Ce(D).then(()=>{D=[];for(const g of o.list())D.push(Rt(g,S,B));return D.push(h),Ce(D)}).then(()=>{D=gs(se,"beforeRouteUpdate",S,B);for(const g of se)g.updateGuards.forEach(w=>{D.push(Rt(w,S,B))});return D.push(h),Ce(D)}).then(()=>{D=[];for(const g of he)if(g.beforeEnter)if(Ye(g.beforeEnter))for(const w of g.beforeEnter)D.push(Rt(w,S,B));else D.push(Rt(g.beforeEnter,S,B));return D.push(h),Ce(D)}).then(()=>(S.matched.forEach(g=>g.enterCallbacks={}),D=gs(he,"beforeRouteEnter",S,B,N),D.push(h),Ce(D))).then(()=>{D=[];for(const g of i.list())D.push(Rt(g,S,B));return D.push(h),Ce(D)}).catch(g=>it(g,8)?g:Promise.reject(g))}function Q(S,B,D){a.list().forEach(V=>N(()=>V(S,B,D)))}function H(S,B,D,V,se){const he=m(S,B);if(he)return he;const h=B===Ge,g=Jt?history.state:{};D&&(V||h?s.replace(S.fullPath,ie({scroll:h&&g&&g.scroll},se)):s.push(S.fullPath,se)),l.value=S,Xe(S,B,D,h),pt()}let G;function ce(){G||(G=s.listen((S,B,D)=>{if(!Xn.listening)return;const V=C(S),se=P(V);if(se){O(ie(se,{replace:!0}),V).catch(Hn);return}u=V;const he=l.value;Jt&&km(Yi(he.fullPath,D.delta),Yr()),$(V,he).catch(h=>it(h,12)?h:it(h,2)?(O(h.to,V).then(g=>{it(g,20)&&!D.delta&&D.type===Wn.pop&&s.go(-1,!1)}).catch(Hn),Promise.reject()):(D.delta&&s.go(-D.delta,!1),K(h,V,he))).then(h=>{h=h||H(V,he,!1),h&&(D.delta&&!it(h,8)?s.go(-D.delta,!1):D.type===Wn.pop&&it(h,20)&&s.go(-1,!1)),Q(V,he,h)}).catch(Hn)}))}let ue=Pn(),U=Pn(),Z;function K(S,B,D){pt(S);const V=U.list();return V.length?V.forEach(se=>se(S,B,D)):console.error(S),Promise.reject(S)}function qe(){return Z&&l.value!==Ge?Promise.resolve():new Promise((S,B)=>{ue.add([S,B])})}function pt(S){return Z||(Z=!S,ce(),ue.list().forEach(([B,D])=>S?D(S):B()),ue.reset()),S}function Xe(S,B,D,V){const{scrollBehavior:se}=e;if(!Jt||!se)return Promise.resolve();const he=!D&&Am(Yi(S.fullPath,0))||(V||!D)&&history.state&&history.state.scroll||null;return vn().then(()=>se(S,B,he)).then(h=>h&&xm(h)).catch(h=>K(h,S,B))}const Ae=S=>s.go(S);let zt;const Gt=new Set,Xn={currentRoute:l,listening:!0,addRoute:p,removeRoute:y,hasRoute:R,getRoutes:v,resolve:C,options:e,push:b,replace:E,go:Ae,back:()=>Ae(-1),forward:()=>Ae(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:U.add,isReady:qe,install(S){const B=this;S.component("RouterLink",eg),S.component("RouterView",Tc),S.config.globalProperties.$router=B,Object.defineProperty(S.config.globalProperties,"$route",{enumerable:!0,get:()=>me(l)}),Jt&&!zt&&l.value===Ge&&(zt=!0,b(s.location).catch(se=>{}));const D={};for(const se in Ge)Object.defineProperty(D,se,{get:()=>l.value[se],enumerable:!0});S.provide(No,B),S.provide(Mo,St(D)),S.provide(no,l);const V=S.unmount;Gt.add(S),S.unmount=function(){Gt.delete(S),Gt.size<1&&(u=Ge,G&&G(),G=null,l.value=Ge,zt=!1,Z=!1),V()}}};function Ce(S){return S.reduce((B,D)=>B.then(()=>N(D)),Promise.resolve())}return Xn}function og(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;imn(u,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(u=>mn(u,l))||s.push(l))}return[n,r,s]}function x_(){return Ie(Mo)}const ig=(e,t)=>t.path.replace(/(:\w+)\([^)]+\)/g,"$1").replace(/(:\w+)[?+*]/g,"$1").replace(/:\w+/g,n=>{var r;return((r=e.params[n.slice(1)])==null?void 0:r.toString())||""}),ro=(e,t)=>{const n=e.route.matched.find(s=>{var o;return((o=s.components)==null?void 0:o.default)===e.Component.type}),r=t??(n==null?void 0:n.meta.key)??(n&&ig(e.route,n));return typeof r=="function"?r(e.route):r},ag=(e,t)=>({default:()=>e?He(Zu,e===!0?{}:e,t):t});function Do(e){return Array.isArray(e)?e:[e]}const ys=null,_s=null,vs=null,bs=null,ws=null,fa=[{name:"slug",path:"/:slug(.*)*",meta:{},alias:[],redirect:ys==null?void 0:ys.redirect,component:()=>J(()=>import("./5FOXgD99.js"),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url).then(e=>e.default||e)},{name:"index",path:"/",meta:{},alias:[],redirect:_s==null?void 0:_s.redirect,component:()=>J(()=>import("./fVrCQsqn.js"),[],import.meta.url).then(e=>e.default||e)},{name:"main-page",path:"/main/:page()",meta:{},alias:[],redirect:vs==null?void 0:vs.redirect,component:()=>J(()=>import("./BBa-Er6H.js"),__vite__mapDeps([7,2,3,8,5,6]),import.meta.url).then(e=>e.default||e)},{name:"modules-module",path:"/modules/:module()",meta:{},alias:[],redirect:ws==null?void 0:ws.redirect,component:()=>J(()=>import("./tvGjYoxK.js"),__vite__mapDeps([9,8,5,6,2,3]),import.meta.url).then(e=>e.default||e),children:[{name:"modules-module-chapter",path:":chapter()",meta:{},alias:[],redirect:bs==null?void 0:bs.redirect,component:()=>J(()=>import("./B_gon5vj.js"),__vite__mapDeps([10,11,12,2,3,8,5,6]),import.meta.url).then(e=>e.default||e)}]}],lg=(e,t,n)=>(t=t===!0?{}:t,{default:()=>{var r;return t?He(e,t,n):(r=n.default)==null?void 0:r.call(n)}});function da(e){const t=(e==null?void 0:e.meta.key)??e.path.replace(/(:\w+)\([^)]+\)/g,"$1").replace(/(:\w+)[?+*]/g,"$1").replace(/:\w+/g,n=>{var r;return((r=e.params[n.slice(1)])==null?void 0:r.toString())||""});return typeof t=="function"?t(e):t}function cg(e,t){return e===t||t===Ge?!1:da(e)!==da(t)?!0:!e.matched.every((r,s)=>{var o,i;return r.components&&r.components.default===((i=(o=t.matched[s])==null?void 0:o.components)==null?void 0:i.default)})}const ug={scrollBehavior(e,t,n){var u;const r=le(),s=((u=We().options)==null?void 0:u.scrollBehaviorType)??"auto";let o=n||void 0;const i=typeof e.meta.scrollToTop=="function"?e.meta.scrollToTop(e,t):e.meta.scrollToTop;if(!o&&t&&e&&i!==!1&&cg(e,t)&&(o={left:0,top:0}),e.path===t.path)return t.hash&&!e.hash?{left:0,top:0}:e.hash?{el:e.hash,top:ha(e.hash),behavior:s}:!1;const a=c=>!!(c.meta.pageTransition??Zs),l=a(t)&&a(e)?"page:transition:finish":"page:finish";return new Promise(c=>{r.hooks.hookOnce(l,async()=>{await new Promise(f=>setTimeout(f,0)),e.hash&&(o={el:e.hash,top:ha(e.hash),behavior:s}),c(o)})})}};function ha(e){try{const t=document.querySelector(e);if(t)return parseFloat(getComputedStyle(t).scrollMarginTop)}catch{}return 0}const fg={hashMode:!1,scrollBehaviorType:"auto"},Me={...fg,...ug},dg=async e=>{var l;let t,n;if(!((l=e.meta)!=null&&l.validate))return;const r=le(),s=We();if(([t,n]=hn(()=>Promise.resolve(e.meta.validate(e))),t=await t,n(),t)===!0)return;const i=Yn({statusCode:404,statusMessage:`Page Not Found: ${e.fullPath}`,data:{path:e.fullPath}}),a=s.beforeResolve(u=>{if(a(),u===e){const c=s.afterEach(async()=>{c(),await r.runWithContext(()=>Zt(i)),window.history.pushState({},"",e.fullPath)});return!1}})},hg=async e=>{let t,n;const r=([t,n]=hn(()=>Ho(e.path)),t=await t,n(),t);if(r.redirect)return Je(r.redirect,{acceptRelative:!0})?(window.location.href=r.redirect,!1):r.redirect},pg=[dg,hg],Nn={};function mg(e,t,n){const{pathname:r,search:s,hash:o}=t,i=e.indexOf("#");if(i>-1){const u=o.includes(e.slice(i))?e.slice(i).length:1;let c=o.slice(u);return c[0]!=="/"&&(c="/"+c),Ai(c,"")}const a=Ai(r,e),l=!n||Vd(a,n,{trailingSlash:!0})?a:n;return l+(l.includes("?")?"":s)+o}const gg=ot({name:"nuxt:router",enforce:"pre",async setup(e){var R,C;let t,n,r=je().app.baseURL;Me.hashMode&&!r.includes("#")&&(r+="#");const s=((R=Me.history)==null?void 0:R.call(Me,r))??(Me.hashMode?Hm(r):Ec(r)),o=((C=Me.routes)==null?void 0:C.call(Me,fa))??fa;let i;const a=sg({...Me,scrollBehavior:(_,m,b)=>{if(m===Ge){i=b;return}if(Me.scrollBehavior){if(a.options.scrollBehavior=Me.scrollBehavior,"scrollRestoration"in window.history){const E=a.beforeEach(()=>{E(),window.history.scrollRestoration="manual"})}return Me.scrollBehavior(_,Ge,i||b)}},history:s,routes:o});"scrollRestoration"in window.history&&(window.history.scrollRestoration="auto"),e.vueApp.use(a);const l=ft(a.currentRoute.value);a.afterEach((_,m)=>{l.value=m}),Object.defineProperty(e.vueApp.config.globalProperties,"previousRoute",{get:()=>l.value});const u=mg(r,window.location,e.payload.path),c=ft(a.currentRoute.value),f=()=>{c.value=a.currentRoute.value};e.hook("page:finish",f),a.afterEach((_,m)=>{var b,E,P,O;((E=(b=_.matched[0])==null?void 0:b.components)==null?void 0:E.default)===((O=(P=m.matched[0])==null?void 0:P.components)==null?void 0:O.default)&&f()});const d={};for(const _ in c.value)Object.defineProperty(d,_,{get:()=>c.value[_]});e._route=St(d),e._middleware=e._middleware||{global:[],named:{}};try{[t,n]=hn(()=>a.isReady()),await t,n()}catch(_){[t,n]=hn(()=>e.runWithContext(()=>Zt(_))),await t,n()}const p=u!==a.currentRoute.value.fullPath?a.resolve(u):a.currentRoute.value;f();const y=e.payload.state._layout;a.beforeEach(async(_,m)=>{var b;await e.callHook("page:loading:start"),_.meta=Ht(_.meta),e.isHydrating&&y&&!cn(_.meta.layout)&&(_.meta.layout=y),e._processingMiddleware=!0;{const E=new Set([...pg,...e._middleware.global]);for(const P of _.matched){const O=P.meta.middleware;if(O)for(const k of Do(O))E.add(k)}{const P=await e.runWithContext(()=>Ho(_.path));if(P.appMiddleware)for(const O in P.appMiddleware)P.appMiddleware[O]?E.add(O):E.delete(O)}for(const P of E){const O=typeof P=="string"?e._middleware.named[P]||await((b=Nn[P])==null?void 0:b.call(Nn).then(N=>N.default||N)):P;if(!O)throw new Error(`Unknown route middleware: '${P}'.`);const k=await e.runWithContext(()=>O(_,m));if(!e.payload.serverRendered&&e.isHydrating&&(k===!1||k instanceof Error)){const N=k||Gs({statusCode:404,statusMessage:`Page Not Found: ${u}`});return await e.runWithContext(()=>Zt(N)),!1}if(k!==!0&&(k||k===!1))return k}}}),a.onError(async()=>{delete e._processingMiddleware,await e.callHook("page:loading:end")});const v=Qr();return a.afterEach(async(_,m,b)=>{delete e._processingMiddleware,!e.isHydrating&&v.value&&await e.runWithContext(Yh),b&&await e.callHook("page:loading:end"),_.matched.length===0&&await e.runWithContext(()=>Zt(Gs({statusCode:404,fatal:!1,statusMessage:`Page not found: ${_.fullPath}`,data:{path:_.fullPath}})))}),e.hooks.hookOnce("app:created",async()=>{try{"name"in p&&(p.name=void 0),await a.replace({...p,force:!0}),a.options.scrollBehavior=Me.scrollBehavior}catch(_){await e.runWithContext(()=>Zt(_))}}),{provide:{router:a}}}}),so=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),yg=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)}),Xr=e=>{const t=le();t.isHydrating?t.hooks.hookOnce("app:suspense:resolve",()=>{so(e)}):so(e)},_g=ot({name:"nuxt:payload",setup(e){We().beforeResolve(async(t,n)=>{if(t.path===n.path)return;const r=await zi(t.path);r&&Object.assign(e.static.data,r.data)}),Xr(()=>{var t;e.hooks.hook("link:prefetch",async n=>{qr(n).protocol||await zi(n)}),((t=navigator.connection)==null?void 0:t.effectiveType)!=="slow-2g"&&setTimeout(Jr,1e3)})}}),vg=ot(e=>{let t;async function n(){const r=await Jr();t&&clearTimeout(t),t=setTimeout(n,1e3*60*60);try{const s=await $fetch(Lo("builds/latest.json")+`?${Date.now()}`);s.id!==r.id&&e.hooks.callHook("app:manifest:update",s)}catch{}}Xr(()=>{t=setTimeout(n,1e3*60*60)})}),bg=ee(()=>J(()=>import("./D2VvGIaI.js"),__vite__mapDeps([8,5,6,2,3]),import.meta.url).then(e=>e.default||e.default||e)),wg=ee(()=>J(()=>Promise.resolve().then(()=>Wy),void 0,import.meta.url).then(e=>e.default||e.default||e)),Eg=ee(()=>J(()=>import("./CCIVSpxi.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Pg=ee(()=>J(()=>Promise.resolve().then(()=>Vy),void 0,import.meta.url).then(e=>e.default||e.default||e)),Cg=ee(()=>J(()=>import("./D18jxc4x.js"),__vite__mapDeps([2,3]),import.meta.url).then(e=>e.default||e.default||e)),Rg=ee(()=>J(()=>import("./CZMOUkek.js"),__vite__mapDeps([13,3]),import.meta.url).then(e=>e.default||e.default||e)),Tg=ee(()=>J(()=>import("./DOYruCef.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Sg=ee(()=>J(()=>import("./D-99yswp.js"),[],import.meta.url).then(e=>e.default||e.default||e)),xg=ee(()=>J(()=>import("./BucyQ5gi.js"),[],import.meta.url).then(e=>e.default||e.default||e)),kg=ee(()=>J(()=>import("./KmdXbZ5S.js"),__vite__mapDeps([14,15]),import.meta.url).then(e=>e.default||e.default||e)),Ag=ee(()=>J(()=>import("./BZN8ALec.js"),__vite__mapDeps([16,17,18]),import.meta.url).then(e=>e.default||e.default||e)),Og=ee(()=>J(()=>import("./CpwYvKHZ.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Lg=ee(()=>J(()=>import("./Dc0b9Idc.js"),__vite__mapDeps([19,17,18]),import.meta.url).then(e=>e.default||e.default||e)),Ig=ee(()=>J(()=>import("./OmHslson.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Hg=ee(()=>J(()=>import("./CPdsAZhz.js"),[],import.meta.url).then(e=>e.default||e.default||e)),$g=ee(()=>J(()=>import("./B7XpRr1Z.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Ng=ee(()=>J(()=>import("./D6b-zaqQ.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Mg=ee(()=>J(()=>import("./dpI3ZOQe.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Dg=ee(()=>J(()=>import("./CtWy9qbC.js"),[],import.meta.url).then(e=>e.default||e.default||e)),jg=ee(()=>J(()=>import("./DxIEvfx4.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Bg=ee(()=>J(()=>import("./D7wUV6EO.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Fg=ee(()=>J(()=>import("./4DRa15T9.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Ug=ee(()=>J(()=>import("./8lzp0-a0.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Vg=ee(()=>J(()=>import("./C5NALQrT.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Kg=ee(()=>J(()=>import("./BzU5QlbW.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Wg=ee(()=>J(()=>import("./DiBn9H-z.js"),[],import.meta.url).then(e=>e.default||e.default||e)),qg=ee(()=>J(()=>import("./BzOjq_Bs.js"),[],import.meta.url).then(e=>e.default||e.default||e)),zg=ee(()=>J(()=>import("./jd2PvzEz.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Gg=ee(()=>J(()=>import("./Bt4D16IY.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Qg=ee(()=>J(()=>import("./BDt0kMsK.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Jg=ee(()=>J(()=>import("./C4KNTzvD.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Yg=ee(()=>J(()=>import("./ClS-RELa.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Xg=ee(()=>J(()=>import("./CYdyMkrt.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Zg=ee(()=>J(()=>import("./BD3ivV8j.js"),[],import.meta.url).then(e=>e.default||e.default||e)),ey=ee(()=>J(()=>import("./Cs7ZrR9W.js"),[],import.meta.url).then(e=>e.default||e.default||e)),ty=ee(()=>J(()=>import("./rR8esMS9.js"),[],import.meta.url).then(e=>e.default||e.default||e)),ny=[["ContentDoc",bg],["ContentList",wg],["ContentNavigation",Eg],["ContentQuery",Pg],["ContentRenderer",Cg],["ContentRendererMarkdown",Rg],["MDCSlot",Tg],["DocumentDrivenEmpty",Sg],["DocumentDrivenNotFound",xg],["Markdown",kg],["ProseCode",Ag],["ProseCodeInline",Og],["ProsePre",Lg],["ProseA",Ig],["ProseBlockquote",Hg],["ProseEm",$g],["ProseH1",Ng],["ProseH2",Mg],["ProseH3",Dg],["ProseH4",jg],["ProseH5",Bg],["ProseH6",Fg],["ProseHr",Ug],["ProseImg",Vg],["ProseLi",Kg],["ProseOl",Wg],["ProseP",qg],["ProseScript",zg],["ProseStrong",Gg],["ProseTable",Qg],["ProseTbody",Jg],["ProseTd",Yg],["ProseTh",Xg],["ProseThead",Zg],["ProseTr",ey],["ProseUl",ty]],ry=ot({name:"nuxt:global-components",setup(e){for(const[t,n]of ny)e.vueApp.component(t,n),e.vueApp.component("Lazy"+t,n)}}),Tn={"nlesc-decorations":()=>J(()=>import("./fio-yYFF.js"),[],import.meta.url).then(e=>e.default||e)},sy=ot({name:"nuxt:prefetch",setup(e){const t=We();e.hooks.hook("app:mounted",()=>{t.beforeEach(async n=>{var s;const r=(s=n==null?void 0:n.meta)==null?void 0:s.layout;r&&typeof Tn[r]=="function"&&await Tn[r]()})}),e.hooks.hook("link:prefetch",n=>{if(Je(n))return;const r=t.resolve(n);if(!r)return;const s=r.meta.layout;let o=Do(r.meta.middleware);o=o.filter(i=>typeof i=="string");for(const i of o)typeof Nn[i]=="function"&&Nn[i]();s&&typeof Tn[s]=="function"&&Tn[s]()})}});function oy(e){return Array.isArray(e)?e:[e]}const iy=async e=>{const t=le();e=oy(e),await Promise.all(e.map(n=>ly(t.vueApp._context.components[n])))},ay=e=>iy(e);function ly(e){if(e!=null&&e.__asyncLoader&&!e.__asyncResolved)return e.__asyncLoader()}async function Sc(e,t=We()){const{path:n,matched:r}=t.resolve(e);if(!r.length||(t._routePreloaded||(t._routePreloaded=new Set),t._routePreloaded.has(n)))return;const s=t._preloadPromises=t._preloadPromises||[];if(s.length>4)return Promise.all(s).then(()=>Sc(e,t));t._routePreloaded.add(n);const o=r.map(i=>{var a;return(a=i.components)==null?void 0:a.default}).filter(i=>typeof i=="function");for(const i of o){const a=Promise.resolve(i()).catch(()=>{}).finally(()=>s.splice(s.indexOf(a)));s.push(a)}await Promise.all(s)}const cy=["Banner","ChapterBar","Footer","ModuleCard","Slides","ContentDoc","ContentList","ContentNavigation","ContentQuery","ContentRenderer","ContentRendererMarkdown","MDCSlot","DocumentDrivenEmpty","DocumentDrivenNotFound","Markdown","ProseCode","ProseCodeInline","ProsePre","ProseA","ProseBlockquote","ProseEm","ProseH1","ProseH2","ProseH3","ProseH4","ProseH5","ProseH6","ProseHr","ProseImg","ProseLi","ProseOl","ProseP","ProseScript","ProseStrong","ProseTable","ProseTbody","ProseTd","ProseTh","ProseThead","ProseTr","ProseUl","NuxtWelcome","NuxtLayout","NuxtErrorBoundary","ClientOnly","DevOnly","ServerPlaceholder","NuxtLink","NuxtLoadingIndicator","NuxtIsland","NuxtImg","NuxtPicture","MDC","MDCRenderer","MDCSlot","NuxtPage","NoScript","Link","Base","Title","Meta","Style","Head","Html","Body"],uy=/\d/,fy=["-","_","/","."];function dy(e=""){if(!uy.test(e))return e!==e.toLowerCase()}function xc(e,t){const n=fy,r=[];if(!e||typeof e!="string")return r;let s="",o,i;for(const a of e){const l=n.includes(a);if(l===!0){r.push(s),s="",o=void 0;continue}const u=dy(a);if(i===!1){if(o===!1&&u===!0){r.push(s),s=a,o=u;continue}if(o===!0&&u===!1&&s.length>1){const c=s.at(-1);r.push(s.slice(0,Math.max(0,s.length-1))),s=c+a,o=u;continue}}s+=a,o=u,i=l}return r.push(s),r}function hy(e){return e?e[0].toUpperCase()+e.slice(1):""}function py(e,t){return e?(Array.isArray(e)?e:xc(e)).map(n=>hy(t!=null&&t.normalize?n.toLowerCase():n)).join(""):""}function k_(e,t){return e?(Array.isArray(e)?e:xc(e)).map(n=>n.toLowerCase()).join("-"):""}const my="$s";function fr(...e){const t=typeof e[e.length-1]=="string"?e.pop():void 0;typeof e[0]!="string"&&e.unshift(t);const[n,r]=e;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(r!==void 0&&typeof r!="function")throw new Error("[nuxt] [useState] init must be a function: "+r);const s=my+n,o=le(),i=vo(o.payload.state,s);if(i.value===void 0&&r){const a=r();if(Pe(a))return o.payload.state[s]=a,a;i.value=a}return i}const Yt=()=>{const e=fr("dd-pages",()=>ft(St({}))),t=fr("dd-surrounds",()=>ft(St({}))),n=fr("dd-navigation"),r=fr("dd-globals",()=>ft(St({})));return{pages:e,surrounds:t,navigation:n,globals:r}},A_=()=>{const{navigation:e,pages:t,surrounds:n,globals:r}=Yt(),s=de(()=>Ot(pn().path)),o=de(()=>t.value[s.value]),i=de(()=>n.value[s.value]),a=de(()=>{var p,y;return(y=(p=o==null?void 0:o.value)==null?void 0:p.body)==null?void 0:y.toc}),l=de(()=>{var p;return(p=o.value)==null?void 0:p._type}),u=de(()=>{var p;return(p=o.value)==null?void 0:p.excerpt}),c=de(()=>{var p;return(p=o.value)==null?void 0:p.layout}),f=de(()=>{var p;return(p=i.value)==null?void 0:p[1]}),d=de(()=>{var p;return(p=i.value)==null?void 0:p[0]});return{globals:r,navigation:e,surround:i,page:o,excerpt:u,toc:a,type:l,layout:c,next:f,prev:d}},kc=e=>{if(!e.children)return e._path;for(const t of(e==null?void 0:e.children)||[]){const n=kc(t);if(n)return n}},Ac=(e,t)=>{for(const n of t){if(n._path===e&&!n._id)return n.children;if(n.children){const r=Ac(e,n.children);if(r)return r}}},Oc=(e,t)=>{for(const n of t){if(n._path===e)return n;if(n.children){const r=Oc(e,n.children);if(r)return r}}},gy=(e,t,n)=>{let r;const s=(o,i)=>{for(const a of i)if(!(o!=="/"&&a._path==="/")){if(o!=null&&o.startsWith(a._path)&&a[t]&&(r=a[t]),a._path===o)return;a.children&&s(o,a.children)}};return s(e,n),r},yy=()=>({navBottomLink:kc,navDirFromPath:Ac,navPageFromPath:Oc,navKeyFromPath:gy});function jo(e){return JSON.stringify(e,_y)}function _y(e,t){return t instanceof RegExp?`--REGEX ${t.toString()}`:t}const Lc=e=>{let t=jo(e);return t=typeof Buffer<"u"?Buffer.from(t).toString("base64"):btoa(t),t=t.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),(t.match(/.{1,100}/g)||[]).join("/")},vy={path:"/",watch:!0,decode:e=>Un(decodeURIComponent(e)),encode:e=>encodeURIComponent(typeof e=="string"?e:JSON.stringify(e))},by=void 0;function Es(e,t){var l;const n={...vy,...t},r=pa(n)||{};let s;n.maxAge!==void 0?s=n.maxAge*1e3:n.expires&&(s=n.expires.getTime()-Date.now());const o=s!==void 0&&s<=0,i=et(o?void 0:r[e]??((l=n.default)==null?void 0:l.call(n))),a=s&&!o?Py(i,s,n.watch&&n.watch!=="shallow"):xe(i);{let u=null;try{!by&&typeof BroadcastChannel<"u"&&(u=new BroadcastChannel(`nuxt:cookies:${e}`))}catch{}const c=()=>{n.readonly||jh(a.value,r[e])||(Ey(e,a.value,n),r[e]=et(a.value),u==null||u.postMessage({value:n.encode(a.value)}))},f=p=>{var v;const y=p.refresh?(v=pa(n))==null?void 0:v[e]:n.decode(p.value);d=!0,r[e]=a.value=y,vn(()=>{d=!1})};let d=!1;Dr()&&yr(()=>{d=!0,c(),u==null||u.close()}),u&&(u.onmessage=({data:p})=>f(p)),n.watch?rt(a,()=>{d||c()},{deep:n.watch!=="shallow"}):c()}return a}function pa(e={}){return Ph(document.cookie,e)}function wy(e,t,n={}){return t==null?$i(e,t,{...n,maxAge:-1}):$i(e,t,n)}function Ey(e,t,n={}){document.cookie=wy(e,t,n)}const ma=2147483647;function Py(e,t,n){let r,s,o=0;const i=n?xe(e):{value:e};return Dr()&&yr(()=>{s==null||s(),clearTimeout(r)}),Ru((a,l)=>{n&&(s=rt(i,l));function u(){clearTimeout(r);const c=t-o,f=c{if(o+=f,o({isEnabled:()=>{const r=pn().query;return Object.prototype.hasOwnProperty.call(r,"preview")&&!r.preview?!1:!!(r.preview||Es("previewToken").value||sessionStorage.getItem("previewToken"))},getPreviewToken:()=>Es("previewToken").value||sessionStorage.getItem("previewToken")||void 0,setPreviewToken:r=>{Es("previewToken").value=r,pn().query.preview=r||"",r?sessionStorage.setItem("previewToken",r):sessionStorage.removeItem("previewToken"),window.location.reload()}}),Ir=e=>Bl(e,je().public.content.api.baseURL),Ic=()=>{const{experimental:e}=je().public.content;return e.clientDB?!0:Bo().isEnabled()},ga=(e,t)=>t.split(".").reduce((n,r)=>n&&n[r],e),Fo=(e,t)=>Object.keys(e).filter(t).reduce((n,r)=>Object.assign(n,{[r]:e[r]}),{}),O_=e=>t=>e&&e.length?Fo(t,n=>!e.includes(n)):t,L_=e=>t=>Array.isArray(t)?t.map(n=>e(n)):e(t),Hc=e=>{const t=[],n=[];for(const r of e)["$","_"].includes(r)?t.push(r):n.push(r);return{prefixes:t,properties:n}},I_=(e=[])=>t=>{if(e.length===0||!t)return t;const{prefixes:n,properties:r}=Hc(e);return Fo(t,s=>!r.includes(s)&&!n.includes(s[0]))},H_=(e=[])=>t=>{if(e.length===0||!t)return t;const{prefixes:n,properties:r}=Hc(e);return Fo(t,s=>r.includes(s)||n.includes(s[0]))},$_=(e,t)=>{const n=new Intl.Collator(t.$locale,{numeric:t.$numeric,caseFirst:t.$caseFirst,sensitivity:t.$sensitivity}),r=Object.keys(t).filter(s=>!s.startsWith("$"));for(const s of r)e=e.sort((o,i)=>{const a=[ga(o,s),ga(i,s)].map(l=>{if(l!==null)return l instanceof Date?l.toISOString():l});return t[s]===-1&&a.reverse(),n.compare(a[0],a[1])});return e},N_=(e,t="Expected an array")=>{if(!Array.isArray(e))throw new TypeError(t)},at=e=>Array.isArray(e)?e:[void 0,null].includes(e)?[]:[e],Cy=["sort","where","only","without"];function Ry(e,t={}){const n={};for(const i of Object.keys(t.initialParams||{}))n[i]=Cy.includes(i)?at(t.initialParams[i]):t.initialParams[i];const r=(i,a=l=>l)=>(...l)=>(n[i]=a(...l),o),s=i=>{var a;return t.legacy?i!=null&&i.surround?i.surround:i&&(i!=null&&i.dirConfig&&(i.result={_path:(a=i.dirConfig)==null?void 0:a._path,...i.result,_dir:i.dirConfig}),i!=null&&i._path||Array.isArray(i)||!Object.prototype.hasOwnProperty.call(i,"result")?i:i==null?void 0:i.result):i},o={params:()=>({...n,...n.where?{where:[...at(n.where)]}:{},...n.sort?{sort:[...at(n.sort)]}:{}}),only:r("only",at),without:r("without",at),where:r("where",i=>[...at(n.where),...at(i)]),sort:r("sort",i=>[...at(n.sort),...at(i)]),limit:r("limit",i=>parseInt(String(i),10)),skip:r("skip",i=>parseInt(String(i),10)),find:()=>e(o).then(s),findOne:()=>e(r("first")(!0)).then(s),count:()=>e(r("count")(!0)).then(s),locale:i=>o.where({_locale:i}),withSurround:r("surround",(i,a)=>({query:i,...a})),withDirConfig:()=>r("dirConfig")(!0)};return t.legacy&&(o.findSurround=(i,a)=>o.withSurround(i,a).find().then(s)),o}const Ty=()=>async e=>{const{content:t}=je().public,n=e.params(),r=t.experimental.stripQueryParameters?Ir(`/query/${`${Vn(n)}.${t.integrity}`}/${Lc(n)}.json`):Ir(`/query/${Vn(n)}.${t.integrity}.json`);if(Ic())return(await J(()=>import("./bSgsziye.js"),__vite__mapDeps([20,11]),import.meta.url).then(i=>i.useContentDatabase())).fetch(e);const s=await $fetch(r,{method:"GET",responseType:"json",params:t.experimental.stripQueryParameters?void 0:{_params:jo(n),previewToken:Bo().getPreviewToken()}});if(typeof s=="string"&&s.startsWith(""))throw new Error("Not found");return s};function ln(e,...t){const{content:n}=je().public,r=Ry(Ty(),{initialParams:typeof e!="string"?e:{},legacy:!0});let s;typeof e=="string"&&(s=Us(Jn(e,...t)));const o=r.params;return r.params=()=>{var a,l,u;const i=o();return s&&(i.where=i.where||[],i.first&&(i.where||[]).length===0?i.where.push({_path:Ot(s)}):i.where.push({_path:new RegExp(`^${s.replace(/[-[\]{}()*+.,^$\s/]/g,"\\$&")}`)})),(a=i.sort)!=null&&a.length||(i.sort=[{_file:1,$numeric:!0}]),n.locales.length&&((u=(l=i.where)==null?void 0:l.find(f=>f._locale))!=null&&u._locale||(i.where=i.where||[],i.where.push({_locale:n.defaultLocale}))),i},r}const Sy=async e=>{const{content:t}=je().public;typeof(e==null?void 0:e.params)!="function"&&(e=ln(e));const n=e.params(),r=t.experimental.stripQueryParameters?Ir(`/navigation/${`${Vn(n)}.${t.integrity}`}/${Lc(n)}.json`):Ir(`/navigation/${Vn(n)}.${t.integrity}.json`);if(Ic())return(await J(()=>import("./bSgsziye.js"),__vite__mapDeps([20,11]),import.meta.url).then(i=>i.generateNavigation))(n);const s=await $fetch(r,{method:"GET",responseType:"json",params:t.experimental.stripQueryParameters?void 0:{_params:jo(n),previewToken:Bo().getPreviewToken()}});if(typeof s=="string"&&s.startsWith(""))throw new Error("Not found");return s},xy=ot(e=>{var u,c,f,d;const t=(c=(u=je())==null?void 0:u.public)==null?void 0:c.content.documentDriven,n=(d=(f=je())==null?void 0:f.public)==null?void 0:d.content.experimental.clientDB,{navigation:r,pages:s,globals:o,surrounds:i}=Yt(),a=(p,y,v,R)=>{var C;if(y&&(y!=null&&y.layout))return y.layout;if(p.matched.length&&((C=p.matched[0].meta)!=null&&C.layout))return p.matched[0].meta.layout;if(v&&y){const{navKeyFromPath:_}=yy(),m=_(y._path,"layout",v);if(m)return m}if(t.layoutFallbacks&&R){let _;for(const m of t.layoutFallbacks)if(R[m]&&R[m].layout){_=R[m].layout;break}if(_)return _}return"default"},l=async(p,y=!1)=>{e.callHook("content:document-driven:start",{route:p,dedup:y});const v=p.meta.documentDriven||{};if(p.meta.documentDriven===!1)return;const R=Ot(p.path),C=[];if(t.navigation&&v.navigation!==!1){const _=()=>{const{navigation:m}=Yt();return m.value&&!y?m.value:Sy().then(b=>(m.value=b,b)).catch(()=>null)};C.push(_)}else C.push(()=>Promise.resolve(null));if(t.globals){const _=()=>{const{globals:m}=Yt();if(typeof t.globals=="object"&&Array.isArray(t.globals)){console.log("Globals must be a list of keys with QueryBuilderParams as a value.");return}return Promise.all(Object.entries(t.globals).map(([b,E])=>{if(!y&&m.value[b])return m.value[b];let P="findOne";return E!=null&&E.type&&(P=E.type),ln(E)[P]().catch(()=>null)})).then(b=>b.reduce((E,P,O)=>{const k=Object.keys(t.globals)[O];return E[k]=P,E},{}))};C.push(_)}else C.push(()=>Promise.resolve(null));if(t.page&&v.page!==!1){let _={_path:R};typeof v.page=="string"&&(_={_path:v.page}),typeof v.page=="object"&&(_=v.page);const m=()=>{const{pages:b}=Yt();return!y&&b.value[R]&&b.value[R]._path===R?b.value[R]:ln().where(_).findOne().catch(()=>null)};C.push(m)}else C.push(()=>Promise.resolve(null));if(t.surround&&v.surround!==!1){let _=R;["string","object"].includes(typeof v.page)&&(_=v.page),["string","object"].includes(typeof v.surround)&&(_=v.surround);const m=()=>{const{surrounds:b}=Yt();return!y&&b.value[R]?b.value[R]:ln().where({_partial:{$not:!0},navigation:{$not:!1}}).without(["body"]).findSurround(_).catch(()=>null)};C.push(m)}else C.push(()=>Promise.resolve(null));return await Promise.all(C.map(_=>_())).then(async([_,m,b,E])=>{var O,k;_&&(r.value=_),m&&(o.value=m),E&&(i.value[R]=E);const P=(b==null?void 0:b.redirect)||((k=(O=b==null?void 0:b._dir)==null?void 0:O.navigation)==null?void 0:k.redirect);if(P)return s.value[R]=b,P;if(b){const N=a(p,b,_,m),$=Tn[N];$&&typeof $=="function"&&await $(),p.meta.layout=N,b.layout=N}s.value[R]=b,await e.callHook("content:document-driven:finish",{route:p,dedup:y,page:b,navigation:_,globals:m,surround:E})})};{const p=We();e.hook("link:prefetch",y=>{if(!(y in s.value)&&!Je(y)){const v=p.resolve(y);v.matched.length>0&&l(v)}}),e.hooks.hook("content:document-driven:finish",({page:y})=>{var v;(v=y==null?void 0:y.body)!=null&&v.children&&$c(y.body.children)})}Qh(async(p,y)=>{if(!n&&p.path===y.path){if(!p.meta.layout){const R=Ot(p.path);s.value[R]&&(p.meta.layout=s.value[R].layout)}return}const v=await l(p,!1);if(v)return Je(v)?Ql(e,rc,[v,{external:!0}]):v}),e.hook("app:data:refresh",async()=>await l(pn(),!0))});function $c(e){for(const t of e)if(t.children&&$c(t.children),t.type==="element"&&t.tag){const n=py(t.tag);for(const r of["Prose"+n,n])cy.includes(r)&&ay(r)}}const ky=e=>e==="defer"||e===!1;function Ay(...e){var y;const t=typeof e[e.length-1]=="string"?e.pop():void 0;typeof e[0]!="string"&&e.unshift(t);let[n,r,s={}]=e;if(typeof n!="string")throw new TypeError("[nuxt] [asyncData] key must be a string.");if(typeof r!="function")throw new TypeError("[nuxt] [asyncData] handler must be a function.");const o=le(),i=r,a=()=>null,l=()=>o.isHydrating?o.payload.data[n]:o.static.data[n];s.server=s.server??!0,s.default=s.default??a,s.getCachedData=s.getCachedData??l,s.lazy=s.lazy??!1,s.immediate=s.immediate??!0,s.deep=s.deep??zp.deep,s.dedupe=s.dedupe??"cancel";const u=()=>s.getCachedData(n,o)!=null;if(!o._asyncData[n]||!s.immediate){(y=o.payload._errors)[n]??(y[n]=null);const v=s.deep?xe:ft;o._asyncData[n]={data:v(s.getCachedData(n,o)??s.default()),pending:xe(!u()),error:vo(o.payload._errors,n),status:xe("idle")}}const c={...o._asyncData[n]};c.refresh=c.execute=(v={})=>{if(o._asyncDataPromises[n]){if(ky(v.dedupe??s.dedupe))return o._asyncDataPromises[n];o._asyncDataPromises[n].cancelled=!0}if((v._initial||o.isHydrating&&v._initial!==!1)&&u())return Promise.resolve(s.getCachedData(n,o));c.pending.value=!0,c.status.value="pending";const R=new Promise((C,_)=>{try{C(i(o))}catch(m){_(m)}}).then(async C=>{if(R.cancelled)return o._asyncDataPromises[n];let _=C;s.transform&&(_=await s.transform(C)),s.pick&&(_=Iy(_,s.pick)),o.payload.data[n]=_,c.data.value=_,c.error.value=null,c.status.value="success"}).catch(C=>{if(R.cancelled)return o._asyncDataPromises[n];c.error.value=Yn(C),c.data.value=me(s.default()),c.status.value="error"}).finally(()=>{R.cancelled||(c.pending.value=!1,delete o._asyncDataPromises[n])});return o._asyncDataPromises[n]=R,o._asyncDataPromises[n]},c.clear=()=>Ly(o,n);const f=()=>c.refresh({_initial:!0}),d=s.server!==!1&&o.payload.serverRendered;{const v=bn();if(v&&!v._nuxtOnBeforeMountCbs){v._nuxtOnBeforeMountCbs=[];const _=v._nuxtOnBeforeMountCbs;ll(()=>{_.forEach(m=>{m()}),_.splice(0,_.length)}),Co(()=>_.splice(0,_.length))}d&&o.isHydrating&&(c.error.value||u())?(c.pending.value=!1,c.status.value=c.error.value?"error":"success"):v&&(o.payload.serverRendered&&o.isHydrating||s.lazy)&&s.immediate?v._nuxtOnBeforeMountCbs.push(f):s.immediate&&f();const R=Dr();if(s.watch){const _=rt(s.watch,()=>c.refresh());R&&yr(_)}const C=o.hook("app:data:refresh",async _=>{(!_||_.includes(n))&&await c.refresh()});R&&yr(C)}const p=Promise.resolve(o._asyncDataPromises[n]).then(()=>c);return Object.assign(p,c),p}async function Oy(e){await new Promise(n=>Xr(n)),await le().hooks.callHookParallel("app:data:refresh",void 0)}function Ly(e,t){t in e.payload.data&&(e.payload.data[t]=void 0),t in e.payload._errors&&(e.payload._errors[t]=null),e._asyncData[t]&&(e._asyncData[t].data.value=void 0,e._asyncData[t].error.value=null,e._asyncData[t].pending.value=!1,e._asyncData[t].status.value="idle"),t in e._asyncDataPromises&&(e._asyncDataPromises[t].cancelled=!0,e._asyncDataPromises[t]=void 0)}function Iy(e,t){const n={};for(const r of t)n[r]=e[r];return n}const Hy=ot(async()=>{var n;let e,t;{const r=(n=je().public.sockets)==null?void 0:n.wsUrl,s=([e,t]=hn(()=>J(()=>import("./BaVm9VVN.js"),[],import.meta.url).then(({setupSocketClient:o})=>o(r,"content-assets"))),e=await e,t(),e);s&&s.addHandler(({data:o})=>{const{event:i,src:a,width:l,height:u}=o;if(i==="refresh")Oy();else if(a){const c=i==="update";document.querySelectorAll(`:is(img, video, source, embed, iframe):where([src^="${a}"])`).forEach(f=>{if(f.style.opacity=c?"1":"0.2",c){const d=f.getAttribute("src").split("?")[1],p=new URLSearchParams(d);p.set("time",String(Date.now())),l&&u&&f.addEventListener("load",function y(){f.width&&f.height&&(f.setAttribute("width",l),f.setAttribute("height",u)),f.style.aspectRatio&&(f.style.aspectRatio=`${l} / ${u}`),p.get("width")&&(p.set("width",l),p.set("height",u)),f.removeEventListener("load",y)}),f.setAttribute("src",`${a}?${p.toString()}`)}})}})}});function $y(e={}){const t=e.path||window.location.pathname;let n={};try{n=Un(sessionStorage.getItem("nuxt:reload")||"{}")}catch{}if(e.force||(n==null?void 0:n.path)!==t||(n==null?void 0:n.expires){r.clear()}),e.hook("app:chunkError",({error:o})=>{r.add(o)});function s(o){const a="href"in o&&o.href[0]==="#"?n.app.baseURL+o.href:Jn(n.app.baseURL,o.fullPath);$y({path:a,persistState:!0})}e.hook("app:manifest:update",()=>{t.beforeResolve(s)}),t.onError((o,i)=>{r.has(o)&&s(i)})}}),My=[tm,rm,gg,_g,vg,ry,sy,xy,Hy,Ny],Dy=(...e)=>e.find(t=>t!==void 0);function jy(e){const t=e.componentName||"NuxtLink";function n(r,s){if(!r||e.trailingSlash!=="append"&&e.trailingSlash!=="remove")return r;if(typeof r=="string")return _a(r,e.trailingSlash);const o="path"in r&&r.path!==void 0?r.path:s(r).path;return{...r,name:void 0,path:_a(o,e.trailingSlash)}}return $t({name:t,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1}},setup(r,{slots:s}){const o=We(),i=je(),a=de(()=>{const y=r.to||r.href||"";return n(y,o.resolve)}),l=de(()=>typeof a.value=="string"&&Je(a.value,{acceptRelative:!0})),u=de(()=>r.target&&r.target!=="_self"),c=de(()=>r.external||u.value?!0:typeof a.value=="object"?!1:a.value===""||l.value),f=xe(!1),d=xe(null),p=y=>{var v;d.value=r.custom?(v=y==null?void 0:y.$el)==null?void 0:v.nextElementSibling:y==null?void 0:y.$el};if(r.prefetch!==!1&&r.noPrefetch!==!0&&r.target!=="_blank"&&!Fy()){const v=le();let R,C=null;Kr(()=>{const _=By();Xr(()=>{R=so(()=>{var m;(m=d==null?void 0:d.value)!=null&&m.tagName&&(C=_.observe(d.value,async()=>{C==null||C(),C=null;const b=typeof a.value=="string"?a.value:o.resolve(a.value).fullPath;await Promise.all([v.hooks.callHook("link:prefetch",b).catch(()=>{}),!c.value&&Sc(a.value,o).catch(()=>{})]),f.value=!0}))})})}),Wr(()=>{R&&yg(R),C==null||C(),C=null})}return()=>{var C,_;if(!c.value){const m={ref:p,to:a.value,activeClass:r.activeClass||e.activeClass,exactActiveClass:r.exactActiveClass||e.exactActiveClass,replace:r.replace,ariaCurrentValue:r.ariaCurrentValue,custom:r.custom};return r.custom||(f.value&&(m.class=r.prefetchedClass||e.prefetchedClass),m.rel=r.rel||void 0),He(Du("RouterLink"),m,s.default)}const y=typeof a.value=="object"?((C=o.resolve(a.value))==null?void 0:C.href)??null:a.value&&!r.external&&!l.value?n(Jn(i.app.baseURL,a.value),o.resolve):a.value||null,v=r.target||null,R=Dy(r.noRel?"":r.rel,e.externalRelAttribute,l.value||u.value?"noopener noreferrer":"")||null;if(r.custom){if(!s.default)return null;const m=()=>rc(y,{replace:r.replace,external:r.external});return s.default({href:y,navigate:m,get route(){if(!y)return;const b=qr(y);return{path:b.pathname,fullPath:b.pathname,get query(){return jl(b.search)},hash:b.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:y}},rel:R,target:v,isExternal:c.value,isActive:!1,isExactActive:!1})}return He("a",{ref:d,href:y,rel:R,target:v},(_=s.default)==null?void 0:_.call(s))}}})}const ya=jy(qp);function _a(e,t){const n=t==="append"?kr:Ot;return Je(e)&&!e.startsWith("http")?e:n(e,!0)}function By(){const e=le();if(e._observer)return e._observer;let t=null;const n=new Map,r=(o,i)=>(t||(t=new IntersectionObserver(a=>{for(const l of a){const u=n.get(l.target);(l.isIntersecting||l.intersectionRatio>0)&&u&&u()}})),n.set(o,i),t.observe(o),()=>{n.delete(o),t.unobserve(o),n.size===0&&(t.disconnect(),t=null)});return e._observer={observe:r}}function Fy(){const e=navigator.connection;return!!(e&&(e.saveData||/2g/.test(e.effectiveType)))}const Uy=$t({name:"ContentQuery",props:{path:{type:String,required:!1,default:void 0},only:{type:Array,required:!1,default:void 0},without:{type:Array,required:!1,default:void 0},where:{type:Object,required:!1,default:void 0},sort:{type:Object,required:!1,default:void 0},limit:{type:Number,required:!1,default:void 0},skip:{type:Number,required:!1,default:void 0},locale:{type:String,required:!1,default:void 0},find:{type:String,required:!1,default:void 0}},async setup(e){const{path:t,only:n,without:r,where:s,sort:o,limit:i,skip:a,locale:l,find:u}=Tu(e),c=de(()=>{var v;return(v=t.value)==null?void 0:v.includes("/_")}),f=!je().public.content.experimental.advanceQuery;rt(()=>e,()=>y(),{deep:!0});const d=v=>f?v!=null&&v.surround?v.surround:v!=null&&v._id||Array.isArray(v)?v:v==null?void 0:v.result:v.result,{data:p,refresh:y}=await Ay(`content-query-${Vn(e)}`,()=>{let v;return t.value?v=ln(t.value):v=ln(),n.value&&(v=v.only(n.value)),r.value&&(v=v.without(r.value)),s.value&&(v=v.where(s.value)),o.value&&(v=v.sort(o.value)),i.value&&(v=v.limit(i.value)),a.value&&(v=v.skip(a.value)),l.value&&(v=v.where({_locale:l.value})),u.value==="one"?v.findOne().then(d):u.value==="surround"?t.value?f?v.findSurround(t.value):v.withSurround(t.value).findOne().then(d):(console.warn("[Content] Surround queries requires `path` prop to be set."),console.warn("[Content] Query without `path` will return regular `find()` results."),v.find().then(d)):v.find().then(d)});return{isPartial:c,data:p,refresh:y}},render(e){var R;const t=dl(),{data:n,refresh:r,isPartial:s,path:o,only:i,without:a,where:l,sort:u,limit:c,skip:f,locale:d,find:p}=e,y={path:o,only:i,without:a,where:l,sort:u,limit:c,skip:f,locale:d,find:p};if(y.find==="one"){if(!n&&(t!=null&&t["not-found"]))return t["not-found"]({props:y,...this.$attrs});if(t!=null&&t.empty&&(n==null?void 0:n._type)==="markdown"&&!((R=n==null?void 0:n.body)!=null&&R.children.length))return t.empty({props:y,...this.$attrs})}else if((!n||!n.length)&&t!=null&&t["not-found"])return t["not-found"]({props:y,...this.$attrs});return t!=null&&t.default?t.default({data:n,refresh:r,isPartial:s,props:y,...this.$attrs}):((C,_)=>He("pre",null,JSON.stringify({message:"You should use slots with !",slot:C,data:_},null,2)))("default",{data:n,props:y,isPartial:s})}}),Nc=Uy,Vy=Object.freeze(Object.defineProperty({__proto__:null,default:Nc},Symbol.toStringTag,{value:"Module"})),Ps=(e,t)=>He("pre",null,JSON.stringify({message:"You should use slots with ",slot:e,data:t},null,2)),Ky=$t({name:"ContentList",props:{path:{type:String,required:!1,default:void 0},query:{type:Object,required:!1,default:void 0}},render(e){const t=dl(),{path:n,query:r}=e,s={...r||{},path:n||(r==null?void 0:r.path)||"/"};return He(Nc,s,{default:t!=null&&t.default?({data:o,refresh:i,isPartial:a})=>t.default({list:o,refresh:i,isPartial:a,...this.$attrs}):o=>Ps("default",o.data),empty:o=>t!=null&&t.empty?t.empty(o):Ps("default",o==null?void 0:o.data),"not-found":o=>{var i;return t!=null&&t["not-found"]?(i=t==null?void 0:t["not-found"])==null?void 0:i.call(t,o):Ps("not-found",o==null?void 0:o.data)}})}}),Mc=Ky,Wy=Object.freeze(Object.defineProperty({__proto__:null,default:Mc},Symbol.toStringTag,{value:"Module"})),qy=zr("/icons/github-mark.svg"),zy=zr("/nlesc-logo.svg"),Uo=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Gy={},Qy={class:"flex p-5 bg-eScienceWhite text-xl items-center text-eSciencePurple border-b-2"},Jy={class:"flex flex-1 gap-10 items-center"},Yy={class:"text-4xl mx-16 font-bold"},Xy={class:"flex align-middle items-center"},Zy={class:"p-5"},e_=ct("img",{src:qy,alt:"Netherlands eScience Center Logo",width:"50px",height:"50px",class:"align-middle"},null,-1),t_=ct("img",{src:zy,alt:"Netherlands eScience Center Logo",width:"200px"},null,-1);function n_(e,t,n,r,s,o){const i=ya,a=ya,l=Mc;return Le(),Rr("div",Qy,[ct("div",Jy,[oe(i,{to:"/"},{default:wt(()=>[ct("div",Yy,zo(e.$config.public.title),1)]),_:1})]),ct("div",Xy,[ct("div",Zy,[oe(i,{to:"/",class:"p-5 hover:text-eScienceBlue"},{default:wt(()=>[Tr(" Modules ")]),_:1}),oe(l,{path:"/main"},{default:wt(({list:u})=>[(Le(!0),Rr(Se,null,lf(u,c=>(Le(),lt(a,{key:c._path,to:c._path,class:"p-5 hover:text-eScienceBlue"},{default:wt(()=>[Tr(zo(c.title),1)]),_:2},1032,["to"]))),128))]),_:1})]),oe(i,{to:"https://www.github.com/esciencecenter-digital-skills/research-software-support",target:"_blank",class:"pl-10"},{default:wt(()=>[e_]),_:1}),oe(i,{to:"https://www.esciencecenter.nl",target:"_blank",class:"px-5"},{default:wt(()=>[t_]),_:1})])])}const r_=Uo(Gy,[["render",n_]]),s_=$t({props:{vnode:{type:Object,required:!0},route:{type:Object,required:!0},vnodeRef:Object,renderKey:String,trackRootNodes:Boolean},setup(e){const t=e.renderKey,n=e.route,r={};for(const s in e.route)Object.defineProperty(r,s,{get:()=>t===e.renderKey?e.route[s]:n[s]});return an(Gr,St(r)),()=>He(e.vnode,{ref:e.vnodeRef})}}),o_=$t({name:"NuxtPage",inheritAttrs:!1,props:{name:{type:String},transition:{type:[Boolean,Object],default:void 0},keepalive:{type:[Boolean,Object],default:void 0},route:{type:Object},pageKey:{type:[Function,String],default:null}},setup(e,{attrs:t,expose:n}){const r=le(),s=xe(),o=Ie(Gr,null);let i;n({pageRef:s});const a=Ie(Gh,null);let l;const u=r.deferHydration();if(r.isHydrating){const c=r.hooks.hookOnce("app:error",u);We().beforeEach(c)}return e.pageKey&&rt(()=>e.pageKey,(c,f)=>{c!==f&&r.callHook("page:loading:start")}),()=>He(Tc,{name:e.name,route:e.route,...t},{default:c=>{const f=a_(o,c.route,c.Component),d=o&&o.matched.length===c.route.matched.length;if(!c.Component){if(l&&!d)return l;u();return}if(l&&a&&!a.isCurrent(c.route))return l;if(f&&o&&(!a||a!=null&&a.isCurrent(o)))return d?l:null;const p=ro(c,e.pageKey);!r.isHydrating&&!l_(o,c.route,c.Component)&&i===p&&r.callHook("page:loading:end"),i=p;const y=!!(e.transition??c.route.meta.pageTransition??Zs),v=y&&i_([e.transition,c.route.meta.pageTransition,Zs,{onAfterLeave:()=>{r.callHook("page:transition:finish",c.Component)}}].filter(Boolean)),R=e.keepalive??c.route.meta.keepalive??Wp;return l=lg(ko,y&&v,ag(R,He(tl,{suspensible:!0,onPending:()=>r.callHook("page:start",c.Component),onResolve:()=>{vn(()=>r.callHook("page:finish",c.Component).then(()=>r.callHook("page:loading:end")).finally(u))}},{default:()=>{const C=He(s_,{key:p||void 0,vnode:c.Component,route:c.route,renderKey:p||void 0,trackRootNodes:y,vnodeRef:s});return R&&(C.type.name=c.Component.type.name||c.Component.type.__name||"RouteProvider"),C}}))).default(),l}})}});function i_(e){const t=e.map(n=>({...n,onAfterLeave:n.onAfterLeave?Do(n.onAfterLeave):void 0}));return tc(...t)}function a_(e,t,n){if(!e)return!1;const r=t.matched.findIndex(s=>{var o;return((o=s.components)==null?void 0:o.default)===(n==null?void 0:n.type)});return!r||r===-1?!1:t.matched.slice(0,r).some((s,o)=>{var i,a,l;return((i=s.components)==null?void 0:i.default)!==((l=(a=e.matched[o])==null?void 0:a.components)==null?void 0:l.default)})||n&&ro({route:t,Component:n})!==ro({route:e,Component:n})}function l_(e,t,n){return e?t.matched.findIndex(s=>{var o;return((o=s.components)==null?void 0:o.default)===(n==null?void 0:n.type)})',2),f_=[u_];function d_(e,t,n,r,s,o){return Le(),Rr("div",null,f_)}const h_=Uo(c_,[["render",d_]]),p_={},m_={class:"flex flex-col w-screen bg-gentleBlue h-screen overflow-hidden"},g_={class:"flex-1 overflow-auto"};function y_(e,t){const n=r_,r=o_,s=h_;return Le(),Rr("div",m_,[oe(n),ct("div",g_,[oe(r)]),oe(s)])}const __=Uo(p_,[["render",y_]]),v_={__name:"nuxt-error-page",props:{error:Object},setup(e){const n=e.error;n.stack&&n.stack.split(` + */const Jt=typeof document<"u";function sm(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ie=Object.assign;function ps(e,t){const n={};for(const r in t){const s=t[r];n[r]=Ye(s)?s.map(e):e(s)}return n}const Hn=()=>{},Ye=Array.isArray,mc=/#/g,om=/&/g,im=/\//g,am=/=/g,lm=/\?/g,gc=/\+/g,cm=/%5B/g,um=/%5D/g,yc=/%5E/g,fm=/%60/g,_c=/%7B/g,dm=/%7C/g,vc=/%7D/g,hm=/%20/g;function $o(e){return encodeURI(""+e).replace(dm,"|").replace(cm,"[").replace(um,"]")}function pm(e){return $o(e).replace(_c,"{").replace(vc,"}").replace(yc,"^")}function eo(e){return $o(e).replace(gc,"%2B").replace(hm,"+").replace(mc,"%23").replace(om,"%26").replace(fm,"`").replace(_c,"{").replace(vc,"}").replace(yc,"^")}function mm(e){return eo(e).replace(am,"%3D")}function gm(e){return $o(e).replace(mc,"%23").replace(lm,"%3F")}function ym(e){return e==null?"":gm(e).replace(im,"%2F")}function Kn(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const _m=/\/$/,vm=e=>e.replace(_m,"");function ms(e,t,n="/"){let r,s={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return a=0&&(l=-1),l>-1&&(r=t.slice(0,l),o=t.slice(l+1,a>-1?a:t.length),s=e(o)),a>-1&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=Pm(r??t,n),{fullPath:r+(o&&"?")+o+i,path:r,query:s,hash:Kn(i)}}function bm(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Qi(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function wm(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&mn(t.matched[r],n.matched[s])&&bc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function mn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function bc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Em(e[n],t[n]))return!1;return!0}function Em(e,t){return Ye(e)?Ji(e,t):Ye(t)?Ji(t,e):e===t}function Ji(e,t){return Ye(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Pm(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,a;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}var Wn;(function(e){e.pop="pop",e.push="push"})(Wn||(Wn={}));var $n;(function(e){e.back="back",e.forward="forward",e.unknown=""})($n||($n={}));function Cm(e){if(!e)if(Jt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),vm(e)}const Rm=/^[^#]+#/;function Tm(e,t){return e.replace(Rm,"#")+t}function Sm(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Yr=()=>({left:window.scrollX,top:window.scrollY});function xm(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Sm(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Yi(e,t){return(history.state?history.state.position-t:-1)+e}const to=new Map;function km(e,t){to.set(e,t)}function Am(e){const t=to.get(e);return to.delete(e),t}let Om=()=>location.protocol+"//"+location.host;function wc(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let a=s.includes(e.slice(o))?e.slice(o).length:1,l=s.slice(a);return l[0]!=="/"&&(l="/"+l),Qi(l,"")}return Qi(n,e)+r+s}function Lm(e,t,n,r){let s=[],o=[],i=null;const a=({state:d})=>{const p=wc(e,location),y=n.value,v=t.value;let R=0;if(d){if(n.value=p,t.value=d,i&&i===y){i=null;return}R=v?d.position-v.position:0}else r(p);s.forEach(C=>{C(n.value,y,{delta:R,type:Wn.pop,direction:R?R>0?$n.forward:$n.back:$n.unknown})})};function l(){i=n.value}function u(d){s.push(d);const p=()=>{const y=s.indexOf(d);y>-1&&s.splice(y,1)};return o.push(p),p}function c(){const{history:d}=window;d.state&&d.replaceState(ie({},d.state,{scroll:Yr()}),"")}function f(){for(const d of o)d();o=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:l,listen:u,destroy:f}}function Xi(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?Yr():null}}function Im(e){const{history:t,location:n}=window,r={value:wc(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:Om()+e+l;try{t[c?"replaceState":"pushState"](u,"",d),s.value=u}catch(p){console.error(p),n[c?"replace":"assign"](d)}}function i(l,u){const c=ie({},t.state,Xi(s.value.back,l,s.value.forward,!0),u,{position:s.value.position});o(l,c,!0),r.value=l}function a(l,u){const c=ie({},s.value,t.state,{forward:l,scroll:Yr()});o(c.current,c,!0);const f=ie({},Xi(r.value,l,null),{position:c.position+1},u);o(l,f,!1),r.value=l}return{location:r,state:s,push:a,replace:i}}function Ec(e){e=Cm(e);const t=Im(e),n=Lm(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=ie({location:"",base:e,go:r,createHref:Tm.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function Hm(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),Ec(e)}function $m(e){return typeof e=="string"||e&&typeof e=="object"}function Pc(e){return typeof e=="string"||typeof e=="symbol"}const Ge={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Cc=Symbol("");var Zi;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Zi||(Zi={}));function gn(e,t){return ie(new Error,{type:e,[Cc]:!0},t)}function it(e,t){return e instanceof Error&&Cc in e&&(t==null||!!(e.type&t))}const ea="[^/]+?",Nm={sensitive:!1,strict:!1,start:!0,end:!0},Mm=/[.+*?^${}()[\]/\\]/g;function Dm(e,t){const n=ie({},Nm,t),r=[];let s=n.start?"^":"";const o=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(s+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function Bm(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const Fm={type:0,value:""},Um=/[a-zA-Z0-9_]/;function Vm(e){if(!e)return[[]];if(e==="/")return[[Fm]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(p){throw new Error(`ERR (${n})/"${u}": ${p}`)}let n=0,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,l,u="",c="";function f(){u&&(n===0?o.push({type:0,value:u}):n===1||n===2||n===3?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;a{i(_)}:Hn}function i(c){if(Pc(c)){const f=r.get(c);f&&(r.delete(c),n.splice(n.indexOf(f),1),f.children.forEach(i),f.alias.forEach(i))}else{const f=n.indexOf(c);f>-1&&(n.splice(f,1),c.record.name&&r.delete(c.record.name),c.children.forEach(i),c.alias.forEach(i))}}function a(){return n}function l(c){let f=0;for(;f=0&&(c.record.path!==n[f].record.path||!Rc(c,n[f]));)f++;n.splice(f,0,c),c.record.name&&!ra(c)&&r.set(c.record.name,c)}function u(c,f){let d,p={},y,v;if("name"in c&&c.name){if(d=r.get(c.name),!d)throw gn(1,{location:c});v=d.record.name,p=ie(na(f.params,d.keys.filter(_=>!_.optional).concat(d.parent?d.parent.keys.filter(_=>_.optional):[]).map(_=>_.name)),c.params&&na(c.params,d.keys.map(_=>_.name))),y=d.stringify(p)}else if(c.path!=null)y=c.path,d=n.find(_=>_.re.test(y)),d&&(p=d.parse(y),v=d.record.name);else{if(d=f.name?r.get(f.name):n.find(_=>_.re.test(f.path)),!d)throw gn(1,{location:c,currentLocation:f});v=d.record.name,p=ie({},f.params,c.params),y=d.stringify(p)}const R=[];let C=d;for(;C;)R.unshift(C.record),C=C.parent;return{name:v,path:y,params:p,matched:R,meta:Gm(R)}}return e.forEach(c=>o(c)),{addRoute:o,resolve:u,removeRoute:i,getRoutes:a,getRecordMatcher:s}}function na(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function qm(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:zm(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function zm(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function ra(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Gm(e){return e.reduce((t,n)=>ie(t,n.meta),{})}function sa(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function Rc(e,t){return t.children.some(n=>n===e||Rc(e,n))}function Qm(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&eo(o)):[r&&eo(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Jm(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=Ye(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const Ym=Symbol(""),ia=Symbol(""),No=Symbol(""),Mo=Symbol(""),no=Symbol("");function Pn(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Rt(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const u=d=>{d===!1?l(gn(4,{from:n,to:t})):d instanceof Error?l(d):$m(d)?l(gn(2,{from:t,to:d})):(i&&r.enterCallbacks[s]===i&&typeof d=="function"&&i.push(d),a())},c=o(()=>e.call(r&&r.instances[s],t,n,u));let f=Promise.resolve(c);e.length<3&&(f=f.then(u)),f.catch(d=>l(d))})}function gs(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Xm(l)){const c=(l.__vccOpts||l)[t];c&&o.push(Rt(c,n,r,i,a,s))}else{let u=l();o.push(()=>u.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${a}" at "${i.path}"`));const f=sm(c)?c.default:c;i.components[a]=f;const p=(f.__vccOpts||f)[t];return p&&Rt(p,n,r,i,a,s)()}))}}return o}function Xm(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function aa(e){const t=Ie(No),n=Ie(Mo),r=de(()=>{const l=me(e.to);return t.resolve(l)}),s=de(()=>{const{matched:l}=r.value,{length:u}=l,c=l[u-1],f=n.matched;if(!c||!f.length)return-1;const d=f.findIndex(mn.bind(null,c));if(d>-1)return d;const p=la(l[u-2]);return u>1&&la(c)===p&&f[f.length-1].path!==p?f.findIndex(mn.bind(null,l[u-2])):d}),o=de(()=>s.value>-1&&ng(n.params,r.value.params)),i=de(()=>s.value>-1&&s.value===n.matched.length-1&&bc(n.params,r.value.params));function a(l={}){return tg(l)?t[me(e.replace)?"replace":"push"](me(e.to)).catch(Hn):Promise.resolve()}return{route:r,href:de(()=>r.value.href),isActive:o,isExactActive:i,navigate:a}}const Zm=$t({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:aa,setup(e,{slots:t}){const n=Ht(aa(e)),{options:r}=Ie(No),s=de(()=>({[ca(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[ca(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:He("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),eg=Zm;function tg(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function ng(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!Ye(s)||s.length!==r.length||r.some((o,i)=>o!==s[i]))return!1}return!0}function la(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ca=(e,t,n)=>e??t??n,rg=$t({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Ie(no),s=de(()=>e.route||r.value),o=Ie(ia,0),i=de(()=>{let u=me(o);const{matched:c}=s.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),a=de(()=>s.value.matched[i.value]);an(ia,de(()=>i.value+1)),an(Ym,a),an(no,s);const l=xe();return rt(()=>[l.value,a.value,e.name],([u,c,f],[d,p,y])=>{c&&(c.instances[f]=u,p&&p!==c&&u&&u===d&&(c.leaveGuards.size||(c.leaveGuards=p.leaveGuards),c.updateGuards.size||(c.updateGuards=p.updateGuards))),u&&c&&(!p||!mn(c,p)||!d)&&(c.enterCallbacks[f]||[]).forEach(v=>v(u))},{flush:"post"}),()=>{const u=s.value,c=e.name,f=a.value,d=f&&f.components[c];if(!d)return ua(n.default,{Component:d,route:u});const p=f.props[c],y=p?p===!0?u.params:typeof p=="function"?p(u):p:null,R=He(d,ie({},y,t,{onVnodeUnmounted:C=>{C.component.isUnmounted&&(f.instances[c]=null)},ref:l}));return ua(n.default,{Component:R,route:u})||R}}});function ua(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Tc=rg;function sg(e){const t=Wm(e.routes,e),n=e.parseQuery||Qm,r=e.stringifyQuery||oa,s=e.history,o=Pn(),i=Pn(),a=Pn(),l=ft(Ge);let u=Ge;Jt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=ps.bind(null,S=>""+S),f=ps.bind(null,ym),d=ps.bind(null,Kn);function p(S,B){let D,V;return Pc(S)?(D=t.getRecordMatcher(S),V=B):V=S,t.addRoute(V,D)}function y(S){const B=t.getRecordMatcher(S);B&&t.removeRoute(B)}function v(){return t.getRoutes().map(S=>S.record)}function R(S){return!!t.getRecordMatcher(S)}function C(S,B){if(B=ie({},B||l.value),typeof S=="string"){const g=ms(n,S,B.path),w=t.resolve({path:g.path},B),x=s.createHref(g.fullPath);return ie(g,w,{params:d(w.params),hash:Kn(g.hash),redirectedFrom:void 0,href:x})}let D;if(S.path!=null)D=ie({},S,{path:ms(n,S.path,B.path).path});else{const g=ie({},S.params);for(const w in g)g[w]==null&&delete g[w];D=ie({},S,{params:f(g)}),B.params=f(B.params)}const V=t.resolve(D,B),se=S.hash||"";V.params=c(d(V.params));const he=bm(r,ie({},S,{hash:pm(se),path:V.path})),h=s.createHref(he);return ie({fullPath:he,hash:se,query:r===oa?Jm(S.query):S.query||{}},V,{redirectedFrom:void 0,href:h})}function _(S){return typeof S=="string"?ms(n,S,l.value.path):ie({},S)}function m(S,B){if(u!==S)return gn(8,{from:B,to:S})}function b(S){return O(S)}function E(S){return b(ie(_(S),{replace:!0}))}function P(S){const B=S.matched[S.matched.length-1];if(B&&B.redirect){const{redirect:D}=B;let V=typeof D=="function"?D(S):D;return typeof V=="string"&&(V=V.includes("?")||V.includes("#")?V=_(V):{path:V},V.params={}),ie({query:S.query,hash:S.hash,params:V.path!=null?{}:S.params},V)}}function O(S,B){const D=u=C(S),V=l.value,se=S.state,he=S.force,h=S.replace===!0,g=P(D);if(g)return O(ie(_(g),{state:typeof g=="object"?ie({},se,g.state):se,force:he,replace:h}),B||D);const w=D;w.redirectedFrom=B;let x;return!he&&wm(r,V,D)&&(x=gn(16,{to:w,from:V}),Xe(V,V,!0,!1)),(x?Promise.resolve(x):$(w,V)).catch(T=>it(T)?it(T,2)?T:pt(T):K(T,w,V)).then(T=>{if(T){if(it(T,2))return O(ie({replace:h},_(T.to),{state:typeof T.to=="object"?ie({},se,T.to.state):se,force:he}),B||w)}else T=H(w,V,!0,h,se);return Q(w,V,T),T})}function k(S,B){const D=m(S,B);return D?Promise.reject(D):Promise.resolve()}function N(S){const B=Gt.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(S):S()}function $(S,B){let D;const[V,se,he]=og(S,B);D=gs(V.reverse(),"beforeRouteLeave",S,B);for(const g of V)g.leaveGuards.forEach(w=>{D.push(Rt(w,S,B))});const h=k.bind(null,S,B);return D.push(h),Ce(D).then(()=>{D=[];for(const g of o.list())D.push(Rt(g,S,B));return D.push(h),Ce(D)}).then(()=>{D=gs(se,"beforeRouteUpdate",S,B);for(const g of se)g.updateGuards.forEach(w=>{D.push(Rt(w,S,B))});return D.push(h),Ce(D)}).then(()=>{D=[];for(const g of he)if(g.beforeEnter)if(Ye(g.beforeEnter))for(const w of g.beforeEnter)D.push(Rt(w,S,B));else D.push(Rt(g.beforeEnter,S,B));return D.push(h),Ce(D)}).then(()=>(S.matched.forEach(g=>g.enterCallbacks={}),D=gs(he,"beforeRouteEnter",S,B,N),D.push(h),Ce(D))).then(()=>{D=[];for(const g of i.list())D.push(Rt(g,S,B));return D.push(h),Ce(D)}).catch(g=>it(g,8)?g:Promise.reject(g))}function Q(S,B,D){a.list().forEach(V=>N(()=>V(S,B,D)))}function H(S,B,D,V,se){const he=m(S,B);if(he)return he;const h=B===Ge,g=Jt?history.state:{};D&&(V||h?s.replace(S.fullPath,ie({scroll:h&&g&&g.scroll},se)):s.push(S.fullPath,se)),l.value=S,Xe(S,B,D,h),pt()}let G;function ce(){G||(G=s.listen((S,B,D)=>{if(!Xn.listening)return;const V=C(S),se=P(V);if(se){O(ie(se,{replace:!0}),V).catch(Hn);return}u=V;const he=l.value;Jt&&km(Yi(he.fullPath,D.delta),Yr()),$(V,he).catch(h=>it(h,12)?h:it(h,2)?(O(h.to,V).then(g=>{it(g,20)&&!D.delta&&D.type===Wn.pop&&s.go(-1,!1)}).catch(Hn),Promise.reject()):(D.delta&&s.go(-D.delta,!1),K(h,V,he))).then(h=>{h=h||H(V,he,!1),h&&(D.delta&&!it(h,8)?s.go(-D.delta,!1):D.type===Wn.pop&&it(h,20)&&s.go(-1,!1)),Q(V,he,h)}).catch(Hn)}))}let ue=Pn(),U=Pn(),Z;function K(S,B,D){pt(S);const V=U.list();return V.length?V.forEach(se=>se(S,B,D)):console.error(S),Promise.reject(S)}function qe(){return Z&&l.value!==Ge?Promise.resolve():new Promise((S,B)=>{ue.add([S,B])})}function pt(S){return Z||(Z=!S,ce(),ue.list().forEach(([B,D])=>S?D(S):B()),ue.reset()),S}function Xe(S,B,D,V){const{scrollBehavior:se}=e;if(!Jt||!se)return Promise.resolve();const he=!D&&Am(Yi(S.fullPath,0))||(V||!D)&&history.state&&history.state.scroll||null;return vn().then(()=>se(S,B,he)).then(h=>h&&xm(h)).catch(h=>K(h,S,B))}const Ae=S=>s.go(S);let zt;const Gt=new Set,Xn={currentRoute:l,listening:!0,addRoute:p,removeRoute:y,hasRoute:R,getRoutes:v,resolve:C,options:e,push:b,replace:E,go:Ae,back:()=>Ae(-1),forward:()=>Ae(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:U.add,isReady:qe,install(S){const B=this;S.component("RouterLink",eg),S.component("RouterView",Tc),S.config.globalProperties.$router=B,Object.defineProperty(S.config.globalProperties,"$route",{enumerable:!0,get:()=>me(l)}),Jt&&!zt&&l.value===Ge&&(zt=!0,b(s.location).catch(se=>{}));const D={};for(const se in Ge)Object.defineProperty(D,se,{get:()=>l.value[se],enumerable:!0});S.provide(No,B),S.provide(Mo,St(D)),S.provide(no,l);const V=S.unmount;Gt.add(S),S.unmount=function(){Gt.delete(S),Gt.size<1&&(u=Ge,G&&G(),G=null,l.value=Ge,zt=!1,Z=!1),V()}}};function Ce(S){return S.reduce((B,D)=>B.then(()=>N(D)),Promise.resolve())}return Xn}function og(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;imn(u,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(u=>mn(u,l))||s.push(l))}return[n,r,s]}function x_(){return Ie(Mo)}const ig=(e,t)=>t.path.replace(/(:\w+)\([^)]+\)/g,"$1").replace(/(:\w+)[?+*]/g,"$1").replace(/:\w+/g,n=>{var r;return((r=e.params[n.slice(1)])==null?void 0:r.toString())||""}),ro=(e,t)=>{const n=e.route.matched.find(s=>{var o;return((o=s.components)==null?void 0:o.default)===e.Component.type}),r=t??(n==null?void 0:n.meta.key)??(n&&ig(e.route,n));return typeof r=="function"?r(e.route):r},ag=(e,t)=>({default:()=>e?He(Zu,e===!0?{}:e,t):t});function Do(e){return Array.isArray(e)?e:[e]}const ys=null,_s=null,vs=null,bs=null,ws=null,fa=[{name:"slug",path:"/:slug(.*)*",meta:{},alias:[],redirect:ys==null?void 0:ys.redirect,component:()=>J(()=>import("./DkeyjNz2.js"),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url).then(e=>e.default||e)},{name:"index",path:"/",meta:{},alias:[],redirect:_s==null?void 0:_s.redirect,component:()=>J(()=>import("./DYP278Uv.js"),[],import.meta.url).then(e=>e.default||e)},{name:"main-page",path:"/main/:page()",meta:{},alias:[],redirect:vs==null?void 0:vs.redirect,component:()=>J(()=>import("./CXVzcd7o.js"),__vite__mapDeps([7,2,3,8,5,6]),import.meta.url).then(e=>e.default||e)},{name:"modules-module",path:"/modules/:module()",meta:{},alias:[],redirect:ws==null?void 0:ws.redirect,component:()=>J(()=>import("./Ga6hsoRA.js"),__vite__mapDeps([9,8,5,6,2,3]),import.meta.url).then(e=>e.default||e),children:[{name:"modules-module-chapter",path:":chapter()",meta:{},alias:[],redirect:bs==null?void 0:bs.redirect,component:()=>J(()=>import("./CBT8na2g.js"),__vite__mapDeps([10,11,12,2,3,8,5,6]),import.meta.url).then(e=>e.default||e)}]}],lg=(e,t,n)=>(t=t===!0?{}:t,{default:()=>{var r;return t?He(e,t,n):(r=n.default)==null?void 0:r.call(n)}});function da(e){const t=(e==null?void 0:e.meta.key)??e.path.replace(/(:\w+)\([^)]+\)/g,"$1").replace(/(:\w+)[?+*]/g,"$1").replace(/:\w+/g,n=>{var r;return((r=e.params[n.slice(1)])==null?void 0:r.toString())||""});return typeof t=="function"?t(e):t}function cg(e,t){return e===t||t===Ge?!1:da(e)!==da(t)?!0:!e.matched.every((r,s)=>{var o,i;return r.components&&r.components.default===((i=(o=t.matched[s])==null?void 0:o.components)==null?void 0:i.default)})}const ug={scrollBehavior(e,t,n){var u;const r=le(),s=((u=We().options)==null?void 0:u.scrollBehaviorType)??"auto";let o=n||void 0;const i=typeof e.meta.scrollToTop=="function"?e.meta.scrollToTop(e,t):e.meta.scrollToTop;if(!o&&t&&e&&i!==!1&&cg(e,t)&&(o={left:0,top:0}),e.path===t.path)return t.hash&&!e.hash?{left:0,top:0}:e.hash?{el:e.hash,top:ha(e.hash),behavior:s}:!1;const a=c=>!!(c.meta.pageTransition??Zs),l=a(t)&&a(e)?"page:transition:finish":"page:finish";return new Promise(c=>{r.hooks.hookOnce(l,async()=>{await new Promise(f=>setTimeout(f,0)),e.hash&&(o={el:e.hash,top:ha(e.hash),behavior:s}),c(o)})})}};function ha(e){try{const t=document.querySelector(e);if(t)return parseFloat(getComputedStyle(t).scrollMarginTop)}catch{}return 0}const fg={hashMode:!1,scrollBehaviorType:"auto"},Me={...fg,...ug},dg=async e=>{var l;let t,n;if(!((l=e.meta)!=null&&l.validate))return;const r=le(),s=We();if(([t,n]=hn(()=>Promise.resolve(e.meta.validate(e))),t=await t,n(),t)===!0)return;const i=Yn({statusCode:404,statusMessage:`Page Not Found: ${e.fullPath}`,data:{path:e.fullPath}}),a=s.beforeResolve(u=>{if(a(),u===e){const c=s.afterEach(async()=>{c(),await r.runWithContext(()=>Zt(i)),window.history.pushState({},"",e.fullPath)});return!1}})},hg=async e=>{let t,n;const r=([t,n]=hn(()=>Ho(e.path)),t=await t,n(),t);if(r.redirect)return Je(r.redirect,{acceptRelative:!0})?(window.location.href=r.redirect,!1):r.redirect},pg=[dg,hg],Nn={};function mg(e,t,n){const{pathname:r,search:s,hash:o}=t,i=e.indexOf("#");if(i>-1){const u=o.includes(e.slice(i))?e.slice(i).length:1;let c=o.slice(u);return c[0]!=="/"&&(c="/"+c),Ai(c,"")}const a=Ai(r,e),l=!n||Vd(a,n,{trailingSlash:!0})?a:n;return l+(l.includes("?")?"":s)+o}const gg=ot({name:"nuxt:router",enforce:"pre",async setup(e){var R,C;let t,n,r=je().app.baseURL;Me.hashMode&&!r.includes("#")&&(r+="#");const s=((R=Me.history)==null?void 0:R.call(Me,r))??(Me.hashMode?Hm(r):Ec(r)),o=((C=Me.routes)==null?void 0:C.call(Me,fa))??fa;let i;const a=sg({...Me,scrollBehavior:(_,m,b)=>{if(m===Ge){i=b;return}if(Me.scrollBehavior){if(a.options.scrollBehavior=Me.scrollBehavior,"scrollRestoration"in window.history){const E=a.beforeEach(()=>{E(),window.history.scrollRestoration="manual"})}return Me.scrollBehavior(_,Ge,i||b)}},history:s,routes:o});"scrollRestoration"in window.history&&(window.history.scrollRestoration="auto"),e.vueApp.use(a);const l=ft(a.currentRoute.value);a.afterEach((_,m)=>{l.value=m}),Object.defineProperty(e.vueApp.config.globalProperties,"previousRoute",{get:()=>l.value});const u=mg(r,window.location,e.payload.path),c=ft(a.currentRoute.value),f=()=>{c.value=a.currentRoute.value};e.hook("page:finish",f),a.afterEach((_,m)=>{var b,E,P,O;((E=(b=_.matched[0])==null?void 0:b.components)==null?void 0:E.default)===((O=(P=m.matched[0])==null?void 0:P.components)==null?void 0:O.default)&&f()});const d={};for(const _ in c.value)Object.defineProperty(d,_,{get:()=>c.value[_]});e._route=St(d),e._middleware=e._middleware||{global:[],named:{}};try{[t,n]=hn(()=>a.isReady()),await t,n()}catch(_){[t,n]=hn(()=>e.runWithContext(()=>Zt(_))),await t,n()}const p=u!==a.currentRoute.value.fullPath?a.resolve(u):a.currentRoute.value;f();const y=e.payload.state._layout;a.beforeEach(async(_,m)=>{var b;await e.callHook("page:loading:start"),_.meta=Ht(_.meta),e.isHydrating&&y&&!cn(_.meta.layout)&&(_.meta.layout=y),e._processingMiddleware=!0;{const E=new Set([...pg,...e._middleware.global]);for(const P of _.matched){const O=P.meta.middleware;if(O)for(const k of Do(O))E.add(k)}{const P=await e.runWithContext(()=>Ho(_.path));if(P.appMiddleware)for(const O in P.appMiddleware)P.appMiddleware[O]?E.add(O):E.delete(O)}for(const P of E){const O=typeof P=="string"?e._middleware.named[P]||await((b=Nn[P])==null?void 0:b.call(Nn).then(N=>N.default||N)):P;if(!O)throw new Error(`Unknown route middleware: '${P}'.`);const k=await e.runWithContext(()=>O(_,m));if(!e.payload.serverRendered&&e.isHydrating&&(k===!1||k instanceof Error)){const N=k||Gs({statusCode:404,statusMessage:`Page Not Found: ${u}`});return await e.runWithContext(()=>Zt(N)),!1}if(k!==!0&&(k||k===!1))return k}}}),a.onError(async()=>{delete e._processingMiddleware,await e.callHook("page:loading:end")});const v=Qr();return a.afterEach(async(_,m,b)=>{delete e._processingMiddleware,!e.isHydrating&&v.value&&await e.runWithContext(Yh),b&&await e.callHook("page:loading:end"),_.matched.length===0&&await e.runWithContext(()=>Zt(Gs({statusCode:404,fatal:!1,statusMessage:`Page not found: ${_.fullPath}`,data:{path:_.fullPath}})))}),e.hooks.hookOnce("app:created",async()=>{try{"name"in p&&(p.name=void 0),await a.replace({...p,force:!0}),a.options.scrollBehavior=Me.scrollBehavior}catch(_){await e.runWithContext(()=>Zt(_))}}),{provide:{router:a}}}}),so=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),yg=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)}),Xr=e=>{const t=le();t.isHydrating?t.hooks.hookOnce("app:suspense:resolve",()=>{so(e)}):so(e)},_g=ot({name:"nuxt:payload",setup(e){We().beforeResolve(async(t,n)=>{if(t.path===n.path)return;const r=await zi(t.path);r&&Object.assign(e.static.data,r.data)}),Xr(()=>{var t;e.hooks.hook("link:prefetch",async n=>{qr(n).protocol||await zi(n)}),((t=navigator.connection)==null?void 0:t.effectiveType)!=="slow-2g"&&setTimeout(Jr,1e3)})}}),vg=ot(e=>{let t;async function n(){const r=await Jr();t&&clearTimeout(t),t=setTimeout(n,1e3*60*60);try{const s=await $fetch(Lo("builds/latest.json")+`?${Date.now()}`);s.id!==r.id&&e.hooks.callHook("app:manifest:update",s)}catch{}}Xr(()=>{t=setTimeout(n,1e3*60*60)})}),bg=ee(()=>J(()=>import("./EpcERS4a.js"),__vite__mapDeps([8,5,6,2,3]),import.meta.url).then(e=>e.default||e.default||e)),wg=ee(()=>J(()=>Promise.resolve().then(()=>Wy),void 0,import.meta.url).then(e=>e.default||e.default||e)),Eg=ee(()=>J(()=>import("./D3LnE11t.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Pg=ee(()=>J(()=>Promise.resolve().then(()=>Vy),void 0,import.meta.url).then(e=>e.default||e.default||e)),Cg=ee(()=>J(()=>import("./CVF0_ZUn.js"),__vite__mapDeps([2,3]),import.meta.url).then(e=>e.default||e.default||e)),Rg=ee(()=>J(()=>import("./Zpk1VdH2.js"),__vite__mapDeps([13,3]),import.meta.url).then(e=>e.default||e.default||e)),Tg=ee(()=>J(()=>import("./DVOw9KrD.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Sg=ee(()=>J(()=>import("./C49RwB7F.js"),[],import.meta.url).then(e=>e.default||e.default||e)),xg=ee(()=>J(()=>import("./CSRjDKbk.js"),[],import.meta.url).then(e=>e.default||e.default||e)),kg=ee(()=>J(()=>import("./BpByekOG.js"),__vite__mapDeps([14,15]),import.meta.url).then(e=>e.default||e.default||e)),Ag=ee(()=>J(()=>import("./0li69SiJ.js"),__vite__mapDeps([16,17,18]),import.meta.url).then(e=>e.default||e.default||e)),Og=ee(()=>J(()=>import("./BnPLI2mJ.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Lg=ee(()=>J(()=>import("./Dz1cAOXu.js"),__vite__mapDeps([19,17,18]),import.meta.url).then(e=>e.default||e.default||e)),Ig=ee(()=>J(()=>import("./DBdY7ehp.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Hg=ee(()=>J(()=>import("./BZrcnnPV.js"),[],import.meta.url).then(e=>e.default||e.default||e)),$g=ee(()=>J(()=>import("./XUN6lWw2.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Ng=ee(()=>J(()=>import("./Knxihn3T.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Mg=ee(()=>J(()=>import("./EoVG4rqH.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Dg=ee(()=>J(()=>import("./Fc95O8bf.js"),[],import.meta.url).then(e=>e.default||e.default||e)),jg=ee(()=>J(()=>import("./B5xsfvS6.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Bg=ee(()=>J(()=>import("./DVbdpRCP.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Fg=ee(()=>J(()=>import("./Cfy6ZhgN.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Ug=ee(()=>J(()=>import("./Bk2SitLQ.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Vg=ee(()=>J(()=>import("./2a0NTiJ-.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Kg=ee(()=>J(()=>import("./nrlYX7Nq.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Wg=ee(()=>J(()=>import("./BTNXVUoN.js"),[],import.meta.url).then(e=>e.default||e.default||e)),qg=ee(()=>J(()=>import("./B7snaaDu.js"),[],import.meta.url).then(e=>e.default||e.default||e)),zg=ee(()=>J(()=>import("./CHswFzba.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Gg=ee(()=>J(()=>import("./DGrI1rgt.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Qg=ee(()=>J(()=>import("./DKWc8O0p.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Jg=ee(()=>J(()=>import("./BLx8FI5_.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Yg=ee(()=>J(()=>import("./DUG34Y6d.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Xg=ee(()=>J(()=>import("./DwB7O9Nt.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Zg=ee(()=>J(()=>import("./DZjJAkRf.js"),[],import.meta.url).then(e=>e.default||e.default||e)),ey=ee(()=>J(()=>import("./t2ymJCa3.js"),[],import.meta.url).then(e=>e.default||e.default||e)),ty=ee(()=>J(()=>import("./BxOF1W9g.js"),[],import.meta.url).then(e=>e.default||e.default||e)),ny=[["ContentDoc",bg],["ContentList",wg],["ContentNavigation",Eg],["ContentQuery",Pg],["ContentRenderer",Cg],["ContentRendererMarkdown",Rg],["MDCSlot",Tg],["DocumentDrivenEmpty",Sg],["DocumentDrivenNotFound",xg],["Markdown",kg],["ProseCode",Ag],["ProseCodeInline",Og],["ProsePre",Lg],["ProseA",Ig],["ProseBlockquote",Hg],["ProseEm",$g],["ProseH1",Ng],["ProseH2",Mg],["ProseH3",Dg],["ProseH4",jg],["ProseH5",Bg],["ProseH6",Fg],["ProseHr",Ug],["ProseImg",Vg],["ProseLi",Kg],["ProseOl",Wg],["ProseP",qg],["ProseScript",zg],["ProseStrong",Gg],["ProseTable",Qg],["ProseTbody",Jg],["ProseTd",Yg],["ProseTh",Xg],["ProseThead",Zg],["ProseTr",ey],["ProseUl",ty]],ry=ot({name:"nuxt:global-components",setup(e){for(const[t,n]of ny)e.vueApp.component(t,n),e.vueApp.component("Lazy"+t,n)}}),Tn={"nlesc-decorations":()=>J(()=>import("./fio-yYFF.js"),[],import.meta.url).then(e=>e.default||e)},sy=ot({name:"nuxt:prefetch",setup(e){const t=We();e.hooks.hook("app:mounted",()=>{t.beforeEach(async n=>{var s;const r=(s=n==null?void 0:n.meta)==null?void 0:s.layout;r&&typeof Tn[r]=="function"&&await Tn[r]()})}),e.hooks.hook("link:prefetch",n=>{if(Je(n))return;const r=t.resolve(n);if(!r)return;const s=r.meta.layout;let o=Do(r.meta.middleware);o=o.filter(i=>typeof i=="string");for(const i of o)typeof Nn[i]=="function"&&Nn[i]();s&&typeof Tn[s]=="function"&&Tn[s]()})}});function oy(e){return Array.isArray(e)?e:[e]}const iy=async e=>{const t=le();e=oy(e),await Promise.all(e.map(n=>ly(t.vueApp._context.components[n])))},ay=e=>iy(e);function ly(e){if(e!=null&&e.__asyncLoader&&!e.__asyncResolved)return e.__asyncLoader()}async function Sc(e,t=We()){const{path:n,matched:r}=t.resolve(e);if(!r.length||(t._routePreloaded||(t._routePreloaded=new Set),t._routePreloaded.has(n)))return;const s=t._preloadPromises=t._preloadPromises||[];if(s.length>4)return Promise.all(s).then(()=>Sc(e,t));t._routePreloaded.add(n);const o=r.map(i=>{var a;return(a=i.components)==null?void 0:a.default}).filter(i=>typeof i=="function");for(const i of o){const a=Promise.resolve(i()).catch(()=>{}).finally(()=>s.splice(s.indexOf(a)));s.push(a)}await Promise.all(s)}const cy=["Banner","ChapterBar","Footer","ModuleCard","Slides","ContentDoc","ContentList","ContentNavigation","ContentQuery","ContentRenderer","ContentRendererMarkdown","MDCSlot","DocumentDrivenEmpty","DocumentDrivenNotFound","Markdown","ProseCode","ProseCodeInline","ProsePre","ProseA","ProseBlockquote","ProseEm","ProseH1","ProseH2","ProseH3","ProseH4","ProseH5","ProseH6","ProseHr","ProseImg","ProseLi","ProseOl","ProseP","ProseScript","ProseStrong","ProseTable","ProseTbody","ProseTd","ProseTh","ProseThead","ProseTr","ProseUl","NuxtWelcome","NuxtLayout","NuxtErrorBoundary","ClientOnly","DevOnly","ServerPlaceholder","NuxtLink","NuxtLoadingIndicator","NuxtIsland","NuxtImg","NuxtPicture","MDC","MDCRenderer","MDCSlot","NuxtPage","NoScript","Link","Base","Title","Meta","Style","Head","Html","Body"],uy=/\d/,fy=["-","_","/","."];function dy(e=""){if(!uy.test(e))return e!==e.toLowerCase()}function xc(e,t){const n=fy,r=[];if(!e||typeof e!="string")return r;let s="",o,i;for(const a of e){const l=n.includes(a);if(l===!0){r.push(s),s="",o=void 0;continue}const u=dy(a);if(i===!1){if(o===!1&&u===!0){r.push(s),s=a,o=u;continue}if(o===!0&&u===!1&&s.length>1){const c=s.at(-1);r.push(s.slice(0,Math.max(0,s.length-1))),s=c+a,o=u;continue}}s+=a,o=u,i=l}return r.push(s),r}function hy(e){return e?e[0].toUpperCase()+e.slice(1):""}function py(e,t){return e?(Array.isArray(e)?e:xc(e)).map(n=>hy(t!=null&&t.normalize?n.toLowerCase():n)).join(""):""}function k_(e,t){return e?(Array.isArray(e)?e:xc(e)).map(n=>n.toLowerCase()).join("-"):""}const my="$s";function fr(...e){const t=typeof e[e.length-1]=="string"?e.pop():void 0;typeof e[0]!="string"&&e.unshift(t);const[n,r]=e;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(r!==void 0&&typeof r!="function")throw new Error("[nuxt] [useState] init must be a function: "+r);const s=my+n,o=le(),i=vo(o.payload.state,s);if(i.value===void 0&&r){const a=r();if(Pe(a))return o.payload.state[s]=a,a;i.value=a}return i}const Yt=()=>{const e=fr("dd-pages",()=>ft(St({}))),t=fr("dd-surrounds",()=>ft(St({}))),n=fr("dd-navigation"),r=fr("dd-globals",()=>ft(St({})));return{pages:e,surrounds:t,navigation:n,globals:r}},A_=()=>{const{navigation:e,pages:t,surrounds:n,globals:r}=Yt(),s=de(()=>Ot(pn().path)),o=de(()=>t.value[s.value]),i=de(()=>n.value[s.value]),a=de(()=>{var p,y;return(y=(p=o==null?void 0:o.value)==null?void 0:p.body)==null?void 0:y.toc}),l=de(()=>{var p;return(p=o.value)==null?void 0:p._type}),u=de(()=>{var p;return(p=o.value)==null?void 0:p.excerpt}),c=de(()=>{var p;return(p=o.value)==null?void 0:p.layout}),f=de(()=>{var p;return(p=i.value)==null?void 0:p[1]}),d=de(()=>{var p;return(p=i.value)==null?void 0:p[0]});return{globals:r,navigation:e,surround:i,page:o,excerpt:u,toc:a,type:l,layout:c,next:f,prev:d}},kc=e=>{if(!e.children)return e._path;for(const t of(e==null?void 0:e.children)||[]){const n=kc(t);if(n)return n}},Ac=(e,t)=>{for(const n of t){if(n._path===e&&!n._id)return n.children;if(n.children){const r=Ac(e,n.children);if(r)return r}}},Oc=(e,t)=>{for(const n of t){if(n._path===e)return n;if(n.children){const r=Oc(e,n.children);if(r)return r}}},gy=(e,t,n)=>{let r;const s=(o,i)=>{for(const a of i)if(!(o!=="/"&&a._path==="/")){if(o!=null&&o.startsWith(a._path)&&a[t]&&(r=a[t]),a._path===o)return;a.children&&s(o,a.children)}};return s(e,n),r},yy=()=>({navBottomLink:kc,navDirFromPath:Ac,navPageFromPath:Oc,navKeyFromPath:gy});function jo(e){return JSON.stringify(e,_y)}function _y(e,t){return t instanceof RegExp?`--REGEX ${t.toString()}`:t}const Lc=e=>{let t=jo(e);return t=typeof Buffer<"u"?Buffer.from(t).toString("base64"):btoa(t),t=t.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),(t.match(/.{1,100}/g)||[]).join("/")},vy={path:"/",watch:!0,decode:e=>Un(decodeURIComponent(e)),encode:e=>encodeURIComponent(typeof e=="string"?e:JSON.stringify(e))},by=void 0;function Es(e,t){var l;const n={...vy,...t},r=pa(n)||{};let s;n.maxAge!==void 0?s=n.maxAge*1e3:n.expires&&(s=n.expires.getTime()-Date.now());const o=s!==void 0&&s<=0,i=et(o?void 0:r[e]??((l=n.default)==null?void 0:l.call(n))),a=s&&!o?Py(i,s,n.watch&&n.watch!=="shallow"):xe(i);{let u=null;try{!by&&typeof BroadcastChannel<"u"&&(u=new BroadcastChannel(`nuxt:cookies:${e}`))}catch{}const c=()=>{n.readonly||jh(a.value,r[e])||(Ey(e,a.value,n),r[e]=et(a.value),u==null||u.postMessage({value:n.encode(a.value)}))},f=p=>{var v;const y=p.refresh?(v=pa(n))==null?void 0:v[e]:n.decode(p.value);d=!0,r[e]=a.value=y,vn(()=>{d=!1})};let d=!1;Dr()&&yr(()=>{d=!0,c(),u==null||u.close()}),u&&(u.onmessage=({data:p})=>f(p)),n.watch?rt(a,()=>{d||c()},{deep:n.watch!=="shallow"}):c()}return a}function pa(e={}){return Ph(document.cookie,e)}function wy(e,t,n={}){return t==null?$i(e,t,{...n,maxAge:-1}):$i(e,t,n)}function Ey(e,t,n={}){document.cookie=wy(e,t,n)}const ma=2147483647;function Py(e,t,n){let r,s,o=0;const i=n?xe(e):{value:e};return Dr()&&yr(()=>{s==null||s(),clearTimeout(r)}),Ru((a,l)=>{n&&(s=rt(i,l));function u(){clearTimeout(r);const c=t-o,f=c{if(o+=f,o({isEnabled:()=>{const r=pn().query;return Object.prototype.hasOwnProperty.call(r,"preview")&&!r.preview?!1:!!(r.preview||Es("previewToken").value||sessionStorage.getItem("previewToken"))},getPreviewToken:()=>Es("previewToken").value||sessionStorage.getItem("previewToken")||void 0,setPreviewToken:r=>{Es("previewToken").value=r,pn().query.preview=r||"",r?sessionStorage.setItem("previewToken",r):sessionStorage.removeItem("previewToken"),window.location.reload()}}),Ir=e=>Bl(e,je().public.content.api.baseURL),Ic=()=>{const{experimental:e}=je().public.content;return e.clientDB?!0:Bo().isEnabled()},ga=(e,t)=>t.split(".").reduce((n,r)=>n&&n[r],e),Fo=(e,t)=>Object.keys(e).filter(t).reduce((n,r)=>Object.assign(n,{[r]:e[r]}),{}),O_=e=>t=>e&&e.length?Fo(t,n=>!e.includes(n)):t,L_=e=>t=>Array.isArray(t)?t.map(n=>e(n)):e(t),Hc=e=>{const t=[],n=[];for(const r of e)["$","_"].includes(r)?t.push(r):n.push(r);return{prefixes:t,properties:n}},I_=(e=[])=>t=>{if(e.length===0||!t)return t;const{prefixes:n,properties:r}=Hc(e);return Fo(t,s=>!r.includes(s)&&!n.includes(s[0]))},H_=(e=[])=>t=>{if(e.length===0||!t)return t;const{prefixes:n,properties:r}=Hc(e);return Fo(t,s=>r.includes(s)||n.includes(s[0]))},$_=(e,t)=>{const n=new Intl.Collator(t.$locale,{numeric:t.$numeric,caseFirst:t.$caseFirst,sensitivity:t.$sensitivity}),r=Object.keys(t).filter(s=>!s.startsWith("$"));for(const s of r)e=e.sort((o,i)=>{const a=[ga(o,s),ga(i,s)].map(l=>{if(l!==null)return l instanceof Date?l.toISOString():l});return t[s]===-1&&a.reverse(),n.compare(a[0],a[1])});return e},N_=(e,t="Expected an array")=>{if(!Array.isArray(e))throw new TypeError(t)},at=e=>Array.isArray(e)?e:[void 0,null].includes(e)?[]:[e],Cy=["sort","where","only","without"];function Ry(e,t={}){const n={};for(const i of Object.keys(t.initialParams||{}))n[i]=Cy.includes(i)?at(t.initialParams[i]):t.initialParams[i];const r=(i,a=l=>l)=>(...l)=>(n[i]=a(...l),o),s=i=>{var a;return t.legacy?i!=null&&i.surround?i.surround:i&&(i!=null&&i.dirConfig&&(i.result={_path:(a=i.dirConfig)==null?void 0:a._path,...i.result,_dir:i.dirConfig}),i!=null&&i._path||Array.isArray(i)||!Object.prototype.hasOwnProperty.call(i,"result")?i:i==null?void 0:i.result):i},o={params:()=>({...n,...n.where?{where:[...at(n.where)]}:{},...n.sort?{sort:[...at(n.sort)]}:{}}),only:r("only",at),without:r("without",at),where:r("where",i=>[...at(n.where),...at(i)]),sort:r("sort",i=>[...at(n.sort),...at(i)]),limit:r("limit",i=>parseInt(String(i),10)),skip:r("skip",i=>parseInt(String(i),10)),find:()=>e(o).then(s),findOne:()=>e(r("first")(!0)).then(s),count:()=>e(r("count")(!0)).then(s),locale:i=>o.where({_locale:i}),withSurround:r("surround",(i,a)=>({query:i,...a})),withDirConfig:()=>r("dirConfig")(!0)};return t.legacy&&(o.findSurround=(i,a)=>o.withSurround(i,a).find().then(s)),o}const Ty=()=>async e=>{const{content:t}=je().public,n=e.params(),r=t.experimental.stripQueryParameters?Ir(`/query/${`${Vn(n)}.${t.integrity}`}/${Lc(n)}.json`):Ir(`/query/${Vn(n)}.${t.integrity}.json`);if(Ic())return(await J(()=>import("./CytIWpRH.js"),__vite__mapDeps([20,11]),import.meta.url).then(i=>i.useContentDatabase())).fetch(e);const s=await $fetch(r,{method:"GET",responseType:"json",params:t.experimental.stripQueryParameters?void 0:{_params:jo(n),previewToken:Bo().getPreviewToken()}});if(typeof s=="string"&&s.startsWith(""))throw new Error("Not found");return s};function ln(e,...t){const{content:n}=je().public,r=Ry(Ty(),{initialParams:typeof e!="string"?e:{},legacy:!0});let s;typeof e=="string"&&(s=Us(Jn(e,...t)));const o=r.params;return r.params=()=>{var a,l,u;const i=o();return s&&(i.where=i.where||[],i.first&&(i.where||[]).length===0?i.where.push({_path:Ot(s)}):i.where.push({_path:new RegExp(`^${s.replace(/[-[\]{}()*+.,^$\s/]/g,"\\$&")}`)})),(a=i.sort)!=null&&a.length||(i.sort=[{_file:1,$numeric:!0}]),n.locales.length&&((u=(l=i.where)==null?void 0:l.find(f=>f._locale))!=null&&u._locale||(i.where=i.where||[],i.where.push({_locale:n.defaultLocale}))),i},r}const Sy=async e=>{const{content:t}=je().public;typeof(e==null?void 0:e.params)!="function"&&(e=ln(e));const n=e.params(),r=t.experimental.stripQueryParameters?Ir(`/navigation/${`${Vn(n)}.${t.integrity}`}/${Lc(n)}.json`):Ir(`/navigation/${Vn(n)}.${t.integrity}.json`);if(Ic())return(await J(()=>import("./CytIWpRH.js"),__vite__mapDeps([20,11]),import.meta.url).then(i=>i.generateNavigation))(n);const s=await $fetch(r,{method:"GET",responseType:"json",params:t.experimental.stripQueryParameters?void 0:{_params:jo(n),previewToken:Bo().getPreviewToken()}});if(typeof s=="string"&&s.startsWith(""))throw new Error("Not found");return s},xy=ot(e=>{var u,c,f,d;const t=(c=(u=je())==null?void 0:u.public)==null?void 0:c.content.documentDriven,n=(d=(f=je())==null?void 0:f.public)==null?void 0:d.content.experimental.clientDB,{navigation:r,pages:s,globals:o,surrounds:i}=Yt(),a=(p,y,v,R)=>{var C;if(y&&(y!=null&&y.layout))return y.layout;if(p.matched.length&&((C=p.matched[0].meta)!=null&&C.layout))return p.matched[0].meta.layout;if(v&&y){const{navKeyFromPath:_}=yy(),m=_(y._path,"layout",v);if(m)return m}if(t.layoutFallbacks&&R){let _;for(const m of t.layoutFallbacks)if(R[m]&&R[m].layout){_=R[m].layout;break}if(_)return _}return"default"},l=async(p,y=!1)=>{e.callHook("content:document-driven:start",{route:p,dedup:y});const v=p.meta.documentDriven||{};if(p.meta.documentDriven===!1)return;const R=Ot(p.path),C=[];if(t.navigation&&v.navigation!==!1){const _=()=>{const{navigation:m}=Yt();return m.value&&!y?m.value:Sy().then(b=>(m.value=b,b)).catch(()=>null)};C.push(_)}else C.push(()=>Promise.resolve(null));if(t.globals){const _=()=>{const{globals:m}=Yt();if(typeof t.globals=="object"&&Array.isArray(t.globals)){console.log("Globals must be a list of keys with QueryBuilderParams as a value.");return}return Promise.all(Object.entries(t.globals).map(([b,E])=>{if(!y&&m.value[b])return m.value[b];let P="findOne";return E!=null&&E.type&&(P=E.type),ln(E)[P]().catch(()=>null)})).then(b=>b.reduce((E,P,O)=>{const k=Object.keys(t.globals)[O];return E[k]=P,E},{}))};C.push(_)}else C.push(()=>Promise.resolve(null));if(t.page&&v.page!==!1){let _={_path:R};typeof v.page=="string"&&(_={_path:v.page}),typeof v.page=="object"&&(_=v.page);const m=()=>{const{pages:b}=Yt();return!y&&b.value[R]&&b.value[R]._path===R?b.value[R]:ln().where(_).findOne().catch(()=>null)};C.push(m)}else C.push(()=>Promise.resolve(null));if(t.surround&&v.surround!==!1){let _=R;["string","object"].includes(typeof v.page)&&(_=v.page),["string","object"].includes(typeof v.surround)&&(_=v.surround);const m=()=>{const{surrounds:b}=Yt();return!y&&b.value[R]?b.value[R]:ln().where({_partial:{$not:!0},navigation:{$not:!1}}).without(["body"]).findSurround(_).catch(()=>null)};C.push(m)}else C.push(()=>Promise.resolve(null));return await Promise.all(C.map(_=>_())).then(async([_,m,b,E])=>{var O,k;_&&(r.value=_),m&&(o.value=m),E&&(i.value[R]=E);const P=(b==null?void 0:b.redirect)||((k=(O=b==null?void 0:b._dir)==null?void 0:O.navigation)==null?void 0:k.redirect);if(P)return s.value[R]=b,P;if(b){const N=a(p,b,_,m),$=Tn[N];$&&typeof $=="function"&&await $(),p.meta.layout=N,b.layout=N}s.value[R]=b,await e.callHook("content:document-driven:finish",{route:p,dedup:y,page:b,navigation:_,globals:m,surround:E})})};{const p=We();e.hook("link:prefetch",y=>{if(!(y in s.value)&&!Je(y)){const v=p.resolve(y);v.matched.length>0&&l(v)}}),e.hooks.hook("content:document-driven:finish",({page:y})=>{var v;(v=y==null?void 0:y.body)!=null&&v.children&&$c(y.body.children)})}Qh(async(p,y)=>{if(!n&&p.path===y.path){if(!p.meta.layout){const R=Ot(p.path);s.value[R]&&(p.meta.layout=s.value[R].layout)}return}const v=await l(p,!1);if(v)return Je(v)?Ql(e,rc,[v,{external:!0}]):v}),e.hook("app:data:refresh",async()=>await l(pn(),!0))});function $c(e){for(const t of e)if(t.children&&$c(t.children),t.type==="element"&&t.tag){const n=py(t.tag);for(const r of["Prose"+n,n])cy.includes(r)&&ay(r)}}const ky=e=>e==="defer"||e===!1;function Ay(...e){var y;const t=typeof e[e.length-1]=="string"?e.pop():void 0;typeof e[0]!="string"&&e.unshift(t);let[n,r,s={}]=e;if(typeof n!="string")throw new TypeError("[nuxt] [asyncData] key must be a string.");if(typeof r!="function")throw new TypeError("[nuxt] [asyncData] handler must be a function.");const o=le(),i=r,a=()=>null,l=()=>o.isHydrating?o.payload.data[n]:o.static.data[n];s.server=s.server??!0,s.default=s.default??a,s.getCachedData=s.getCachedData??l,s.lazy=s.lazy??!1,s.immediate=s.immediate??!0,s.deep=s.deep??zp.deep,s.dedupe=s.dedupe??"cancel";const u=()=>s.getCachedData(n,o)!=null;if(!o._asyncData[n]||!s.immediate){(y=o.payload._errors)[n]??(y[n]=null);const v=s.deep?xe:ft;o._asyncData[n]={data:v(s.getCachedData(n,o)??s.default()),pending:xe(!u()),error:vo(o.payload._errors,n),status:xe("idle")}}const c={...o._asyncData[n]};c.refresh=c.execute=(v={})=>{if(o._asyncDataPromises[n]){if(ky(v.dedupe??s.dedupe))return o._asyncDataPromises[n];o._asyncDataPromises[n].cancelled=!0}if((v._initial||o.isHydrating&&v._initial!==!1)&&u())return Promise.resolve(s.getCachedData(n,o));c.pending.value=!0,c.status.value="pending";const R=new Promise((C,_)=>{try{C(i(o))}catch(m){_(m)}}).then(async C=>{if(R.cancelled)return o._asyncDataPromises[n];let _=C;s.transform&&(_=await s.transform(C)),s.pick&&(_=Iy(_,s.pick)),o.payload.data[n]=_,c.data.value=_,c.error.value=null,c.status.value="success"}).catch(C=>{if(R.cancelled)return o._asyncDataPromises[n];c.error.value=Yn(C),c.data.value=me(s.default()),c.status.value="error"}).finally(()=>{R.cancelled||(c.pending.value=!1,delete o._asyncDataPromises[n])});return o._asyncDataPromises[n]=R,o._asyncDataPromises[n]},c.clear=()=>Ly(o,n);const f=()=>c.refresh({_initial:!0}),d=s.server!==!1&&o.payload.serverRendered;{const v=bn();if(v&&!v._nuxtOnBeforeMountCbs){v._nuxtOnBeforeMountCbs=[];const _=v._nuxtOnBeforeMountCbs;ll(()=>{_.forEach(m=>{m()}),_.splice(0,_.length)}),Co(()=>_.splice(0,_.length))}d&&o.isHydrating&&(c.error.value||u())?(c.pending.value=!1,c.status.value=c.error.value?"error":"success"):v&&(o.payload.serverRendered&&o.isHydrating||s.lazy)&&s.immediate?v._nuxtOnBeforeMountCbs.push(f):s.immediate&&f();const R=Dr();if(s.watch){const _=rt(s.watch,()=>c.refresh());R&&yr(_)}const C=o.hook("app:data:refresh",async _=>{(!_||_.includes(n))&&await c.refresh()});R&&yr(C)}const p=Promise.resolve(o._asyncDataPromises[n]).then(()=>c);return Object.assign(p,c),p}async function Oy(e){await new Promise(n=>Xr(n)),await le().hooks.callHookParallel("app:data:refresh",void 0)}function Ly(e,t){t in e.payload.data&&(e.payload.data[t]=void 0),t in e.payload._errors&&(e.payload._errors[t]=null),e._asyncData[t]&&(e._asyncData[t].data.value=void 0,e._asyncData[t].error.value=null,e._asyncData[t].pending.value=!1,e._asyncData[t].status.value="idle"),t in e._asyncDataPromises&&(e._asyncDataPromises[t].cancelled=!0,e._asyncDataPromises[t]=void 0)}function Iy(e,t){const n={};for(const r of t)n[r]=e[r];return n}const Hy=ot(async()=>{var n;let e,t;{const r=(n=je().public.sockets)==null?void 0:n.wsUrl,s=([e,t]=hn(()=>J(()=>import("./BaVm9VVN.js"),[],import.meta.url).then(({setupSocketClient:o})=>o(r,"content-assets"))),e=await e,t(),e);s&&s.addHandler(({data:o})=>{const{event:i,src:a,width:l,height:u}=o;if(i==="refresh")Oy();else if(a){const c=i==="update";document.querySelectorAll(`:is(img, video, source, embed, iframe):where([src^="${a}"])`).forEach(f=>{if(f.style.opacity=c?"1":"0.2",c){const d=f.getAttribute("src").split("?")[1],p=new URLSearchParams(d);p.set("time",String(Date.now())),l&&u&&f.addEventListener("load",function y(){f.width&&f.height&&(f.setAttribute("width",l),f.setAttribute("height",u)),f.style.aspectRatio&&(f.style.aspectRatio=`${l} / ${u}`),p.get("width")&&(p.set("width",l),p.set("height",u)),f.removeEventListener("load",y)}),f.setAttribute("src",`${a}?${p.toString()}`)}})}})}});function $y(e={}){const t=e.path||window.location.pathname;let n={};try{n=Un(sessionStorage.getItem("nuxt:reload")||"{}")}catch{}if(e.force||(n==null?void 0:n.path)!==t||(n==null?void 0:n.expires){r.clear()}),e.hook("app:chunkError",({error:o})=>{r.add(o)});function s(o){const a="href"in o&&o.href[0]==="#"?n.app.baseURL+o.href:Jn(n.app.baseURL,o.fullPath);$y({path:a,persistState:!0})}e.hook("app:manifest:update",()=>{t.beforeResolve(s)}),t.onError((o,i)=>{r.has(o)&&s(i)})}}),My=[tm,rm,gg,_g,vg,ry,sy,xy,Hy,Ny],Dy=(...e)=>e.find(t=>t!==void 0);function jy(e){const t=e.componentName||"NuxtLink";function n(r,s){if(!r||e.trailingSlash!=="append"&&e.trailingSlash!=="remove")return r;if(typeof r=="string")return _a(r,e.trailingSlash);const o="path"in r&&r.path!==void 0?r.path:s(r).path;return{...r,name:void 0,path:_a(o,e.trailingSlash)}}return $t({name:t,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1}},setup(r,{slots:s}){const o=We(),i=je(),a=de(()=>{const y=r.to||r.href||"";return n(y,o.resolve)}),l=de(()=>typeof a.value=="string"&&Je(a.value,{acceptRelative:!0})),u=de(()=>r.target&&r.target!=="_self"),c=de(()=>r.external||u.value?!0:typeof a.value=="object"?!1:a.value===""||l.value),f=xe(!1),d=xe(null),p=y=>{var v;d.value=r.custom?(v=y==null?void 0:y.$el)==null?void 0:v.nextElementSibling:y==null?void 0:y.$el};if(r.prefetch!==!1&&r.noPrefetch!==!0&&r.target!=="_blank"&&!Fy()){const v=le();let R,C=null;Kr(()=>{const _=By();Xr(()=>{R=so(()=>{var m;(m=d==null?void 0:d.value)!=null&&m.tagName&&(C=_.observe(d.value,async()=>{C==null||C(),C=null;const b=typeof a.value=="string"?a.value:o.resolve(a.value).fullPath;await Promise.all([v.hooks.callHook("link:prefetch",b).catch(()=>{}),!c.value&&Sc(a.value,o).catch(()=>{})]),f.value=!0}))})})}),Wr(()=>{R&&yg(R),C==null||C(),C=null})}return()=>{var C,_;if(!c.value){const m={ref:p,to:a.value,activeClass:r.activeClass||e.activeClass,exactActiveClass:r.exactActiveClass||e.exactActiveClass,replace:r.replace,ariaCurrentValue:r.ariaCurrentValue,custom:r.custom};return r.custom||(f.value&&(m.class=r.prefetchedClass||e.prefetchedClass),m.rel=r.rel||void 0),He(Du("RouterLink"),m,s.default)}const y=typeof a.value=="object"?((C=o.resolve(a.value))==null?void 0:C.href)??null:a.value&&!r.external&&!l.value?n(Jn(i.app.baseURL,a.value),o.resolve):a.value||null,v=r.target||null,R=Dy(r.noRel?"":r.rel,e.externalRelAttribute,l.value||u.value?"noopener noreferrer":"")||null;if(r.custom){if(!s.default)return null;const m=()=>rc(y,{replace:r.replace,external:r.external});return s.default({href:y,navigate:m,get route(){if(!y)return;const b=qr(y);return{path:b.pathname,fullPath:b.pathname,get query(){return jl(b.search)},hash:b.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:y}},rel:R,target:v,isExternal:c.value,isActive:!1,isExactActive:!1})}return He("a",{ref:d,href:y,rel:R,target:v},(_=s.default)==null?void 0:_.call(s))}}})}const ya=jy(qp);function _a(e,t){const n=t==="append"?kr:Ot;return Je(e)&&!e.startsWith("http")?e:n(e,!0)}function By(){const e=le();if(e._observer)return e._observer;let t=null;const n=new Map,r=(o,i)=>(t||(t=new IntersectionObserver(a=>{for(const l of a){const u=n.get(l.target);(l.isIntersecting||l.intersectionRatio>0)&&u&&u()}})),n.set(o,i),t.observe(o),()=>{n.delete(o),t.unobserve(o),n.size===0&&(t.disconnect(),t=null)});return e._observer={observe:r}}function Fy(){const e=navigator.connection;return!!(e&&(e.saveData||/2g/.test(e.effectiveType)))}const Uy=$t({name:"ContentQuery",props:{path:{type:String,required:!1,default:void 0},only:{type:Array,required:!1,default:void 0},without:{type:Array,required:!1,default:void 0},where:{type:Object,required:!1,default:void 0},sort:{type:Object,required:!1,default:void 0},limit:{type:Number,required:!1,default:void 0},skip:{type:Number,required:!1,default:void 0},locale:{type:String,required:!1,default:void 0},find:{type:String,required:!1,default:void 0}},async setup(e){const{path:t,only:n,without:r,where:s,sort:o,limit:i,skip:a,locale:l,find:u}=Tu(e),c=de(()=>{var v;return(v=t.value)==null?void 0:v.includes("/_")}),f=!je().public.content.experimental.advanceQuery;rt(()=>e,()=>y(),{deep:!0});const d=v=>f?v!=null&&v.surround?v.surround:v!=null&&v._id||Array.isArray(v)?v:v==null?void 0:v.result:v.result,{data:p,refresh:y}=await Ay(`content-query-${Vn(e)}`,()=>{let v;return t.value?v=ln(t.value):v=ln(),n.value&&(v=v.only(n.value)),r.value&&(v=v.without(r.value)),s.value&&(v=v.where(s.value)),o.value&&(v=v.sort(o.value)),i.value&&(v=v.limit(i.value)),a.value&&(v=v.skip(a.value)),l.value&&(v=v.where({_locale:l.value})),u.value==="one"?v.findOne().then(d):u.value==="surround"?t.value?f?v.findSurround(t.value):v.withSurround(t.value).findOne().then(d):(console.warn("[Content] Surround queries requires `path` prop to be set."),console.warn("[Content] Query without `path` will return regular `find()` results."),v.find().then(d)):v.find().then(d)});return{isPartial:c,data:p,refresh:y}},render(e){var R;const t=dl(),{data:n,refresh:r,isPartial:s,path:o,only:i,without:a,where:l,sort:u,limit:c,skip:f,locale:d,find:p}=e,y={path:o,only:i,without:a,where:l,sort:u,limit:c,skip:f,locale:d,find:p};if(y.find==="one"){if(!n&&(t!=null&&t["not-found"]))return t["not-found"]({props:y,...this.$attrs});if(t!=null&&t.empty&&(n==null?void 0:n._type)==="markdown"&&!((R=n==null?void 0:n.body)!=null&&R.children.length))return t.empty({props:y,...this.$attrs})}else if((!n||!n.length)&&t!=null&&t["not-found"])return t["not-found"]({props:y,...this.$attrs});return t!=null&&t.default?t.default({data:n,refresh:r,isPartial:s,props:y,...this.$attrs}):((C,_)=>He("pre",null,JSON.stringify({message:"You should use slots with !",slot:C,data:_},null,2)))("default",{data:n,props:y,isPartial:s})}}),Nc=Uy,Vy=Object.freeze(Object.defineProperty({__proto__:null,default:Nc},Symbol.toStringTag,{value:"Module"})),Ps=(e,t)=>He("pre",null,JSON.stringify({message:"You should use slots with ",slot:e,data:t},null,2)),Ky=$t({name:"ContentList",props:{path:{type:String,required:!1,default:void 0},query:{type:Object,required:!1,default:void 0}},render(e){const t=dl(),{path:n,query:r}=e,s={...r||{},path:n||(r==null?void 0:r.path)||"/"};return He(Nc,s,{default:t!=null&&t.default?({data:o,refresh:i,isPartial:a})=>t.default({list:o,refresh:i,isPartial:a,...this.$attrs}):o=>Ps("default",o.data),empty:o=>t!=null&&t.empty?t.empty(o):Ps("default",o==null?void 0:o.data),"not-found":o=>{var i;return t!=null&&t["not-found"]?(i=t==null?void 0:t["not-found"])==null?void 0:i.call(t,o):Ps("not-found",o==null?void 0:o.data)}})}}),Mc=Ky,Wy=Object.freeze(Object.defineProperty({__proto__:null,default:Mc},Symbol.toStringTag,{value:"Module"})),qy=zr("/icons/github-mark.svg"),zy=zr("/nlesc-logo.svg"),Uo=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Gy={},Qy={class:"flex p-5 bg-eScienceWhite text-xl items-center text-eSciencePurple border-b-2"},Jy={class:"flex flex-1 gap-10 items-center"},Yy={class:"text-4xl mx-16 font-bold"},Xy={class:"flex align-middle items-center"},Zy={class:"p-5"},e_=ct("img",{src:qy,alt:"Netherlands eScience Center Logo",width:"50px",height:"50px",class:"align-middle"},null,-1),t_=ct("img",{src:zy,alt:"Netherlands eScience Center Logo",width:"200px"},null,-1);function n_(e,t,n,r,s,o){const i=ya,a=ya,l=Mc;return Le(),Rr("div",Qy,[ct("div",Jy,[oe(i,{to:"/"},{default:wt(()=>[ct("div",Yy,zo(e.$config.public.title),1)]),_:1})]),ct("div",Xy,[ct("div",Zy,[oe(i,{to:"/",class:"p-5 hover:text-eScienceBlue"},{default:wt(()=>[Tr(" Modules ")]),_:1}),oe(l,{path:"/main"},{default:wt(({list:u})=>[(Le(!0),Rr(Se,null,lf(u,c=>(Le(),lt(a,{key:c._path,to:c._path,class:"p-5 hover:text-eScienceBlue"},{default:wt(()=>[Tr(zo(c.title),1)]),_:2},1032,["to"]))),128))]),_:1})]),oe(i,{to:"https://www.github.com/esciencecenter-digital-skills/research-software-support",target:"_blank",class:"pl-10"},{default:wt(()=>[e_]),_:1}),oe(i,{to:"https://www.esciencecenter.nl",target:"_blank",class:"px-5"},{default:wt(()=>[t_]),_:1})])])}const r_=Uo(Gy,[["render",n_]]),s_=$t({props:{vnode:{type:Object,required:!0},route:{type:Object,required:!0},vnodeRef:Object,renderKey:String,trackRootNodes:Boolean},setup(e){const t=e.renderKey,n=e.route,r={};for(const s in e.route)Object.defineProperty(r,s,{get:()=>t===e.renderKey?e.route[s]:n[s]});return an(Gr,St(r)),()=>He(e.vnode,{ref:e.vnodeRef})}}),o_=$t({name:"NuxtPage",inheritAttrs:!1,props:{name:{type:String},transition:{type:[Boolean,Object],default:void 0},keepalive:{type:[Boolean,Object],default:void 0},route:{type:Object},pageKey:{type:[Function,String],default:null}},setup(e,{attrs:t,expose:n}){const r=le(),s=xe(),o=Ie(Gr,null);let i;n({pageRef:s});const a=Ie(Gh,null);let l;const u=r.deferHydration();if(r.isHydrating){const c=r.hooks.hookOnce("app:error",u);We().beforeEach(c)}return e.pageKey&&rt(()=>e.pageKey,(c,f)=>{c!==f&&r.callHook("page:loading:start")}),()=>He(Tc,{name:e.name,route:e.route,...t},{default:c=>{const f=a_(o,c.route,c.Component),d=o&&o.matched.length===c.route.matched.length;if(!c.Component){if(l&&!d)return l;u();return}if(l&&a&&!a.isCurrent(c.route))return l;if(f&&o&&(!a||a!=null&&a.isCurrent(o)))return d?l:null;const p=ro(c,e.pageKey);!r.isHydrating&&!l_(o,c.route,c.Component)&&i===p&&r.callHook("page:loading:end"),i=p;const y=!!(e.transition??c.route.meta.pageTransition??Zs),v=y&&i_([e.transition,c.route.meta.pageTransition,Zs,{onAfterLeave:()=>{r.callHook("page:transition:finish",c.Component)}}].filter(Boolean)),R=e.keepalive??c.route.meta.keepalive??Wp;return l=lg(ko,y&&v,ag(R,He(tl,{suspensible:!0,onPending:()=>r.callHook("page:start",c.Component),onResolve:()=>{vn(()=>r.callHook("page:finish",c.Component).then(()=>r.callHook("page:loading:end")).finally(u))}},{default:()=>{const C=He(s_,{key:p||void 0,vnode:c.Component,route:c.route,renderKey:p||void 0,trackRootNodes:y,vnodeRef:s});return R&&(C.type.name=c.Component.type.name||c.Component.type.__name||"RouteProvider"),C}}))).default(),l}})}});function i_(e){const t=e.map(n=>({...n,onAfterLeave:n.onAfterLeave?Do(n.onAfterLeave):void 0}));return tc(...t)}function a_(e,t,n){if(!e)return!1;const r=t.matched.findIndex(s=>{var o;return((o=s.components)==null?void 0:o.default)===(n==null?void 0:n.type)});return!r||r===-1?!1:t.matched.slice(0,r).some((s,o)=>{var i,a,l;return((i=s.components)==null?void 0:i.default)!==((l=(a=e.matched[o])==null?void 0:a.components)==null?void 0:l.default)})||n&&ro({route:t,Component:n})!==ro({route:e,Component:n})}function l_(e,t,n){return e?t.matched.findIndex(s=>{var o;return((o=s.components)==null?void 0:o.default)===(n==null?void 0:n.type)})',2),f_=[u_];function d_(e,t,n,r,s,o){return Le(),Rr("div",null,f_)}const h_=Uo(c_,[["render",d_]]),p_={},m_={class:"flex flex-col w-screen bg-gentleBlue h-screen overflow-hidden"},g_={class:"flex-1 overflow-auto"};function y_(e,t){const n=r_,r=o_,s=h_;return Le(),Rr("div",m_,[oe(n),ct("div",g_,[oe(r)]),oe(s)])}const __=Uo(p_,[["render",y_]]),v_={__name:"nuxt-error-page",props:{error:Object},setup(e){const n=e.error;n.stack&&n.stack.split(` `).splice(1).map(f=>({text:f.replace("webpack:/","").replace(".vue",".js").trim(),internal:f.includes("node_modules")&&!f.includes(".cache")||f.includes("internal")||f.includes("new Promise")})).map(f=>`${f.text}`).join(` -`);const r=Number(n.statusCode||500),s=r===404,o=n.statusMessage??(s?"Page Not Found":"Internal Server Error"),i=n.message||n.toString(),a=void 0,c=s?ee(()=>J(()=>import("./DEmzrrNC.js"),__vite__mapDeps([21,6,22]),import.meta.url).then(f=>f.default||f)):ee(()=>J(()=>import("./mjKfI97z.js"),__vite__mapDeps([23,6,24]),import.meta.url).then(f=>f.default||f));return(f,d)=>(Le(),lt(me(c),Qc(Al({statusCode:me(r),statusMessage:me(o),description:me(i),stack:me(a)})),null,16))}},va={__name:"nuxt-root",setup(e){const t=()=>null,n=le(),r=n.deferHydration();if(n.isHydrating){const a=n.hooks.hookOnce("app:error",r);We().beforeEach(a)}const s=!1;an(Gr,pn()),n.hooks.callHookWith(a=>a.map(l=>l()),"vue:setup");const o=Qr();ul((a,l,u)=>{if(n.hooks.callHook("vue:error",a,l,u).catch(c=>console.error("[nuxt] Error in `vue:error` hook",c)),Xh(a)&&(a.fatal||a.unhandled))return n.runWithContext(()=>Zt(a)),!1});const i=!1;return(a,l)=>(Le(),lt(tl,{onResolve:me(r)},{default:wt(()=>[me(o)?(Le(),lt(me(v_),{key:0,error:me(o)},null,8,["error"])):me(i)?(Le(),lt(me(t),{key:1,context:me(i)},null,8,["context"])):me(s)?(Le(),lt(ju(me(s)),{key:2})):(Le(),lt(me(__),{key:3}))]),_:1},8,["onResolve"]))}};let ba;{let e;ba=async function(){var i,a;if(e)return e;const r=!!((i=window.__NUXT__)!=null&&i.serverRendered||((a=document.getElementById("__NUXT_DATA__"))==null?void 0:a.dataset.ssr)==="true")?md(va):pd(va),s=vh({vueApp:r});async function o(l){await s.callHook("app:error",l),s.payload.error=s.payload.error||Yn(l)}r.config.errorHandler=o;try{await wh(s,My)}catch(l){o(l)}try{await s.hooks.callHook("app:created",r),await s.hooks.callHook("app:beforeMount",r),r.mount(Gp),await s.hooks.callHook("app:mounted",r),await vn()}catch(l){o(l)}return r.config.errorHandler===o&&(r.config.errorHandler=void 0),r},e=ba().catch(t=>{throw console.error("Error while mounting app:",t),t})}export{Js as $,je as A,A_ as B,lt as C,lf as D,Mc as E,Se as F,zr as G,C_ as H,ln as I,R_ as J,o_ as K,Gh as L,Kr as M,J as N,dl as O,Gr as P,kr as Q,Nc as R,tl as S,ko as T,rt as U,T_ as V,E_ as W,Wr as X,tf as Y,ef as Z,Uo as _,ct as a,bn as a0,Tu as a1,fr as a2,Ay as a3,Vn as a4,Sy as a5,re as a6,Du as a7,py as a8,un as a9,k_ as aa,Un as ab,Bo as ac,P_ as ad,Mr as ae,Nr as af,Us as ag,Jn as ah,ga as ai,N_ as aj,at as ak,O_ as al,$_ as am,L_ as an,I_ as ao,H_ as ap,Ry as aq,Bl as ar,oe as b,Rr as c,Tr as d,ya as e,w_ as f,$t as g,pn as h,Ie as i,x_ as j,de as k,We as l,Tn as m,S_ as n,Le as o,b_ as p,lg as q,xe as r,He as s,zo as t,le as u,Lf as v,wt as w,vn as x,an as y,me as z}; +`);const r=Number(n.statusCode||500),s=r===404,o=n.statusMessage??(s?"Page Not Found":"Internal Server Error"),i=n.message||n.toString(),a=void 0,c=s?ee(()=>J(()=>import("./CMVTt0wN.js"),__vite__mapDeps([21,6,22]),import.meta.url).then(f=>f.default||f)):ee(()=>J(()=>import("./DYbY-O0Y.js"),__vite__mapDeps([23,6,24]),import.meta.url).then(f=>f.default||f));return(f,d)=>(Le(),lt(me(c),Qc(Al({statusCode:me(r),statusMessage:me(o),description:me(i),stack:me(a)})),null,16))}},va={__name:"nuxt-root",setup(e){const t=()=>null,n=le(),r=n.deferHydration();if(n.isHydrating){const a=n.hooks.hookOnce("app:error",r);We().beforeEach(a)}const s=!1;an(Gr,pn()),n.hooks.callHookWith(a=>a.map(l=>l()),"vue:setup");const o=Qr();ul((a,l,u)=>{if(n.hooks.callHook("vue:error",a,l,u).catch(c=>console.error("[nuxt] Error in `vue:error` hook",c)),Xh(a)&&(a.fatal||a.unhandled))return n.runWithContext(()=>Zt(a)),!1});const i=!1;return(a,l)=>(Le(),lt(tl,{onResolve:me(r)},{default:wt(()=>[me(o)?(Le(),lt(me(v_),{key:0,error:me(o)},null,8,["error"])):me(i)?(Le(),lt(me(t),{key:1,context:me(i)},null,8,["context"])):me(s)?(Le(),lt(ju(me(s)),{key:2})):(Le(),lt(me(__),{key:3}))]),_:1},8,["onResolve"]))}};let ba;{let e;ba=async function(){var i,a;if(e)return e;const r=!!((i=window.__NUXT__)!=null&&i.serverRendered||((a=document.getElementById("__NUXT_DATA__"))==null?void 0:a.dataset.ssr)==="true")?md(va):pd(va),s=vh({vueApp:r});async function o(l){await s.callHook("app:error",l),s.payload.error=s.payload.error||Yn(l)}r.config.errorHandler=o;try{await wh(s,My)}catch(l){o(l)}try{await s.hooks.callHook("app:created",r),await s.hooks.callHook("app:beforeMount",r),r.mount(Gp),await s.hooks.callHook("app:mounted",r),await vn()}catch(l){o(l)}return r.config.errorHandler===o&&(r.config.errorHandler=void 0),r},e=ba().catch(t=>{throw console.error("Error while mounting app:",t),t})}export{Js as $,je as A,A_ as B,lt as C,lf as D,Mc as E,Se as F,zr as G,C_ as H,ln as I,R_ as J,o_ as K,Gh as L,Kr as M,J as N,dl as O,Gr as P,kr as Q,Nc as R,tl as S,ko as T,rt as U,T_ as V,E_ as W,Wr as X,tf as Y,ef as Z,Uo as _,ct as a,bn as a0,Tu as a1,fr as a2,Ay as a3,Vn as a4,Sy as a5,re as a6,Du as a7,py as a8,un as a9,k_ as aa,Un as ab,Bo as ac,P_ as ad,Mr as ae,Nr as af,Us as ag,Jn as ah,ga as ai,N_ as aj,at as ak,O_ as al,$_ as am,L_ as an,I_ as ao,H_ as ap,Ry as aq,Bl as ar,oe as b,Rr as c,Tr as d,ya as e,w_ as f,$t as g,pn as h,Ie as i,x_ as j,de as k,We as l,Tn as m,S_ as n,Le as o,b_ as p,lg as q,xe as r,He as s,zo as t,le as u,Lf as v,wt as w,vn as x,an as y,me as z}; diff --git a/_nuxt/B7XpRr1Z.js b/_nuxt/XUN6lWw2.js similarity index 64% rename from _nuxt/B7XpRr1Z.js rename to _nuxt/XUN6lWw2.js index 2eb011e2..26fd6afd 100644 --- a/_nuxt/B7XpRr1Z.js +++ b/_nuxt/XUN6lWw2.js @@ -1 +1 @@ -import{_ as o,o as r,c as s,ad as t}from"./DCQ65ZuQ.js";const c={};function n(e,a){return r(),s("em",null,[t(e.$slots,"default")])}const _=o(c,[["render",n]]);export{_ as default}; +import{_ as o,o as r,c as s,ad as t}from"./LCLGvLsE.js";const c={};function n(e,a){return r(),s("em",null,[t(e.$slots,"default")])}const _=o(c,[["render",n]]);export{_ as default}; diff --git a/_nuxt/Zpk1VdH2.js b/_nuxt/Zpk1VdH2.js new file mode 100644 index 00000000..5a62d82e --- /dev/null +++ b/_nuxt/Zpk1VdH2.js @@ -0,0 +1 @@ +import{_ as m}from"./Dgm6rCDZ.js";import"./LCLGvLsE.js";export{m as default}; diff --git a/_nuxt/builds/latest.json b/_nuxt/builds/latest.json index 278dd7e6..08bd13a0 100644 --- a/_nuxt/builds/latest.json +++ b/_nuxt/builds/latest.json @@ -1 +1 @@ -{"id":"7a4208a9-5950-49f9-beb9-1f5f8fee98c5","timestamp":1715800926342} \ No newline at end of file +{"id":"18104f39-2737-4f59-ae26-8b4aaf870380","timestamp":1715801002707} \ No newline at end of file diff --git a/_nuxt/builds/meta/18104f39-2737-4f59-ae26-8b4aaf870380.json b/_nuxt/builds/meta/18104f39-2737-4f59-ae26-8b4aaf870380.json new file mode 100644 index 00000000..2faecaa4 --- /dev/null +++ b/_nuxt/builds/meta/18104f39-2737-4f59-ae26-8b4aaf870380.json @@ -0,0 +1 @@ +{"id":"18104f39-2737-4f59-ae26-8b4aaf870380","timestamp":1715801002707,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":["/","/main/about","/main/contribute","/modules/researchsoftware/info","/modules/organization/info","/modules/fairsoftware/info","/modules/smp/info","/modules/licenses/info","/modules/citation/info","/modules/publication/info","/modules/testing/info","/modules/documentation/info","/modules/environments/info","/modules/versioning/info","/modules/hpc/info","/modules/notebooks/info","/modules/version-control/info","/modules/researchsoftware/slides-researchsoftware","/modules/researchsoftware/slides-software","/modules/researchsoftware/research-software","/modules/researchsoftware/exercise-is-it-research-software","/modules/researchsoftware/software-and-data","/modules/researchsoftware/exercise-research-life-cycle","/modules/fairsoftware/slides-fairsoftware","/modules/fairsoftware/exercise3","/modules/fairsoftware/exercise2","/modules/fairsoftware/reading","/modules/fairsoftware/exercise1","/modules/smp/slides-smp","/modules/smp/exercise1","/modules/smp/exercise3","/modules/smp/reading","/modules/smp/exercise2","/modules/licenses/slides","/modules/licenses/copyright","/modules/licenses/university_policy","/modules/licenses/ex_choose_a_license","/modules/licenses/ex_have_licensing_policy","/modules/licenses/licenses","/modules/licenses/ex_licenses_in_use","/modules/citation/slides-citation","/modules/citation/principles","/modules/citation/ex_when_to_cite","/modules/citation/introduction","/modules/citation/create_citation_file","/modules/citation/further_reading","/modules/publication/discussion","/modules/publication/slides-publication","/modules/publication/software_publication_pipeline","/modules/publication/ex_registries","/modules/publication/automating_software_publication","/modules/publication/reading","/modules/citation/citationcff","/modules/testing/presentation","/modules/testing/exercise3","/modules/testing/reading","/modules/testing/exercise1","/modules/testing/exercise2"]} \ No newline at end of file diff --git a/_nuxt/builds/meta/7a4208a9-5950-49f9-beb9-1f5f8fee98c5.json b/_nuxt/builds/meta/7a4208a9-5950-49f9-beb9-1f5f8fee98c5.json deleted file mode 100644 index 20663b32..00000000 --- a/_nuxt/builds/meta/7a4208a9-5950-49f9-beb9-1f5f8fee98c5.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"7a4208a9-5950-49f9-beb9-1f5f8fee98c5","timestamp":1715800926342,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":["/","/main/contribute","/main/about","/modules/organization/info","/modules/researchsoftware/info","/modules/fairsoftware/info","/modules/licenses/info","/modules/smp/info","/modules/citation/info","/modules/publication/info","/modules/testing/info","/modules/documentation/info","/modules/versioning/info","/modules/hpc/info","/modules/notebooks/info","/modules/environments/info","/modules/version-control/info","/modules/researchsoftware/slides-software","/modules/researchsoftware/slides-researchsoftware","/modules/researchsoftware/research-software","/modules/researchsoftware/software-and-data","/modules/researchsoftware/exercise-research-life-cycle","/modules/researchsoftware/exercise-is-it-research-software","/modules/fairsoftware/slides-fairsoftware","/modules/fairsoftware/exercise3","/modules/fairsoftware/exercise2","/modules/fairsoftware/exercise1","/modules/fairsoftware/reading","/modules/licenses/slides","/modules/licenses/university_policy","/modules/licenses/copyright","/modules/licenses/ex_choose_a_license","/modules/licenses/ex_have_licensing_policy","/modules/licenses/ex_licenses_in_use","/modules/licenses/licenses","/modules/smp/slides-smp","/modules/smp/exercise1","/modules/smp/exercise3","/modules/smp/reading","/modules/smp/exercise2","/modules/citation/slides-citation","/modules/citation/principles","/modules/citation/ex_when_to_cite","/modules/citation/introduction","/modules/citation/create_citation_file","/modules/citation/further_reading","/modules/publication/discussion","/modules/publication/slides-publication","/modules/publication/software_publication_pipeline","/modules/publication/reading","/modules/publication/automating_software_publication","/modules/publication/ex_registries","/modules/citation/citationcff","/modules/testing/presentation","/modules/testing/exercise3","/modules/testing/reading","/modules/testing/exercise2","/modules/testing/exercise1"]} \ No newline at end of file diff --git a/_nuxt/BzU5QlbW.js b/_nuxt/nrlYX7Nq.js similarity index 64% rename from _nuxt/BzU5QlbW.js rename to _nuxt/nrlYX7Nq.js index 95f80b74..e7cdf6a3 100644 --- a/_nuxt/BzU5QlbW.js +++ b/_nuxt/nrlYX7Nq.js @@ -1 +1 @@ -import{_ as o,o as r,c as s,ad as t}from"./DCQ65ZuQ.js";const c={};function n(e,a){return r(),s("li",null,[t(e.$slots,"default")])}const _=o(c,[["render",n]]);export{_ as default}; +import{_ as o,o as r,c as s,ad as t}from"./LCLGvLsE.js";const c={};function n(e,a){return r(),s("li",null,[t(e.$slots,"default")])}const _=o(c,[["render",n]]);export{_ as default}; diff --git a/_nuxt/Cs7ZrR9W.js b/_nuxt/t2ymJCa3.js similarity index 63% rename from _nuxt/Cs7ZrR9W.js rename to _nuxt/t2ymJCa3.js index c92e5f34..38e99738 100644 --- a/_nuxt/Cs7ZrR9W.js +++ b/_nuxt/t2ymJCa3.js @@ -1 +1 @@ -import{_ as r,o,c as t,ad as s}from"./DCQ65ZuQ.js";const c={};function n(e,a){return o(),t("tr",null,[s(e.$slots,"default")])}const _=r(c,[["render",n]]);export{_ as default}; +import{_ as r,o,c as t,ad as s}from"./LCLGvLsE.js";const c={};function n(e,a){return o(),t("tr",null,[s(e.$slots,"default")])}const _=r(c,[["render",n]]);export{_ as default}; diff --git a/_nuxt/BtUAytV1.js b/_nuxt/tIvUuwzM.js similarity index 83% rename from _nuxt/BtUAytV1.js rename to _nuxt/tIvUuwzM.js index d580b865..25ea518d 100644 --- a/_nuxt/BtUAytV1.js +++ b/_nuxt/tIvUuwzM.js @@ -1 +1 @@ -import{V as o,r as u,W as f,U as d,X as v,Y as l,Z as i,$ as h,a0 as m}from"./DCQ65ZuQ.js";function I(t,a={}){const e=a.head||o();if(e)return e.ssr?e.push(t,a):p(e,t,a)}function p(t,a,e={}){const s=u(!1),n=u({});f(()=>{n.value=s.value?{}:h(a)});const r=t.push(n.value,e);return d(n,c=>{r.patch(c)}),m()&&(v(()=>{r.dispose()}),l(()=>{s.value=!0}),i(()=>{s.value=!1})),r}export{I as u}; +import{V as o,r as u,W as f,U as d,X as v,Y as l,Z as i,$ as h,a0 as m}from"./LCLGvLsE.js";function I(t,a={}){const e=a.head||o();if(e)return e.ssr?e.push(t,a):p(e,t,a)}function p(t,a,e={}){const s=u(!1),n=u({});f(()=>{n.value=s.value?{}:h(a)});const r=t.push(n.value,e);return d(n,c=>{r.patch(c)}),m()&&(v(()=>{r.dispose()}),l(()=>{s.value=!0}),i(()=>{s.value=!1})),r}export{I as u}; diff --git a/_payload.json b/_payload.json index f5e2512b..017d2855 100644 --- a/_payload.json +++ b/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":631},["Reactive",2],{"content-query-AT44bg6JPw":3,"content-query-ABn0Zip6hr":182},[4,49],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":8,"body":10,"_type":44,"_id":45,"_source":46,"_file":47,"_extension":48},"/main/about","main",false,"","About",{"type":11,"children":12,"toc":39},"root",[13,22,28,34],{"type":14,"tag":15,"props":16,"children":18},"element","h2",{"id":17},"about-the-research-software-support",[19],{"type":20,"value":21},"text","About the Research Software Support",{"type":14,"tag":23,"props":24,"children":25},"p",{},[26],{"type":20,"value":27},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":14,"tag":15,"props":29,"children":31},{"id":30},"target-audience",[32],{"type":20,"value":33},"Target audience",{"type":14,"tag":23,"props":35,"children":36},{},[37],{"type":20,"value":38},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":8,"searchDepth":40,"depth":40,"links":41},2,[42,43],{"id":17,"depth":40,"text":21},{"id":30,"depth":40,"text":33},"markdown","local_fs:main:about.md","local_fs","main/about.md","md",{"_path":50,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":51,"description":8,"body":52,"_type":44,"_id":180,"_source":46,"_file":181,"_extension":48},"/main/contribute","Contribute",{"type":11,"children":53,"toc":174},[54,60,65,72,77],{"type":14,"tag":15,"props":55,"children":57},{"id":56},"contributing-to-the-research-software-support",[58],{"type":20,"value":59},"Contributing to the Research Software Support",{"type":14,"tag":23,"props":61,"children":62},{},[63],{"type":20,"value":64},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":14,"tag":66,"props":67,"children":69},"h3",{"id":68},"what-can-i-do",[70],{"type":20,"value":71},"What can I do?",{"type":14,"tag":23,"props":73,"children":74},{},[75],{"type":20,"value":76},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":14,"tag":78,"props":79,"children":80},"ul",{},[81,98,139,162],{"type":14,"tag":82,"props":83,"children":84},"li",{},[85,87,96],{"type":20,"value":86},"Contribute to the content discussion in the ",{"type":14,"tag":88,"props":89,"children":93},"a",{"href":90,"rel":91},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[92],"nofollow",[94],{"type":20,"value":95},"chapter issues",{"type":20,"value":97},", e.g. by listing good resources for information.",{"type":14,"tag":82,"props":99,"children":100},{},[101,107,109],{"type":14,"tag":88,"props":102,"children":104},{"href":103},"#elements-of-a-module",[105],{"type":20,"value":106},"Author a lesson",{"type":20,"value":108},", e.g. by:\n",{"type":14,"tag":78,"props":110,"children":111},{},[112,121,130],{"type":14,"tag":82,"props":113,"children":114},{},[115],{"type":14,"tag":88,"props":116,"children":118},{"href":117},"#slides",[119],{"type":20,"value":120},"Creating slides",{"type":14,"tag":82,"props":122,"children":123},{},[124],{"type":14,"tag":88,"props":125,"children":127},{"href":126},"#exercises",[128],{"type":20,"value":129},"Designing an exercise",{"type":14,"tag":82,"props":131,"children":132},{},[133],{"type":14,"tag":88,"props":134,"children":136},{"href":135},"#online-resources",[137],{"type":20,"value":138},"Curating online resources",{"type":14,"tag":82,"props":140,"children":141},{},[142,144,151,153,160],{"type":20,"value":143},"Review a lesson module; both by looking at ",{"type":14,"tag":88,"props":145,"children":148},{"href":146,"rel":147},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[92],[149],{"type":20,"value":150},"open PRs",{"type":20,"value":152},", as well as flagging issues for improvement in the ",{"type":14,"tag":88,"props":154,"children":157},{"href":155,"rel":156},"https://esciencecenter-digital-skills.github.io/research-software-support/",[92],[158],{"type":20,"value":159},"existing content",{"type":20,"value":161},".",{"type":14,"tag":82,"props":163,"children":164},{},[165,172],{"type":14,"tag":88,"props":166,"children":169},{"href":167,"rel":168},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[92],[170],{"type":20,"value":171},"Provide feedback",{"type":20,"value":173}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":8,"searchDepth":40,"depth":40,"links":175},[176],{"id":56,"depth":40,"text":59,"children":177},[178],{"id":68,"depth":179,"text":71},3,"local_fs:main:contribute.md","main/contribute.md",[183,228,265,293,330,352,388,411,435,473,496,519,555,592],{"_path":184,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":186,"description":187,"id":188,"trl":189,"category":190,"author":191,"thumbnail":192,"visibility":193,"body":194,"_type":44,"_id":226,"_source":46,"_file":227,"_extension":48},"/modules/citation","modules","Software citation","thumbnail-citation",0,"medium","Publishing & Citing","eScience Center","thumbnail-citation.jpg","visible",{"type":11,"children":195,"toc":224},[196,205],{"type":14,"tag":23,"props":197,"children":198},{},[199],{"type":14,"tag":88,"props":200,"children":203},{"href":201,"rel":202},"https://unsplash.com/photos/difficult-roads-lead-to-beautiful-destinations-desk-decor-z1d-LP8sjuI?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[204],{"type":20,"value":187},{"type":14,"tag":23,"props":206,"children":207},{},[208,210,216,218],{"type":20,"value":209},"Photo by ",{"type":14,"tag":88,"props":211,"children":213},{"href":212},"https://unsplash.com/@helloimnik?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[214],{"type":20,"value":215},"Nik",{"type":20,"value":217}," on ",{"type":14,"tag":88,"props":219,"children":221},{"href":220},"https://unsplash.com/photos/difficult-roads-lead-to-beautiful-destinations-desk-decor-z1d-LP8sjuI?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[222],{"type":20,"value":223},"Unsplash",{"title":8,"searchDepth":40,"depth":40,"links":225},[],"local_fs:modules:citation:index.md","modules/citation/index.md",{"_path":229,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":230,"description":231,"id":188,"trl":189,"category":232,"author":191,"thumbnail":233,"visibility":193,"body":234,"_type":44,"_id":263,"_source":46,"_file":264,"_extension":48},"/modules/researchsoftware","Research software","thumbnail-research-software","Getting started","thumbnail-research-software.png",{"type":11,"children":235,"toc":261},[236,245],{"type":14,"tag":23,"props":237,"children":238},{},[239],{"type":14,"tag":88,"props":240,"children":243},{"href":241,"rel":242},"https://unsplash.com/photos/colorful-software-or-web-code-on-a-computer-monitor-Skf7HxARcoc?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[244],{"type":20,"value":231},{"type":14,"tag":23,"props":246,"children":247},{},[248,249,255,256],{"type":20,"value":209},{"type":14,"tag":88,"props":250,"children":252},{"href":251},"https://unsplash.com/@markusspiske?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[253],{"type":20,"value":254},"Markus Spiske",{"type":20,"value":217},{"type":14,"tag":88,"props":257,"children":259},{"href":258},"https://unsplash.com/photos/colorful-software-or-web-code-on-a-computer-monitor-Skf7HxARcoc?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[260],{"type":20,"value":223},{"title":8,"searchDepth":40,"depth":40,"links":262},[],"local_fs:modules:researchsoftware:index.md","modules/researchsoftware/index.md",{"_path":266,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":267,"description":8,"id":268,"trl":189,"category":269,"author":191,"thumbnail":270,"visibility":193,"body":271,"_type":44,"_id":291,"_source":46,"_file":292,"_extension":48},"/modules/documentation","Software documentation",1,"Upcoming (under construction)","nlesc-dummy.png",{"type":11,"children":272,"toc":288},[273],{"type":14,"tag":274,"props":275,"children":276},"div",{},[277,283],{"type":14,"tag":15,"props":278,"children":280},{"id":279},"documentation",[281],{"type":20,"value":282},"Documentation",{"type":14,"tag":23,"props":284,"children":285},{},[286],{"type":20,"value":287},"This module is still under development",{"title":8,"searchDepth":40,"depth":40,"links":289},[290],{"id":279,"depth":40,"text":282},"local_fs:modules:documentation:index.md","modules/documentation/index.md",{"_path":294,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":295,"description":296,"id":268,"trl":189,"category":297,"author":191,"thumbnail":298,"visibility":193,"body":299,"_type":44,"_id":328,"_source":46,"_file":329,"_extension":48},"/modules/smp","Software Management Plans","thumbnail-smp","Reusability","thumbnail-smp.jpg",{"type":11,"children":300,"toc":326},[301,310],{"type":14,"tag":23,"props":302,"children":303},{},[304],{"type":14,"tag":88,"props":305,"children":308},{"href":306,"rel":307},"https://unsplash.com/photos/person-holding-pencil-near-laptop-computer-5fNmWej4tAA?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[309],{"type":20,"value":296},{"type":14,"tag":23,"props":311,"children":312},{},[313,314,320,321],{"type":20,"value":209},{"type":14,"tag":88,"props":315,"children":317},{"href":316},"https://unsplash.com/@homajob?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[318],{"type":20,"value":319},"Scott Graham",{"type":20,"value":217},{"type":14,"tag":88,"props":322,"children":324},{"href":323},"https://unsplash.com/photos/person-holding-pencil-near-laptop-computer-5fNmWej4tAA?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[325],{"type":20,"value":223},{"title":8,"searchDepth":40,"depth":40,"links":327},[],"local_fs:modules:smp:index.md","modules/smp/index.md",{"_path":331,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":332,"description":8,"id":40,"trl":189,"category":269,"author":191,"thumbnail":270,"visibility":193,"body":333,"_type":44,"_id":350,"_source":46,"_file":351,"_extension":48},"/modules/environments","Environments & Containers",{"type":11,"children":334,"toc":347},[335],{"type":14,"tag":274,"props":336,"children":337},{},[338,343],{"type":14,"tag":15,"props":339,"children":341},{"id":340},"environments-containers",[342],{"type":20,"value":332},{"type":14,"tag":23,"props":344,"children":345},{},[346],{"type":20,"value":287},{"title":8,"searchDepth":40,"depth":40,"links":348},[349],{"id":340,"depth":40,"text":332},"local_fs:modules:environments:index.md","modules/environments/index.md",{"_path":353,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":354,"description":355,"id":179,"trl":189,"category":232,"author":191,"thumbnail":356,"visibility":193,"body":357,"_type":44,"_id":386,"_source":46,"_file":387,"_extension":48},"/modules/fairsoftware","FAIR software","thumbnail-fair-software","thumbnail-fair-software.jpg",{"type":11,"children":358,"toc":384},[359,368],{"type":14,"tag":23,"props":360,"children":361},{},[362],{"type":14,"tag":88,"props":363,"children":366},{"href":364,"rel":365},"https://unsplash.com/photos/three-men-sitting-while-using-laptops-and-watching-man-beside-whiteboard-wD1LRb9OeEo?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[367],{"type":20,"value":355},{"type":14,"tag":23,"props":369,"children":370},{},[371,372,378,379],{"type":20,"value":209},{"type":14,"tag":88,"props":373,"children":375},{"href":374},"https://unsplash.com/@austindistel?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[376],{"type":20,"value":377},"Austin Distel",{"type":20,"value":217},{"type":14,"tag":88,"props":380,"children":382},{"href":381},"https://unsplash.com/photos/three-men-sitting-while-using-laptops-and-watching-man-beside-whiteboard-wD1LRb9OeEo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[383],{"type":20,"value":223},{"title":8,"searchDepth":40,"depth":40,"links":385},[],"local_fs:modules:fairsoftware:index.md","modules/fairsoftware/index.md",{"_path":389,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":390,"description":8,"id":179,"trl":189,"category":269,"author":191,"thumbnail":270,"visibility":193,"body":391,"_type":44,"_id":409,"_source":46,"_file":410,"_extension":48},"/modules/versioning","Versioning & Changelog",{"type":11,"children":392,"toc":406},[393],{"type":14,"tag":274,"props":394,"children":395},{},[396,402],{"type":14,"tag":15,"props":397,"children":399},{"id":398},"versioning",[400],{"type":20,"value":401},"Versioning",{"type":14,"tag":23,"props":403,"children":404},{},[405],{"type":20,"value":287},{"title":8,"searchDepth":40,"depth":40,"links":407},[408],{"id":398,"depth":40,"text":401},"local_fs:modules:versioning:index.md","modules/versioning/index.md",{"_path":412,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":413,"description":8,"id":414,"trl":189,"category":269,"author":191,"thumbnail":270,"visibility":193,"body":415,"_type":44,"_id":433,"_source":46,"_file":434,"_extension":48},"/modules/hpc","High Performance Computing (HPC)",4,{"type":11,"children":416,"toc":430},[417],{"type":14,"tag":274,"props":418,"children":419},{},[420,426],{"type":14,"tag":15,"props":421,"children":423},{"id":422},"high-performance-cluster-hpc",[424],{"type":20,"value":425},"High Performance Cluster (HPC)",{"type":14,"tag":23,"props":427,"children":428},{},[429],{"type":20,"value":287},{"title":8,"searchDepth":40,"depth":40,"links":431},[432],{"id":422,"depth":40,"text":425},"local_fs:modules:hpc:index.md","modules/hpc/index.md",{"_path":436,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":437,"description":438,"id":439,"trl":440,"category":297,"author":191,"thumbnail":441,"visibility":193,"body":442,"_type":44,"_id":471,"_source":46,"_file":472,"_extension":48},"/modules/licenses","Software licenses","thumbnail-licenses",5,"high","thumbnail-licenses.jpg",{"type":11,"children":443,"toc":469},[444,453],{"type":14,"tag":23,"props":445,"children":446},{},[447],{"type":14,"tag":88,"props":448,"children":451},{"href":449,"rel":450},"https://unsplash.com/photos/laptop-compute-displaying-command-prompt-vII7qKAk-9A?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[452],{"type":20,"value":438},{"type":14,"tag":23,"props":454,"children":455},{},[456,457,463,464],{"type":20,"value":209},{"type":14,"tag":88,"props":458,"children":460},{"href":459},"https://unsplash.com/@disruptxn?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[461],{"type":20,"value":462},"Desola Lanre-Ologun",{"type":20,"value":217},{"type":14,"tag":88,"props":465,"children":467},{"href":466},"https://unsplash.com/photos/laptop-compute-displaying-command-prompt-vII7qKAk-9A?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[468],{"type":20,"value":223},{"title":8,"searchDepth":40,"depth":40,"links":470},[],"local_fs:modules:licenses:index.md","modules/licenses/index.md",{"_path":474,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":475,"description":8,"id":476,"trl":189,"category":269,"author":191,"thumbnail":270,"visibility":193,"body":477,"_type":44,"_id":494,"_source":46,"_file":495,"_extension":48},"/modules/notebooks","Notebooks",6,{"type":11,"children":478,"toc":491},[479],{"type":14,"tag":274,"props":480,"children":481},{},[482,487],{"type":14,"tag":15,"props":483,"children":485},{"id":484},"notebooks",[486],{"type":20,"value":475},{"type":14,"tag":23,"props":488,"children":489},{},[490],{"type":20,"value":287},{"title":8,"searchDepth":40,"depth":40,"links":492},[493],{"id":484,"depth":40,"text":475},"local_fs:modules:notebooks:index.md","modules/notebooks/index.md",{"_path":497,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":498,"description":8,"id":499,"trl":440,"category":269,"author":191,"thumbnail":270,"visibility":193,"body":500,"_type":44,"_id":517,"_source":46,"_file":518,"_extension":48},"/modules/organization","Software project organization",7,{"type":11,"children":501,"toc":514},[502],{"type":14,"tag":274,"props":503,"children":504},{},[505,510],{"type":14,"tag":15,"props":506,"children":508},{"id":507},"software-project-organization",[509],{"type":20,"value":498},{"type":14,"tag":23,"props":511,"children":512},{},[513],{"type":20,"value":287},{"title":8,"searchDepth":40,"depth":40,"links":515},[516],{"id":507,"depth":40,"text":498},"local_fs:modules:organization:index.md","modules/organization/index.md",{"_path":520,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":521,"description":522,"id":523,"trl":189,"category":190,"author":191,"thumbnail":524,"visibility":193,"body":525,"_type":44,"_id":553,"_source":46,"_file":554,"_extension":48},"/modules/publication","Software publication","thumbnail-publication\nPhoto by ThisisEngineering on Unsplash",8,"thumbnail-publication.jpg",{"type":11,"children":526,"toc":551},[527],{"type":14,"tag":23,"props":528,"children":529},{},[530,537,539,545,546],{"type":14,"tag":88,"props":531,"children":534},{"href":532,"rel":533},"https://unsplash.com/photos/man-in-blue-and-white-checkered-button-up-shirt-sitting-beside-man-in-yellow-shirt-t4qI2IDcL5s?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[535],{"type":20,"value":536},"thumbnail-publication",{"type":20,"value":538},"\nPhoto by ",{"type":14,"tag":88,"props":540,"children":542},{"href":541},"https://unsplash.com/@thisisengineering?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[543],{"type":20,"value":544},"ThisisEngineering",{"type":20,"value":217},{"type":14,"tag":88,"props":547,"children":549},{"href":548},"https://unsplash.com/photos/man-in-blue-and-white-checkered-button-up-shirt-sitting-beside-man-in-yellow-shirt-t4qI2IDcL5s?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[550],{"type":20,"value":223},{"title":8,"searchDepth":40,"depth":40,"links":552},[],"local_fs:modules:publication:index.md","modules/publication/index.md",{"_path":556,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":557,"description":558,"id":559,"trl":189,"category":560,"abstract":561,"author":191,"thumbnail":562,"visibility":193,"body":563,"_type":44,"_id":590,"_source":46,"_file":591,"_extension":48},"/modules/testing","Software testing","thumbnail-testing\nPhoto by Christina @ wocintechchat.com on Unsplash",9,"Development","Local testing of your software and using Continuous Integration and Continuous Deployment (CI/CD)","thumbnail-testing.jpg",{"type":11,"children":564,"toc":588},[565],{"type":14,"tag":23,"props":566,"children":567},{},[568,575,576,582,583],{"type":14,"tag":88,"props":569,"children":572},{"href":570,"rel":571},"https://unsplash.com/photos/macbook-pro-2JDDn7iSGH8?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[573],{"type":20,"value":574},"thumbnail-testing",{"type":20,"value":538},{"type":14,"tag":88,"props":577,"children":579},{"href":578},"https://unsplash.com/@wocintechchat?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[580],{"type":20,"value":581},"Christina @ wocintechchat.com",{"type":20,"value":217},{"type":14,"tag":88,"props":584,"children":586},{"href":585},"https://unsplash.com/photos/macbook-pro-2JDDn7iSGH8?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[587],{"type":20,"value":223},{"title":8,"searchDepth":40,"depth":40,"links":589},[],"local_fs:modules:testing:index.md","modules/testing/index.md",{"_path":593,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":594,"description":8,"id":595,"trl":440,"category":269,"abstract":596,"author":191,"thumbnail":270,"visibility":193,"body":597,"_type":44,"_id":629,"_source":46,"_file":630,"_extension":48},"/modules/version-control","Software version control",10,"Local version control and collaborative code development, for example using Git and GitHub",{"type":11,"children":598,"toc":625},[599,612],{"type":14,"tag":274,"props":600,"children":601},{},[602,608],{"type":14,"tag":15,"props":603,"children":605},{"id":604},"local-version-control",[606],{"type":20,"value":607},"Local version control",{"type":14,"tag":23,"props":609,"children":610},{},[611],{"type":20,"value":287},{"type":14,"tag":274,"props":613,"children":614},{},[615,621],{"type":14,"tag":15,"props":616,"children":618},{"id":617},"remote-repositories",[619],{"type":20,"value":620},"Remote repositories",{"type":14,"tag":23,"props":622,"children":623},{},[624],{"type":20,"value":287},{"title":8,"searchDepth":40,"depth":40,"links":626},[627,628],{"id":604,"depth":40,"text":607},{"id":617,"depth":40,"text":620},"local_fs:modules:version-control:index.md","modules/version-control/index.md",1715800937062] \ No newline at end of file +[{"data":1,"prerenderedAt":631},["Reactive",2],{"content-query-AT44bg6JPw":3,"content-query-ABn0Zip6hr":182},[4,49],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":8,"body":10,"_type":44,"_id":45,"_source":46,"_file":47,"_extension":48},"/main/about","main",false,"","About",{"type":11,"children":12,"toc":39},"root",[13,22,28,34],{"type":14,"tag":15,"props":16,"children":18},"element","h2",{"id":17},"about-the-research-software-support",[19],{"type":20,"value":21},"text","About the Research Software Support",{"type":14,"tag":23,"props":24,"children":25},"p",{},[26],{"type":20,"value":27},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":14,"tag":15,"props":29,"children":31},{"id":30},"target-audience",[32],{"type":20,"value":33},"Target audience",{"type":14,"tag":23,"props":35,"children":36},{},[37],{"type":20,"value":38},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":8,"searchDepth":40,"depth":40,"links":41},2,[42,43],{"id":17,"depth":40,"text":21},{"id":30,"depth":40,"text":33},"markdown","local_fs:main:about.md","local_fs","main/about.md","md",{"_path":50,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":51,"description":8,"body":52,"_type":44,"_id":180,"_source":46,"_file":181,"_extension":48},"/main/contribute","Contribute",{"type":11,"children":53,"toc":174},[54,60,65,72,77],{"type":14,"tag":15,"props":55,"children":57},{"id":56},"contributing-to-the-research-software-support",[58],{"type":20,"value":59},"Contributing to the Research Software Support",{"type":14,"tag":23,"props":61,"children":62},{},[63],{"type":20,"value":64},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":14,"tag":66,"props":67,"children":69},"h3",{"id":68},"what-can-i-do",[70],{"type":20,"value":71},"What can I do?",{"type":14,"tag":23,"props":73,"children":74},{},[75],{"type":20,"value":76},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":14,"tag":78,"props":79,"children":80},"ul",{},[81,98,139,162],{"type":14,"tag":82,"props":83,"children":84},"li",{},[85,87,96],{"type":20,"value":86},"Contribute to the content discussion in the ",{"type":14,"tag":88,"props":89,"children":93},"a",{"href":90,"rel":91},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[92],"nofollow",[94],{"type":20,"value":95},"chapter issues",{"type":20,"value":97},", e.g. by listing good resources for information.",{"type":14,"tag":82,"props":99,"children":100},{},[101,107,109],{"type":14,"tag":88,"props":102,"children":104},{"href":103},"#elements-of-a-module",[105],{"type":20,"value":106},"Author a lesson",{"type":20,"value":108},", e.g. by:\n",{"type":14,"tag":78,"props":110,"children":111},{},[112,121,130],{"type":14,"tag":82,"props":113,"children":114},{},[115],{"type":14,"tag":88,"props":116,"children":118},{"href":117},"#slides",[119],{"type":20,"value":120},"Creating slides",{"type":14,"tag":82,"props":122,"children":123},{},[124],{"type":14,"tag":88,"props":125,"children":127},{"href":126},"#exercises",[128],{"type":20,"value":129},"Designing an exercise",{"type":14,"tag":82,"props":131,"children":132},{},[133],{"type":14,"tag":88,"props":134,"children":136},{"href":135},"#online-resources",[137],{"type":20,"value":138},"Curating online resources",{"type":14,"tag":82,"props":140,"children":141},{},[142,144,151,153,160],{"type":20,"value":143},"Review a lesson module; both by looking at ",{"type":14,"tag":88,"props":145,"children":148},{"href":146,"rel":147},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[92],[149],{"type":20,"value":150},"open PRs",{"type":20,"value":152},", as well as flagging issues for improvement in the ",{"type":14,"tag":88,"props":154,"children":157},{"href":155,"rel":156},"https://esciencecenter-digital-skills.github.io/research-software-support/",[92],[158],{"type":20,"value":159},"existing content",{"type":20,"value":161},".",{"type":14,"tag":82,"props":163,"children":164},{},[165,172],{"type":14,"tag":88,"props":166,"children":169},{"href":167,"rel":168},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[92],[170],{"type":20,"value":171},"Provide feedback",{"type":20,"value":173}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":8,"searchDepth":40,"depth":40,"links":175},[176],{"id":56,"depth":40,"text":59,"children":177},[178],{"id":68,"depth":179,"text":71},3,"local_fs:main:contribute.md","main/contribute.md",[183,228,265,293,330,352,388,411,435,473,496,519,555,592],{"_path":184,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":186,"description":187,"id":188,"trl":189,"category":190,"author":191,"thumbnail":192,"visibility":193,"body":194,"_type":44,"_id":226,"_source":46,"_file":227,"_extension":48},"/modules/citation","modules","Software citation","thumbnail-citation",0,"medium","Publishing & Citing","eScience Center","thumbnail-citation.jpg","visible",{"type":11,"children":195,"toc":224},[196,205],{"type":14,"tag":23,"props":197,"children":198},{},[199],{"type":14,"tag":88,"props":200,"children":203},{"href":201,"rel":202},"https://unsplash.com/photos/difficult-roads-lead-to-beautiful-destinations-desk-decor-z1d-LP8sjuI?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[204],{"type":20,"value":187},{"type":14,"tag":23,"props":206,"children":207},{},[208,210,216,218],{"type":20,"value":209},"Photo by ",{"type":14,"tag":88,"props":211,"children":213},{"href":212},"https://unsplash.com/@helloimnik?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[214],{"type":20,"value":215},"Nik",{"type":20,"value":217}," on ",{"type":14,"tag":88,"props":219,"children":221},{"href":220},"https://unsplash.com/photos/difficult-roads-lead-to-beautiful-destinations-desk-decor-z1d-LP8sjuI?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[222],{"type":20,"value":223},"Unsplash",{"title":8,"searchDepth":40,"depth":40,"links":225},[],"local_fs:modules:citation:index.md","modules/citation/index.md",{"_path":229,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":230,"description":231,"id":188,"trl":189,"category":232,"author":191,"thumbnail":233,"visibility":193,"body":234,"_type":44,"_id":263,"_source":46,"_file":264,"_extension":48},"/modules/researchsoftware","Research software","thumbnail-research-software","Getting started","thumbnail-research-software.png",{"type":11,"children":235,"toc":261},[236,245],{"type":14,"tag":23,"props":237,"children":238},{},[239],{"type":14,"tag":88,"props":240,"children":243},{"href":241,"rel":242},"https://unsplash.com/photos/colorful-software-or-web-code-on-a-computer-monitor-Skf7HxARcoc?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[244],{"type":20,"value":231},{"type":14,"tag":23,"props":246,"children":247},{},[248,249,255,256],{"type":20,"value":209},{"type":14,"tag":88,"props":250,"children":252},{"href":251},"https://unsplash.com/@markusspiske?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[253],{"type":20,"value":254},"Markus Spiske",{"type":20,"value":217},{"type":14,"tag":88,"props":257,"children":259},{"href":258},"https://unsplash.com/photos/colorful-software-or-web-code-on-a-computer-monitor-Skf7HxARcoc?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[260],{"type":20,"value":223},{"title":8,"searchDepth":40,"depth":40,"links":262},[],"local_fs:modules:researchsoftware:index.md","modules/researchsoftware/index.md",{"_path":266,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":267,"description":8,"id":268,"trl":189,"category":269,"author":191,"thumbnail":270,"visibility":193,"body":271,"_type":44,"_id":291,"_source":46,"_file":292,"_extension":48},"/modules/documentation","Software documentation",1,"Upcoming (under construction)","nlesc-dummy.png",{"type":11,"children":272,"toc":288},[273],{"type":14,"tag":274,"props":275,"children":276},"div",{},[277,283],{"type":14,"tag":15,"props":278,"children":280},{"id":279},"documentation",[281],{"type":20,"value":282},"Documentation",{"type":14,"tag":23,"props":284,"children":285},{},[286],{"type":20,"value":287},"This module is still under development",{"title":8,"searchDepth":40,"depth":40,"links":289},[290],{"id":279,"depth":40,"text":282},"local_fs:modules:documentation:index.md","modules/documentation/index.md",{"_path":294,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":295,"description":296,"id":268,"trl":189,"category":297,"author":191,"thumbnail":298,"visibility":193,"body":299,"_type":44,"_id":328,"_source":46,"_file":329,"_extension":48},"/modules/smp","Software Management Plans","thumbnail-smp","Reusability","thumbnail-smp.jpg",{"type":11,"children":300,"toc":326},[301,310],{"type":14,"tag":23,"props":302,"children":303},{},[304],{"type":14,"tag":88,"props":305,"children":308},{"href":306,"rel":307},"https://unsplash.com/photos/person-holding-pencil-near-laptop-computer-5fNmWej4tAA?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[309],{"type":20,"value":296},{"type":14,"tag":23,"props":311,"children":312},{},[313,314,320,321],{"type":20,"value":209},{"type":14,"tag":88,"props":315,"children":317},{"href":316},"https://unsplash.com/@homajob?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[318],{"type":20,"value":319},"Scott Graham",{"type":20,"value":217},{"type":14,"tag":88,"props":322,"children":324},{"href":323},"https://unsplash.com/photos/person-holding-pencil-near-laptop-computer-5fNmWej4tAA?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[325],{"type":20,"value":223},{"title":8,"searchDepth":40,"depth":40,"links":327},[],"local_fs:modules:smp:index.md","modules/smp/index.md",{"_path":331,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":332,"description":8,"id":40,"trl":189,"category":269,"author":191,"thumbnail":270,"visibility":193,"body":333,"_type":44,"_id":350,"_source":46,"_file":351,"_extension":48},"/modules/environments","Environments & Containers",{"type":11,"children":334,"toc":347},[335],{"type":14,"tag":274,"props":336,"children":337},{},[338,343],{"type":14,"tag":15,"props":339,"children":341},{"id":340},"environments-containers",[342],{"type":20,"value":332},{"type":14,"tag":23,"props":344,"children":345},{},[346],{"type":20,"value":287},{"title":8,"searchDepth":40,"depth":40,"links":348},[349],{"id":340,"depth":40,"text":332},"local_fs:modules:environments:index.md","modules/environments/index.md",{"_path":353,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":354,"description":355,"id":179,"trl":189,"category":232,"author":191,"thumbnail":356,"visibility":193,"body":357,"_type":44,"_id":386,"_source":46,"_file":387,"_extension":48},"/modules/fairsoftware","FAIR software","thumbnail-fair-software","thumbnail-fair-software.jpg",{"type":11,"children":358,"toc":384},[359,368],{"type":14,"tag":23,"props":360,"children":361},{},[362],{"type":14,"tag":88,"props":363,"children":366},{"href":364,"rel":365},"https://unsplash.com/photos/three-men-sitting-while-using-laptops-and-watching-man-beside-whiteboard-wD1LRb9OeEo?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[367],{"type":20,"value":355},{"type":14,"tag":23,"props":369,"children":370},{},[371,372,378,379],{"type":20,"value":209},{"type":14,"tag":88,"props":373,"children":375},{"href":374},"https://unsplash.com/@austindistel?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[376],{"type":20,"value":377},"Austin Distel",{"type":20,"value":217},{"type":14,"tag":88,"props":380,"children":382},{"href":381},"https://unsplash.com/photos/three-men-sitting-while-using-laptops-and-watching-man-beside-whiteboard-wD1LRb9OeEo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[383],{"type":20,"value":223},{"title":8,"searchDepth":40,"depth":40,"links":385},[],"local_fs:modules:fairsoftware:index.md","modules/fairsoftware/index.md",{"_path":389,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":390,"description":8,"id":179,"trl":189,"category":269,"author":191,"thumbnail":270,"visibility":193,"body":391,"_type":44,"_id":409,"_source":46,"_file":410,"_extension":48},"/modules/versioning","Versioning & Changelog",{"type":11,"children":392,"toc":406},[393],{"type":14,"tag":274,"props":394,"children":395},{},[396,402],{"type":14,"tag":15,"props":397,"children":399},{"id":398},"versioning",[400],{"type":20,"value":401},"Versioning",{"type":14,"tag":23,"props":403,"children":404},{},[405],{"type":20,"value":287},{"title":8,"searchDepth":40,"depth":40,"links":407},[408],{"id":398,"depth":40,"text":401},"local_fs:modules:versioning:index.md","modules/versioning/index.md",{"_path":412,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":413,"description":8,"id":414,"trl":189,"category":269,"author":191,"thumbnail":270,"visibility":193,"body":415,"_type":44,"_id":433,"_source":46,"_file":434,"_extension":48},"/modules/hpc","High Performance Computing (HPC)",4,{"type":11,"children":416,"toc":430},[417],{"type":14,"tag":274,"props":418,"children":419},{},[420,426],{"type":14,"tag":15,"props":421,"children":423},{"id":422},"high-performance-cluster-hpc",[424],{"type":20,"value":425},"High Performance Cluster (HPC)",{"type":14,"tag":23,"props":427,"children":428},{},[429],{"type":20,"value":287},{"title":8,"searchDepth":40,"depth":40,"links":431},[432],{"id":422,"depth":40,"text":425},"local_fs:modules:hpc:index.md","modules/hpc/index.md",{"_path":436,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":437,"description":438,"id":439,"trl":440,"category":297,"author":191,"thumbnail":441,"visibility":193,"body":442,"_type":44,"_id":471,"_source":46,"_file":472,"_extension":48},"/modules/licenses","Software licenses","thumbnail-licenses",5,"high","thumbnail-licenses.jpg",{"type":11,"children":443,"toc":469},[444,453],{"type":14,"tag":23,"props":445,"children":446},{},[447],{"type":14,"tag":88,"props":448,"children":451},{"href":449,"rel":450},"https://unsplash.com/photos/laptop-compute-displaying-command-prompt-vII7qKAk-9A?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[452],{"type":20,"value":438},{"type":14,"tag":23,"props":454,"children":455},{},[456,457,463,464],{"type":20,"value":209},{"type":14,"tag":88,"props":458,"children":460},{"href":459},"https://unsplash.com/@disruptxn?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[461],{"type":20,"value":462},"Desola Lanre-Ologun",{"type":20,"value":217},{"type":14,"tag":88,"props":465,"children":467},{"href":466},"https://unsplash.com/photos/laptop-compute-displaying-command-prompt-vII7qKAk-9A?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[468],{"type":20,"value":223},{"title":8,"searchDepth":40,"depth":40,"links":470},[],"local_fs:modules:licenses:index.md","modules/licenses/index.md",{"_path":474,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":475,"description":8,"id":476,"trl":189,"category":269,"author":191,"thumbnail":270,"visibility":193,"body":477,"_type":44,"_id":494,"_source":46,"_file":495,"_extension":48},"/modules/notebooks","Notebooks",6,{"type":11,"children":478,"toc":491},[479],{"type":14,"tag":274,"props":480,"children":481},{},[482,487],{"type":14,"tag":15,"props":483,"children":485},{"id":484},"notebooks",[486],{"type":20,"value":475},{"type":14,"tag":23,"props":488,"children":489},{},[490],{"type":20,"value":287},{"title":8,"searchDepth":40,"depth":40,"links":492},[493],{"id":484,"depth":40,"text":475},"local_fs:modules:notebooks:index.md","modules/notebooks/index.md",{"_path":497,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":498,"description":8,"id":499,"trl":440,"category":269,"author":191,"thumbnail":270,"visibility":193,"body":500,"_type":44,"_id":517,"_source":46,"_file":518,"_extension":48},"/modules/organization","Software project organization",7,{"type":11,"children":501,"toc":514},[502],{"type":14,"tag":274,"props":503,"children":504},{},[505,510],{"type":14,"tag":15,"props":506,"children":508},{"id":507},"software-project-organization",[509],{"type":20,"value":498},{"type":14,"tag":23,"props":511,"children":512},{},[513],{"type":20,"value":287},{"title":8,"searchDepth":40,"depth":40,"links":515},[516],{"id":507,"depth":40,"text":498},"local_fs:modules:organization:index.md","modules/organization/index.md",{"_path":520,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":521,"description":522,"id":523,"trl":189,"category":190,"author":191,"thumbnail":524,"visibility":193,"body":525,"_type":44,"_id":553,"_source":46,"_file":554,"_extension":48},"/modules/publication","Software publication","thumbnail-publication\nPhoto by ThisisEngineering on Unsplash",8,"thumbnail-publication.jpg",{"type":11,"children":526,"toc":551},[527],{"type":14,"tag":23,"props":528,"children":529},{},[530,537,539,545,546],{"type":14,"tag":88,"props":531,"children":534},{"href":532,"rel":533},"https://unsplash.com/photos/man-in-blue-and-white-checkered-button-up-shirt-sitting-beside-man-in-yellow-shirt-t4qI2IDcL5s?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[535],{"type":20,"value":536},"thumbnail-publication",{"type":20,"value":538},"\nPhoto by ",{"type":14,"tag":88,"props":540,"children":542},{"href":541},"https://unsplash.com/@thisisengineering?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[543],{"type":20,"value":544},"ThisisEngineering",{"type":20,"value":217},{"type":14,"tag":88,"props":547,"children":549},{"href":548},"https://unsplash.com/photos/man-in-blue-and-white-checkered-button-up-shirt-sitting-beside-man-in-yellow-shirt-t4qI2IDcL5s?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[550],{"type":20,"value":223},{"title":8,"searchDepth":40,"depth":40,"links":552},[],"local_fs:modules:publication:index.md","modules/publication/index.md",{"_path":556,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":557,"description":558,"id":559,"trl":189,"category":560,"abstract":561,"author":191,"thumbnail":562,"visibility":193,"body":563,"_type":44,"_id":590,"_source":46,"_file":591,"_extension":48},"/modules/testing","Software testing","thumbnail-testing\nPhoto by Christina @ wocintechchat.com on Unsplash",9,"Development","Local testing of your software and using Continuous Integration and Continuous Deployment (CI/CD)","thumbnail-testing.jpg",{"type":11,"children":564,"toc":588},[565],{"type":14,"tag":23,"props":566,"children":567},{},[568,575,576,582,583],{"type":14,"tag":88,"props":569,"children":572},{"href":570,"rel":571},"https://unsplash.com/photos/macbook-pro-2JDDn7iSGH8?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash",[92],[573],{"type":20,"value":574},"thumbnail-testing",{"type":20,"value":538},{"type":14,"tag":88,"props":577,"children":579},{"href":578},"https://unsplash.com/@wocintechchat?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[580],{"type":20,"value":581},"Christina @ wocintechchat.com",{"type":20,"value":217},{"type":14,"tag":88,"props":584,"children":586},{"href":585},"https://unsplash.com/photos/macbook-pro-2JDDn7iSGH8?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[587],{"type":20,"value":223},{"title":8,"searchDepth":40,"depth":40,"links":589},[],"local_fs:modules:testing:index.md","modules/testing/index.md",{"_path":593,"_dir":185,"_draft":7,"_partial":7,"_locale":8,"title":594,"description":8,"id":595,"trl":440,"category":269,"abstract":596,"author":191,"thumbnail":270,"visibility":193,"body":597,"_type":44,"_id":629,"_source":46,"_file":630,"_extension":48},"/modules/version-control","Software version control",10,"Local version control and collaborative code development, for example using Git and GitHub",{"type":11,"children":598,"toc":625},[599,612],{"type":14,"tag":274,"props":600,"children":601},{},[602,608],{"type":14,"tag":15,"props":603,"children":605},{"id":604},"local-version-control",[606],{"type":20,"value":607},"Local version control",{"type":14,"tag":23,"props":609,"children":610},{},[611],{"type":20,"value":287},{"type":14,"tag":274,"props":613,"children":614},{},[615,621],{"type":14,"tag":15,"props":616,"children":618},{"id":617},"remote-repositories",[619],{"type":20,"value":620},"Remote repositories",{"type":14,"tag":23,"props":622,"children":623},{},[624],{"type":20,"value":287},{"title":8,"searchDepth":40,"depth":40,"links":626},[627,628],{"id":604,"depth":40,"text":607},{"id":617,"depth":40,"text":620},"local_fs:modules:version-control:index.md","modules/version-control/index.md",1715801014230] \ No newline at end of file diff --git a/api/_content/cache.1715800925905.json b/api/_content/cache.1715801002288.json similarity index 99% rename from api/_content/cache.1715800925905.json rename to api/_content/cache.1715801002288.json index 85de4b6f..5620917f 100644 --- a/api/_content/cache.1715800925905.json +++ b/api/_content/cache.1715801002288.json @@ -1 +1 @@ -{"generatedAt":1715800936397,"generateTime":614,"contents":[{"_path":"/config","_dir":"","_draft":false,"_partial":false,"_locale":"","publicProps":{"title":"Research Software Support","baseURL":"research-software-support","repoName":"research-software-support","repoOwner":"esciencecenter-digital-skills","organization":"Netherlands eScience Center","categoryOrder":["Getting started","Reusability","Publishing & Citing","Development","Upcoming (under construction)"]},"_id":"local_fs:config.json","_type":"json","title":"Config","_source":"local_fs","_file":"config.json","_extension":"json"},{"_path":"/","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Hello world","description":"Here is some markdown content.","body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"hello-world"},"children":[{"type":"text","value":"Hello world"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here is some markdown content."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"/lessons/demo"},"children":[{"type":"text","value":"Demo lesson link"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:index.md","_source":"local_fs","_file":"index.md","_extension":"md"},{"_path":"/license","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"LICENSE","description":"The content of the modules/ folder of this project is licensed under a Creative Commons Attribution 4.0 International License.","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"rel":["license"],"href":"http://creativecommons.org/licenses/by/4.0/"},"children":[{"type":"element","tag":"img","props":{"alt":"Creative Commons License","style":"border-width:0","src":"https://i.creativecommons.org/l/by/4.0/88x31.png"},"children":[]}]},{"type":"element","tag":"br","props":{},"children":[]},{"type":"text","value":"The content of the "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"modules/"}]},{"type":"text","value":" folder of this project is licensed under a "},{"type":"element","tag":"a","props":{"rel":["license"],"href":"http://creativecommons.org/licenses/by/4.0/"},"children":[{"type":"text","value":"Creative Commons Attribution 4.0 International License"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This license does not apply to any image files in the "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"modules"}]},{"type":"text","value":" folder or its subfolders.\nImage files are files with "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".png"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".jpg"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".svg"}]},{"type":"text","value":", or "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".gif"}]},{"type":"text","value":" extensions."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:LICENSE.md","_source":"local_fs","_file":"LICENSE.md","_extension":"md"},{"_path":"/main/about","_dir":"main","_draft":false,"_partial":false,"_locale":"","title":"About","description":"","body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"about-the-research-software-support"},"children":[{"type":"text","value":"About the Research Software Support"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support."}]},{"type":"element","tag":"h2","props":{"id":"target-audience"},"children":[{"type":"text","value":"Target audience"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"about-the-research-software-support","depth":2,"text":"About the Research Software Support"},{"id":"target-audience","depth":2,"text":"Target audience"}]}},"_type":"markdown","_id":"local_fs:main:about.md","_source":"local_fs","_file":"main/about.md","_extension":"md"},{"_path":"/main/contribute","_dir":"main","_draft":false,"_partial":false,"_locale":"","title":"Contribute","description":"","body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"contributing-to-the-research-software-support"},"children":[{"type":"text","value":"Contributing to the Research Software Support"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project."}]},{"type":"element","tag":"h3","props":{"id":"what-can-i-do"},"children":[{"type":"text","value":"What can I do?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Go to our github repository by clicking on the GitHub logo in the top right of this website."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Contribute to the content discussion in the "},{"type":"element","tag":"a","props":{"href":"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory","rel":["nofollow"]},"children":[{"type":"text","value":"chapter issues"}]},{"type":"text","value":", e.g. by listing good resources for information."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#elements-of-a-module"},"children":[{"type":"text","value":"Author a lesson"}]},{"type":"text","value":", e.g. by:\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#slides"},"children":[{"type":"text","value":"Creating slides"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#exercises"},"children":[{"type":"text","value":"Designing an exercise"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#online-resources"},"children":[{"type":"text","value":"Curating online resources"}]}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Review a lesson module; both by looking at "},{"type":"element","tag":"a","props":{"href":"https://github.com/esciencecenter-digital-skills/research-software-support/pulls","rel":["nofollow"]},"children":[{"type":"text","value":"open PRs"}]},{"type":"text","value":", as well as flagging issues for improvement in the "},{"type":"element","tag":"a","props":{"href":"https://esciencecenter-digital-skills.github.io/research-software-support/","rel":["nofollow"]},"children":[{"type":"text","value":"existing content"}]},{"type":"text","value":"."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/esciencecenter-digital-skills/research-software-support/issues","rel":["nofollow"]},"children":[{"type":"text","value":"Provide feedback"}]},{"type":"text","value":" on the different subjects covered: what did we miss? Should something be restructured?"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"contributing-to-the-research-software-support","depth":2,"text":"Contributing to the Research Software Support","children":[{"id":"what-can-i-do","depth":3,"text":"What can I do?"}]}]}},"_type":"markdown","_id":"local_fs:main:contribute.md","_source":"local_fs","_file":"main/contribute.md","_extension":"md"},{"_path":"/modules/citation/citationcff","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"The `CITATION.cff` file","description":"","type":"reading","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"the-citationcff-file"},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":" file"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To facilitate the citation of scientific software, a group of software developers, researchers, and publishers have come together to develop the "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":" format. A "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":" file is a lightweight, machine-readable file that provides information about the software, its creators, and how it should be cited. This file can be included in the software, and should be easy to find and access."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are even nice integrations with GitHub and Zenodo."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here is an example of a "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":" file:"}]},{"type":"element","tag":"pre","props":{"code":"cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n - family-names: Druskat\n given-names: Stephan\n orcid: https://orcid.org/1234-5678-9101-1121\ntitle: \"My Research Software\"\nversion: 2.0.4\nidentifiers:\n - type: doi\n value: 10.5281/zenodo.1234\ndate-released: 2021-08-11\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n - family-names: Druskat\n given-names: Stephan\n orcid: https://orcid.org/1234-5678-9101-1121\ntitle: \"My Research Software\"\nversion: 2.0.4\nidentifiers:\n - type: doi\n value: 10.5281/zenodo.1234\ndate-released: 2021-08-11\n"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-citationcff-file","depth":2,"text":"The CITATION.cff file"}]}},"_type":"markdown","_id":"local_fs:modules:citation:citationcff.md","_source":"local_fs","_file":"modules/citation/citationcff.md","_extension":"md"},{"_path":"/modules/citation/create_citation_file","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"Using cffinit to create `CITATION.cff`","description":"","type":"exercise","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"using-cffinit-to-create-citationcff"},"children":[{"type":"text","value":"Using cffinit to create "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This tutorial demonstrates the use of CFFinit, to create a "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":" file. You can find the tool at "},{"type":"element","tag":"a","props":{"href":"https://citation-file-format.github.io/cff-initializer-javascript/#/","rel":["nofollow"]},"children":[{"type":"text","value":"citation-file-format.github.io/cff-initializer-javascript"}]},{"type":"text","value":"."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"using-cffinit-to-create-citationcff","depth":2,"text":"Using cffinit to create CITATION.cff"}]}},"_type":"markdown","_id":"local_fs:modules:citation:create_citation_file.md","_source":"local_fs","_file":"modules/citation/create_citation_file.md","_extension":"md"},{"_path":"/modules/citation/ex_when_to_cite","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"Which software should I cite?","description":"","type":"exercise","order":6,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"exercise-which-software-should-i-cite"},"children":[{"type":"text","value":"Exercise: Which software should I cite?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suppose you are writing a paper on your latest research and are putting together the reference list. During your research you have used all the software mentioned below."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Ubuntu - Operating System ()"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Microsoft word - text editor (used to write the paper, take notes)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Git - Version control software ()"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Numpy - Python math library (used in nearly all python-based research software)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"ESMValTool - Diagnostic tool/library for Earth System Models (Used in many climate research projects)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"ClimAnal - Your own domain specific python library (defines various analytical functions that you used in your climate research)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The original code on which you based your library ClimAnal"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your own local python script, used to execute the analysis"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Which software would you cite and which not? Why?"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"exercise-which-software-should-i-cite","depth":2,"text":"Exercise: Which software should I cite?"}]}},"_type":"markdown","_id":"local_fs:modules:citation:ex_when_to_cite.md","_source":"local_fs","_file":"modules/citation/ex_when_to_cite.md","_extension":"md"},{"_path":"/modules/citation/further_reading","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"Reading material","description":"","type":"reading","order":7,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"links-for-further-reading"},"children":[{"type":"text","value":"Links for further reading"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The FORCE11 "},{"type":"element","tag":"a","props":{"href":"https://force11.org/info/software-citation-principles-published-2016/","rel":["nofollow"]},"children":[{"type":"text","value":"Software Citation Principles"}]},{"type":"text","value":" describe the rationale behind software citation."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"An interactive guide on software citation can be found at "},{"type":"element","tag":"a","props":{"href":"https://cfa-library.github.io/citesoftware.org/","rel":["nofollow"]},"children":[{"type":"text","value":"citesoftware.org"}]},{"type":"text","value":"."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"An extensive (non-interactive) guide can be found at "},{"type":"element","tag":"a","props":{"href":"https://cite.research-software.org/","rel":["nofollow"]},"children":[{"type":"text","value":"cite.research-software.org"}]},{"type":"text","value":"."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"To provide citation information "},{"type":"element","tag":"a","props":{"href":"https://citation-file-format.github.io/","rel":["nofollow"]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":" files can be created using the online "},{"type":"element","tag":"a","props":{"href":"https://citation-file-format.github.io/cff-initializer-javascript/#/","rel":["nofollow"]},"children":[{"type":"text","value":"CFFInit"}]},{"type":"text","value":" tool."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://mr-c.github.io/shouldacite/","rel":["nofollow"]},"children":[{"type":"text","value":"Shouldacite"}]},{"type":"text","value":" helps you decide when to cite software in your publications."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"links-for-further-reading","depth":2,"text":"Links for further reading"}]}},"_type":"markdown","_id":"local_fs:modules:citation:further_reading.md","_source":"local_fs","_file":"modules/citation/further_reading.md","_extension":"md"},{"_path":"/modules/citation","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software citation","description":"thumbnail-citation","id":0,"trl":"medium","category":"Publishing & Citing","author":"eScience Center","thumbnail":"thumbnail-citation.jpg","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/difficult-roads-lead-to-beautiful-destinations-desk-decor-z1d-LP8sjuI?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-citation"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@helloimnik?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Nik"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/difficult-roads-lead-to-beautiful-destinations-desk-decor-z1d-LP8sjuI?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:citation:index.md","_source":"local_fs","_file":"modules/citation/index.md","_extension":"md"},{"_path":"/modules/citation/info","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the Citation module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the Citation module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:citation:info.md","_source":"local_fs","_file":"modules/citation/info.md","_extension":"md"},{"_path":"/modules/citation/introduction","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"Citing software","description":"","type":"reading","order":2,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"citing-software"},"children":[{"type":"text","value":"Citing software"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software has become a crucial part of scientific research, yet it is not cited or credited as often and as easily as traditional research outputs. However, it is important to properly cite software, for many reasons, among which:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Understanding Research Fields"}]},{"type":"text","value":": Software is a product of research, and by not citing it, we leave holes in the record of research of progress in those fields."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Recognition"}]},{"type":"text","value":": Academic researchers at all levels, including students, postdocs, faculty, and staff, should be credited for the software products they develop and contribute to, particularly when those products enable or further research done by others. Non-academic researchers should also be credited for their software work, though the specific forms of credit are different than for academic researchers. Furthermore, citations can be tracked, which allows for more accurate assessment of the software's impact: who uses it, and what projects does it contribute to?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Discovering Software"}]},{"type":"text","value":": Citations enable the specific software used in a research product to be found. Additional researchers can then use the same software for different purposes, leading to credit for those responsible for the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Reproducibility"}]},{"type":"text","value":": Citation of specific software used is a crucial step in allowing other researchers to reproduce your results, although it is not sufficient. Additional information such as configurations and platform issues are also needed. Accurate information about the software — and its version! — used in your research is necessary for others to obtain and use the same software, making it easier to validate and build upon your research."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In this module, we will further illustrate the importance of software citation, and we will demonstrate how scientific software can be cited, and how to facilitate this as the author of scientific software. Here, you will be introduced to the file type "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":", which was developed especially for this purpose.\n:::"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"citing-software","depth":2,"text":"Citing software"}]}},"_type":"markdown","_id":"local_fs:modules:citation:introduction.md","_source":"local_fs","_file":"modules/citation/introduction.md","_extension":"md"},{"_path":"/modules/citation/principles","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"The principles","description":"","type":"reading","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"the-force11-working-group-published-the-software-citation-principles"},"children":[{"type":"text","value":"The FORCE11 working group published the "},{"type":"element","tag":"a","props":{"href":"https://force11.org/info/software-citation-principles-published-2016/","rel":["nofollow"]},"children":[{"type":"text","value":"Software Citation Principles"}]}]},{"type":"element","tag":"h3","props":{"id":"the-principles"},"children":[{"type":"text","value":"The principles"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Importance"}]},{"type":"text","value":": Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Credit and Attribution"}]},{"type":"text","value":": Software citations should facilitate giving scholarly credit and normative, legal attribution to all contributors to the software, recognizing that a single style or mechanism of attribution may not be applicable to all software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Unique Identification"}]},{"type":"text","value":": A software citation should include a method for identification that is machine actionable, globally unique, interoperable, and recognized by at least a community of the corresponding domain experts, and preferably by general public researchers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Persistence"}]},{"type":"text","value":": Unique identifiers and metadata describing the software and its disposition should persist – even beyond the lifespan of the software they describe."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Accessibility"}]},{"type":"text","value":": Software citations should facilitate access to the software itself and to its associated metadata, documentation, data, and other materials necessary for both humans and machines to make informed use of the referenced software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Specificity"}]},{"type":"text","value":": Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-force11-working-group-published-the-software-citation-principles","depth":2,"text":"The FORCE11 working group published the Software Citation Principles","children":[{"id":"the-principles","depth":3,"text":"The principles"}]}]}},"_type":"markdown","_id":"local_fs:modules:citation:principles.md","_source":"local_fs","_file":"modules/citation/principles.md","_extension":"md"},{"_path":"/modules/citation/slides-citation","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"Software Citation","description":"","type":"slides","order":1,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h1","props":{"id":"software-citation"},"children":[{"type":"text","value":"Software Citation"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"why-would-you-cite-software"},"children":[{"type":"text","value":"Why would you cite software?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Understanding Research Fields"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Credit for the researcher"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Recognition of the software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Discovering Software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reproducibility"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Understanding Research Fields"}]},{"type":"text","value":": Software is a product of research, and by not citing it, we leave holes in the record of research of progress in those fields."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Credit"}]},{"type":"text","value":": Academic researchers at all levels, including students, postdocs, faculty, and staff, should be credited for the software products they develop and contribute to, particularly when those products enable or further research done by others. Non-academic researchers should also be credited for their software work, though the specific forms of credit are different than for academic researchers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Discovering Software"}]},{"type":"text","value":": Citations enable the specific software used in a research product to be found. Additional researchers can then use the same software for different purposes, leading to credit for those responsible for the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Reproducibility"}]},{"type":"text","value":": Citation of specific software used is necessary for reproducibility, although not sufficient. Additional information such as configurations and platform issues are also needed."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"the-software-citation-principles"},"children":[{"type":"text","value":"The software citation principles"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Importance"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Credit and attribution"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Unique Identification"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Persistence"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Accessibility"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Specificity"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Importance"}]},{"type":"text","value":": Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Credit and Attribution"}]},{"type":"text","value":": Software citations should facilitate giving scholarly credit and normative, legal attribution to all contributors to the software, recognizing that a single style or mechanism of attribution may not be applicable to all software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Unique Identification"}]},{"type":"text","value":": A software citation should include a method for identification that is machine actionable, globally unique, interoperable, and recognized by at least a community of the corresponding domain experts, and preferably by general public researchers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Persistence"}]},{"type":"text","value":": Unique identifiers and metadata describing the software and its disposition should persist – even beyond the lifespan of the software they describe."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Accessibility"}]},{"type":"text","value":": Software citations should facilitate access to the software itself and to its associated metadata, documentation, data, and other materials necessary for both humans and machines to make informed use of the referenced software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Specificity"}]},{"type":"text","value":": Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"what-software-to-cite"},"children":[{"type":"text","value":"What software to cite?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"\"\"...the software itself should be cited on the same basis as any other research product; authors should cite the appropriate set of software products.\""}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Which software would you cite?"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"how-to-make-your-software-citable"},"children":[{"type":"text","value":"How to make your software citable?"}]},{"type":"element","tag":"h2","props":{"id":""},"children":[]},{"type":"element","tag":"h2","props":{"id":"citationcff"},"children":[{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"pre","props":{"code":"cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n - family-names: Druskat\n given-names: Stephan\n orcid: https://orcid.org/1234-5678-9101-1121\ntitle: \"My Research Software\"\nversion: 2.0.4\nidentifiers:\n - type: doi\n value: 10.5281/zenodo.1234\ndate-released: 2021-08-11\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n - family-names: Druskat\n given-names: Stephan\n orcid: https://orcid.org/1234-5678-9101-1121\ntitle: \"My Research Software\"\nversion: 2.0.4\nidentifiers:\n - type: doi\n value: 10.5281/zenodo.1234\ndate-released: 2021-08-11\n"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"why-would-you-cite-software","depth":2,"text":"Why would you cite software?"},{"id":"the-software-citation-principles","depth":2,"text":"The software citation principles"},{"id":"what-software-to-cite","depth":2,"text":"What software to cite?"},{"id":"how-to-make-your-software-citable","depth":2,"text":"How to make your software citable?"},{"id":"","depth":2,"text":""},{"id":"citationcff","depth":2,"text":"CITATION.cff"}]}},"_type":"markdown","_id":"local_fs:modules:citation:slides-citation.pmd","_source":"local_fs","_file":"modules/citation/slides-citation.pmd","_extension":"pmd"},{"_path":"/modules/documentation","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software documentation","description":"","id":1,"trl":"medium","category":"Upcoming (under construction)","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"documentation"},"children":[{"type":"text","value":"Documentation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"documentation","depth":2,"text":"Documentation"}]}},"_type":"markdown","_id":"local_fs:modules:documentation:index.md","_source":"local_fs","_file":"modules/documentation/index.md","_extension":"md"},{"_path":"/modules/documentation/info","_dir":"documentation","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:documentation:info.md","_source":"local_fs","_file":"modules/documentation/info.md","_extension":"md"},{"_path":"/modules/environments","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Environments & Containers","description":"","id":2,"trl":"medium","category":"Upcoming (under construction)","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"environments-containers"},"children":[{"type":"text","value":"Environments & Containers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"environments-containers","depth":2,"text":"Environments & Containers"}]}},"_type":"markdown","_id":"local_fs:modules:environments:index.md","_source":"local_fs","_file":"modules/environments/index.md","_extension":"md"},{"_path":"/modules/environments/info","_dir":"environments","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:environments:info.md","_source":"local_fs","_file":"modules/environments/info.md","_extension":"md"},{"_path":"/modules/fairsoftware/exercise1","_dir":"fairsoftware","_draft":false,"_partial":false,"_locale":"","title":"What is FAIR?","description":"","type":"exercise","order":2,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-1"},"children":[{"type":"text","value":"Exercise 1"}]},{"type":"element","tag":"h2","props":{"id":"what-is-fair"},"children":[{"type":"text","value":"What is FAIR?"}]},{"type":"element","tag":"h3","props":{"id":"fair-principles-15-minutes"},"children":[{"type":"text","value":"FAIR principles (15 minutes)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The FAIR principles are:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"F"}]},{"type":"text","value":"indable"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"A"}]},{"type":"text","value":"ccessible"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"I"}]},{"type":"text","value":"nteroperable"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"R"}]},{"type":"text","value":"eusable"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"They were originally introduced in "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.1038/sdata.2016.18","rel":["nofollow"]},"children":[{"type":"text","value":"this paper by Wilkinson et al."}]},{"type":"text","value":".\nThis paper is a good starting point to learn more about FAIR, but if you are already familiar with the concept, a quick skim of the paper should do.\nThe most important take-away from this particular paper is the point that FAIR, while originally a data-specific concept, was designed with other digital objects in mind as well."}]},{"type":"element","tag":"h3","props":{"id":"fair-software-10-minutes"},"children":[{"type":"text","value":"FAIR software (10 minutes)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To extend the FAIR principles to software, the "},{"type":"element","tag":"a","props":{"href":"https://force11.org/groups/fair-4-research-software-fair4rs-working-group/","rel":["nofollow"]},"children":[{"type":"text","value":"FAIR 4 Research Software working group"}]},{"type":"text","value":" was formed.\nTheir paper "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.1038/s41597-022-01710-x","rel":["nofollow"]},"children":[{"type":"text","value":"Introducing the FAIR principles for research software"}]},{"type":"text","value":" describes in more practical terms how FAIR can be applied to software."}]},{"type":"element","tag":"h4","props":{"id":"you-should-now-be-able-to"},"children":[{"type":"text","value":"You should now be able to"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Understand the different facets of FAIR"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Be aware of the machine-actionable nature of FAIR"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Get a feeling for additional challenges that software poses to FAIR"}]}]},{"type":"element","tag":"h3","props":{"id":"fair-software-20-minutes-optional"},"children":[{"type":"text","value":"FAIR software (20 minutes, optional)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"While the intepretation of the FAIR4RS working group has been the dominant set of principles since its publication, it was not the first attempt to apply FAIR to software.\n"},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.3233/ds-190026","rel":["nofollow"]},"children":[{"type":"text","value":"This paper by Anna Lena Lamprecht et al."}]},{"type":"text","value":" was published a few years earlier, and also described an extension of the FAIR principles for software.\nThe paper is a more elaborate in its descriptions of software, the different aspects of software, and how they are or are not addressed by FAIR.\nIt is a good read if you want to get a deeper understanding of software and its relation to the FAIR principles."}]},{"type":"element","tag":"h3","props":{"id":"discussion"},"children":[{"type":"text","value":"Discussion"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What are the differences between FAIR principles for data and software?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What challenges do you see in making software FAIR?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Why is FAIR software important?"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"what-is-fair","depth":2,"text":"What is FAIR?","children":[{"id":"fair-principles-15-minutes","depth":3,"text":"FAIR principles (15 minutes)"},{"id":"fair-software-10-minutes","depth":3,"text":"FAIR software (10 minutes)"},{"id":"fair-software-20-minutes-optional","depth":3,"text":"FAIR software (20 minutes, optional)"},{"id":"discussion","depth":3,"text":"Discussion"}]}]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:exercise1.md","_source":"local_fs","_file":"modules/fairsoftware/exercise1.md","_extension":"md"},{"_path":"/modules/fairsoftware/exercise2","_dir":"fairsoftware","_draft":false,"_partial":false,"_locale":"","title":"Mapping the principles","description":"","type":"exercise","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-2"},"children":[{"type":"text","value":"Exercise 2"}]},{"type":"element","tag":"h2","props":{"id":"mapping-the-principles"},"children":[{"type":"text","value":"Mapping the principles"}]},{"type":"element","tag":"h3","props":{"id":"the-fair4rs-principles-are"},"children":[{"type":"text","value":"The FAIR4RS Principles are:"}]},{"type":"element","tag":"h4","props":{"id":"f-software-and-its-associated-metadata-is-easy-for-both-humans-and-machines-to-find"},"children":[{"type":"text","value":"F: Software, and its associated metadata, is easy for both humans and machines to find."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"F1. Software is assigned a globally unique and persistent identifier.\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"F1.1. Components of the software representing levels of granularity are assigned distinct identifiers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"F1.2. Different versions of the software are assigned distinct identifiers."}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"F2. Software is described with rich metadata."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"F3. Metadata clearly and explicitly include the identifier of the software they describe."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"F4. Metadata are FAIR, searchable and indexable."}]}]},{"type":"element","tag":"h4","props":{"id":"a-software-and-its-metadata-is-retrievable-via-standardised-protocols"},"children":[{"type":"text","value":"A: Software, and its metadata, is retrievable via standardised protocols."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A1. Software is retrievable by its identifier using a standardised communications protocol.\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A1.1. The protocol is open, free, and universally implementable."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A1.2. The protocol allows for an authentication and authorization procedure, where necessary."}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A2. Metadata are accessible, even when the software is no longer available."}]}]},{"type":"element","tag":"h4","props":{"id":"i-software-interoperates-with-other-software-by-exchanging-data-andor-metadata-andor-through-interaction-via-application-programming-interfaces-apis-described-through-standards"},"children":[{"type":"text","value":"I: Software interoperates with other software by exchanging data and/or metadata, and/or through interaction via application programming interfaces (APIs), described through standards."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I1. Software reads, writes and exchanges data in a way that meets domain-relevant community standards."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I2. Software includes qualified references to other objects."}]}]},{"type":"element","tag":"h4","props":{"id":"r-software-is-both-usable-can-be-executed-and-reusable-can-be-understood-modified-built-upon-or-incorporated-into-other-software"},"children":[{"type":"text","value":"R: Software is both usable (can be executed) and reusable (can be understood, modified, built upon, or incorporated into other software)."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"R1. Software is described with a plurality of accurate and relevant attributes.\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"R1.1. Software is given a clear and accessible license."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"R1.2. Software is associated with detailed provenance."}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"R2. Software includes qualified references to other software."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"R3. Software meets domain-relevant community standards."}]}]},{"type":"element","tag":"h3","props":{"id":"three-examples"},"children":[{"type":"text","value":"Three examples"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The following three examples of software have been described with statements that can be mapped to the FAIR4RS Principles. With each statement, identify the principle(s) it maps to, and the (sub)facet(s) of the principle(s) it addresses. A single statement may map to multiple (sub)facets."}]},{"type":"element","tag":"h4","props":{"id":"example-1-comet"},"children":[{"type":"text","value":"Example 1: "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.1002/pmic.201200439","rel":["nofollow"]},"children":[{"type":"text","value":"Comet"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Comet is a command-line tool and desktop application for tandem mass spectrometry sequence database search6."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Comet is licensed under the Apache 2.0 open source licence."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Comet is registered in the bio.tools catalogue of bioinformatics tools, where it has a globally unique and persistent identifier, and rich metadata that includes the identifier and is searchable and indexable."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The metadata in bio.tools is independent from the Comet repository, and will stay accessible should the software itself become inaccessible."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The publicly accessible project repository on GitHub includes detailed information about the development of Comet."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The code includes dependencies to external software packages, such as Thermo Scientific’s MSFileReader library."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Comet can be downloaded via the browser following the links provided in the metadata using https."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Comet uses standard data types from the proteomics domain for its input and output data that are documented in the metadata as functional annotations."}]}]},{"type":"element","tag":"h4","props":{"id":"example-2-puregome"},"children":[{"type":"text","value":"Example 2: "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5281/zenodo.4337242","rel":["nofollow"]},"children":[{"type":"text","value":"PureGoMe"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"PuReGoMe is a project aimed at understanding Dutch public sentiment during the COVID-19 outbreak period by analysing real-time Twitter data. It provides a collection of Python scripts and Jupyter notebooks for this purpose."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PureGoMe can be downloaded from the project repository, while metadata is accessible independently from the registry."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PuReGoMe's GitHub repository has detailed records of the development history."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The code includes dependencies to other software, such as various Python libraries."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PuReGoMe has a (versioned) DOI from Zenodo."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PuReGoMe uses the Apache 2.0 open source licence."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PuReGoMe uses standard file formats (e.g., CSV files) for data exchange."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PuReGoMe refers to other objects such as websites."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PureGoMe is registered in the Research Software Directory that captures the most relevant metadata, including the identifier, in searchable and indexable form."}]}]},{"type":"element","tag":"h4","props":{"id":"example-3-gammashiny"},"children":[{"type":"text","value":"Example 3: "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5281/zenodo.4139005","rel":["nofollow"]},"children":[{"type":"text","value":"gammaShiny"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"gammaShiny is an application that provides enhanced graphical user interfaces for the R gamma package8. It is used to process in-situ gamma-ray spectrometry measurements for luminescence dating."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"gammaShiny has been deposited in the HAL French national archive and it has a persistent globally unique identifier, with the HAL identifier of the metadata record and a SWHID, identifying specifically the software artefact on the Software Heritage universal software source code archive."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Thanks to the HAL platform, where a licence is mandatory, gammaShiny is under a GNU General Public Licence v3.0."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The archived versions of gammaShiny’s source code in Software Heritage include a codemeta.json file, identifiable with a SWHID, where other metadata is available including dependencies named in CodeMeta (\"softwareRequirements\")."}]}]},{"type":"element","tag":"h3","props":{"id":"do-you-agree"},"children":[{"type":"text","value":"Do you agree?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The examples were taken from "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.1038/s41597-022-01710-x","rel":["nofollow"]},"children":[{"type":"text","value":"this paper"}]},{"type":"text","value":".\nIn the Results section of the paper you will find the authors' analysis of the software, which contains the statements above, mapped to the FAIR4RS Principles."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Do you agree with their assessment?"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"mapping-the-principles","depth":2,"text":"Mapping the principles","children":[{"id":"the-fair4rs-principles-are","depth":3,"text":"The FAIR4RS Principles are:"},{"id":"three-examples","depth":3,"text":"Three examples"},{"id":"do-you-agree","depth":3,"text":"Do you agree?"}]}]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:exercise2.md","_source":"local_fs","_file":"modules/fairsoftware/exercise2.md","_extension":"md"},{"_path":"/modules/fairsoftware/exercise3","_dir":"fairsoftware","_draft":false,"_partial":false,"_locale":"","title":"FAIR in practice","description":"","type":"exercise","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-3"},"children":[{"type":"text","value":"Exercise 3"}]},{"type":"element","tag":"h2","props":{"id":"fair-in-practice"},"children":[{"type":"text","value":"FAIR in practice"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Role playing exercise:\nOne person presents the software, the other person gives feedback."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tasks for presenter:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What is the software about?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Who will use it?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What is the expected lifecycle of the software?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What potential users or applications are untapped?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tasks for reviewer:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Which FAIR principles are addressed?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How can the software be made more FAIR?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What would be the next step (low-hanging fruit)?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Together:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Define the next steps for the software"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Goals:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Frame an assessment positively: always start with assessing the things that have been done that contribute to good management and FAIR software. This is crucial, as well as motivating."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"fair-in-practice","depth":2,"text":"FAIR in practice"}]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:exercise3.md","_source":"local_fs","_file":"modules/fairsoftware/exercise3.md","_extension":"md"},{"_path":"/modules/fairsoftware","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"FAIR software","description":"thumbnail-fair-software","id":3,"trl":"medium","category":"Getting started","author":"eScience Center","thumbnail":"thumbnail-fair-software.jpg","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/three-men-sitting-while-using-laptops-and-watching-man-beside-whiteboard-wD1LRb9OeEo?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-fair-software"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@austindistel?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Austin Distel"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/three-men-sitting-while-using-laptops-and-watching-man-beside-whiteboard-wD1LRb9OeEo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:index.md","_source":"local_fs","_file":"modules/fairsoftware/index.md","_extension":"md"},{"_path":"/modules/fairsoftware/info","_dir":"fairsoftware","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:info.md","_source":"local_fs","_file":"modules/fairsoftware/info.md","_extension":"md"},{"_path":"/modules/fairsoftware/reading","_dir":"fairsoftware","_draft":false,"_partial":false,"_locale":"","title":"Reading material","description":"","type":"reading","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"reading-material"},"children":[{"type":"text","value":"Reading material"}]},{"type":"element","tag":"h2","props":{"id":"fair-software"},"children":[{"type":"text","value":"FAIR software"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Follow the links below to read about other resources related to FAIR research software."}]},{"type":"element","tag":"h3","props":{"id":"fair-research-software-principles-adoption"},"children":[{"type":"text","value":"FAIR Research Software Principles adoption"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The FAIR4RS Principles were "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.15497/RDA00068","rel":["nofollow"]},"children":[{"type":"text","value":"released in 2022"}]},{"type":"text","value":", and since then there have been many efforts for adopting them.\nThe blog post "},{"type":"element","tag":"a","props":{"href":"https://www.researchsoft.org/blog/2024-03/","rel":["nofollow"]},"children":[{"type":"text","value":"The FAIR for Research Software Principles after two years: an adoption update"}]},{"type":"text","value":" contains a summary of these efforts."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"fair-software","depth":2,"text":"FAIR software","children":[{"id":"fair-research-software-principles-adoption","depth":3,"text":"FAIR Research Software Principles adoption"}]}]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:reading.md","_source":"local_fs","_file":"modules/fairsoftware/reading.md","_extension":"md"},{"_path":"/modules/fairsoftware/slides-fairsoftware","_dir":"fairsoftware","_draft":false,"_partial":false,"_locale":"","title":"FAIR software","description":"","type":"slides","order":1,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h1","props":{"id":"fair-software"},"children":[{"type":"text","value":"FAIR software"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"ceci-nest-pas-une-photo"},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Ceci n'est pas une photo"}]}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Black_hole_-_Messier_87_crop_max_res.jpg/1280px-Black_hole_-_Messier_87_crop_max_res.jpg","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://doi.org/10.3847/2041-8213/ab0ec7","rel":["nofollow"]},"children":[{"type":"text","value":"The Event Horizon Telescope Collaboration et al. 2019"}]},{"type":"text","value":" (CC BY 3.0)"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software plays an important role in science. A first thought may be its role in data collection and analysis. Further, it may play a role in designing experiments, based on models generated. It may "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"be"}]},{"type":"text","value":" the experiment itself, simulate a research outcome based on data or ideas entered; it may also be the \"brain\" behind controlling crucial instrumentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What scientific software can you think of?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What role does it play?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An example here: the Event Horizon Telescope, which took a \"picture\" of a black hole.\nThe \"telescope\" is not a single tool, but complex: a \"planet-scale array of eight ground-based radio telescopes\" (wikipedia).\nThe separate telescopes collect data that is synchronized with atomic clocks, and the data is combined at highly specialised supercomputers.\nThe data can be converted into an image using custom software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/definition.png","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":"definition of Research Software from the FAIR4RS working group"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A definition of research software, from the FAIR4RS working group.\nIt is important that not all software that is used in research is research software.\nFor example, a text editor that is used to write a paper is not research software.\nNor is powerpoint, a web browser, or the software used to guide the telescope.\nEven tools like R or Python are not necessarily research software.\nThe code written in R or Python for an analysis would be research software, however.\nJust like a custom-made Excel macro that is used to analyse data.\nOr a custom-made web application that is used to collect data."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/unescoopenscience.png","width":"50%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://creativecommons.org/2021/12/02/unesco-recommendation-on-open-science-ratified/","rel":["nofollow"]},"children":[{"type":"text","value":"UNESCO Recommendation on Open Science, 2021"}]},{"type":"text","value":" (CC BY IGO 3.0)"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nOpen Science encompasses many aspects of science.\nIt is a movement that aims to make science — which includes software — more open, transparent, and accessible.\nThis is supported by many organisations, including UNESCO."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"the-fair-principles"},"children":[{"type":"text","value":"The FAIR principles"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/fair.png","width":"60%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nthe FAIR principles standardize values that help openness, transparency, and accessibility."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"screenshot Wilkinson 2016","src":"media/fairwilkinson.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nFAIR principles were originally designed for data, but are also applicable to software.\nDesigned also with other digital objects in mind, though actual description was data-specific.\nThis has been extended meanwhile."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-is-not-data"},"children":[{"type":"text","value":"Software is not data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is..."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"complex"}]},{"type":"text","value":": code is creatively generated, interconnected and multi-layered"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"interdependent"}]},{"type":"text","value":": it builds upon and therefore depends on other software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"executable"}]},{"type":"text","value":": it is not static, but can be run"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"dynamic"}]},{"type":"text","value":": it can break over time, and versioning is common"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nWhile technically, software is a special kind of data (in that it is representation of information in a digital state), they are in essence quite different."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software and data both are digital objects, sharing certain characteristics: they can be assigned a DOI, and they can have a license."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is quite different from data, however. Consider:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Complexity; it is not a single file, but a collection of files that are interconnected and multi-layered, and do not necessarily stand on their own. Software is also the result of a creative process that provides a tool to do something, and not the result of a measurement or observation."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interdependence; software is often built using other software, and rarely built completely from scratch. This makes it dependent on other existing applications, which themselves may also change over time."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Executability; software is in its dryest form a set of instructions that can be an archive of a procedure. However, the main goal of software is that these instructions can be executed. Data, by contrast, stand on their own."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Dynamic vs static; its interdependence and context-dependency drives software to require maintenance to retain its value, and this maintenance is not straightforward. Maintenance is also counter to academic culture; it does not fit in existing structures (both in terms of reward/recognition, but also in terms of funding and understanding of what is needed). Versioning of software is very common, while data is often static (though versions may happen)."}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-opportunities"},"children":[{"type":"text","value":"Software opportunities"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is a "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"living thing"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Creative process allows for "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"early adoption"}]},{"type":"text","value":" of good practices"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Openness and transparency are "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"inherent"}]},{"type":"text","value":" to software"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe different nature of software also provides opportunities.\nSoftware is a living thing, and therefore it is easier to adopt good practices early on.\nCrucially, there is a community driven openness in software that long predates the open science movement.\nThis is not to say that software is inherently open, but that there is a broad open culture, which also comes with existing tools and pathways to facilitate openness and transparency.\nConsider GitHub (and other code hosting platforms), which are designed for this purpose.\nConsider also version control software, a good software development practice that builds in provenance."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"FAIR for Research Software paper","src":"media/fair4rs_paper.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Fair 4 Research Software (FAIR4RS) working group (2022)\n"},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.1038/s41597-022-01710-x","rel":["nofollow"]},"children":[{"type":"text","value":"doi:10.1038/s41597-022-01710-x"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Contributing Organizations","src":"media/fair4rs_logos.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nIn 2022, the results of extensive community consultation were published in the FAIR for Research Software paper.\nThe group behind this was a collaboration between the Research Software Alliance, the Research Data Alliance, and FORCE11."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"FAIR for Research Software principles","src":"media/fair4rs_principles.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThese are the interpretations given to the FAIR principles for software by the working group.\nIn many cases these are rephrased to better fit software, but in some cases they are also extended."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"findability"},"children":[{"type":"text","value":"Findability"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"FAIR4RS Findability","src":"media/fair4rs_F.png"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Archive on Zenodo for DOI and persistence"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" Note that persistence on GitHub is not guaranteed!"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Use (semantic) versioning with updates"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" Zenodo assigns a DOI to each version "}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Include metadata, explicitly containing the DOI"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" but also license, version, dependencies, etc. "}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Register the software in a community registry"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" such as PyPI or CRAN, depending on the language/domain "}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nFor software findability, a few things need to work together:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The software needs to be archived on a platform that provides a DOI and persistence. GitHub is not guaranteed to provide this, and while it is a useful tool is not a suitable archive for software.\nGitHub does work well together with Zenodo, which provides both.\nTogether they also provide functionality for versioning: when releasing a new version on GitHub, and using the Zenodo integration, Zenodo will update the entry and assign a new DOI to the new version."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For software-specific findability, though, Zenodo is insufficient. Here, you can think of more specific registries, such as PyPI, CRAN, or Bioconductor; depending on the language and domain of the software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"accessibility"},"children":[{"type":"text","value":"Accessibility"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"FAIR4RS Accessibility","src":"media/fair4rs_A.png"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Community registries provide standard download protocols"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" e.g. "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"pip install my_software"}]},{"type":"text","value":" "}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Metadata on Zenodo is part of the persistent archive"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nA lot of accessibility is covered by the findability principles, but there are a few additional things to consider.\nSpecifically, software may still be FAIR as long as its metadata is accessible.\nThe code of the software itself, not the actual functional engine, could be considered metadata."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"interoperability"},"children":[{"type":"text","value":"Interoperability"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"FAIR4RS Interoperability","src":"media/fair4rs_I.png"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Input and output both needs to meet community standards"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" e.g. file formats, data models, ontologies "}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"References to external objects should be unambiguous"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" use URLs, DOIs, version numbers etc. "}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nAs with data, interoperability refers partly to formats and standards (in this case: inputs, outputs, or other objects used). For example CSV, JSON, and XML are interoperable formats, while PDF is not.\nThese standards may also be domain-specific, such as the use of ontologies in the life sciences."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The second sub-principle refers to the use of unambiguous references to external objects, such as libraries, data, or models. A clear link allows the right object to be used by the software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"reusability"},"children":[{"type":"text","value":"Reusability"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"FAIR4RS Reusability","src":"media/fair4rs_R.png"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Include a software-specific license"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":"as a file called "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"LICENSE"}]},{"type":"text","value":" in the project's root"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Many Open Source software licenses exist"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" see "},{"type":"element","tag":"a","props":{"href":"https://choosealicense.com/","rel":["nofollow"]},"children":[{"type":"text","value":"choosealicense.com"}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"License choice is not always straightforward"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" confirm with dependencies, copyright holder(s), and specialists "}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Use version control (e.g. Git) with a public host (e.g. GitHub)"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" history and provenance is a public part of the repository "}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Dependencies should be listed, and unambiguous"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" use a standardized file/protocol, and version numbers"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nLicenses are an important part of reusability.\nWithout a license, copyright disallows reuse.\nIn an open science context especially, Open Source licenses are the default choice.\nThey are numerous, but the choice is not always straightforward.\nIt is advised to learn about the different licenses, about important considerations (e.g. dependencies and the role and identity of copyright holders) and to consult with specialists when in doubt."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"fair-is-not-a-quality-checklist"},"children":[{"type":"text","value":"FAIR is not a quality checklist"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software quality is addressed insofar as it affects:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"usability, an aspect of interoperability"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"maintainability, an important element of reuse"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Quality aspects "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" part of FAIR:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"computational efficiency                                             "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"functional correctness"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"security"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"..."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe FAIR principles are limited in scope when it comes to software.\nIt is important to realize that their primary goal is not to address software quality itself.\nFAIR software can be of poor quality, and good quality software may not be FAIR."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Some quality aspects are addressed by FAIR, in particular usability and maintainability.\nBecause software is dynamic and interdependent, its reusability requires that it is maintained to continue to work (or that a conserved context is provided, such as a virtual machine with required dependencies)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Secondary to maintainability are quality aspects like tests, modularized architecture, developer documentation, and so on."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Interoperable software is usable by others, and therefore it is important that it is well documented and that it is easy to install and run.\nThis ties into quality aspects like user documentation, installation instructions, and so on."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note though, that there is no mention of correctness, nor of efficiency or security.\nSoftware may adhere perfectly to FAIR, yet produce the wrong results, in a painfully slow and inefficient process, while leaking personal information."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"fair-is-a-spectrum"},"children":[{"type":"text","value":"FAIR is a spectrum"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/spectrum.png","width":"60%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"FAIR is not a checklist, but a set of principles.\nAs such, it informs a spectrum of software sustainability, and not a binary \"FAIR or not FAIR\"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"FAIR is not a perfect metric, but it is helpful, and tailored to specific values of open science."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"take-home-messages"},"children":[{"type":"text","value":"Take home messages"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is an important part of research"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"FAIR4RS principles guide towards accessibility and openness of research software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"FAIR is not a quality checklist"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software places unique demands on FAIR, and provides unique opportunities"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"FAIRness is a spectrum"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"ceci-nest-pas-une-photo","depth":2,"text":"Ceci n'est pas une photo"},{"id":"the-fair-principles","depth":2,"text":"The FAIR principles"},{"id":"software-is-not-data","depth":2,"text":"Software is not data"},{"id":"software-opportunities","depth":2,"text":"Software opportunities"},{"id":"findability","depth":2,"text":"Findability"},{"id":"accessibility","depth":2,"text":"Accessibility"},{"id":"interoperability","depth":2,"text":"Interoperability"},{"id":"reusability","depth":2,"text":"Reusability","children":[{"id":"fair-is-not-a-quality-checklist","depth":3,"text":"FAIR is not a quality checklist"}]},{"id":"fair-is-a-spectrum","depth":2,"text":"FAIR is a spectrum"},{"id":"take-home-messages","depth":2,"text":"Take home messages"}]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:slides-fairsoftware.pmd","_source":"local_fs","_file":"modules/fairsoftware/slides-fairsoftware.pmd","_extension":"pmd"},{"_path":"/modules/hpc","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"High Performance Computing (HPC)","description":"","id":4,"trl":"medium","category":"Upcoming (under construction)","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"high-performance-cluster-hpc"},"children":[{"type":"text","value":"High Performance Cluster (HPC)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"high-performance-cluster-hpc","depth":2,"text":"High Performance Cluster (HPC)"}]}},"_type":"markdown","_id":"local_fs:modules:hpc:index.md","_source":"local_fs","_file":"modules/hpc/index.md","_extension":"md"},{"_path":"/modules/hpc/info","_dir":"hpc","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:hpc:info.md","_source":"local_fs","_file":"modules/hpc/info.md","_extension":"md"},{"_path":"/modules/licenses/copyright","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"Copyright and software","description":"","type":"reading","order":2,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"copyright-and-software"},"children":[{"type":"text","value":"Copyright and software"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Creative works, like books, paintings and music, but also scientific articles and software, are covered by copyright. Copyright is a legal construct that gives the owner of the copyright on a work the exclusive right to reproduce, modify, publicly perform and distribute the work. As a result, anyone who is not the copyright holder needs to have permission from the copyright holder to also be able to do so."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Newly created works are automatically covered by copyright. This copyright is owned by the creator of the work, unless they were employed and created the work as part of their employment, in which case their employer owns the work. If multiple persons or organisations contribute to a work, then they each own a share of the copyright, and all need to give permission for others to be able to do any of the things protected by copyright. This permission is called a "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"license"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Creative works can depend on each other. Books for example can be translated, or turned into a stage play or a TV series. This creates a new work, which is known as a derivative work. A derivative work has its own copyright, because creating a translation or adaptation is itself a creative process. Like in a collaborative work, both the owner of the original copyright and the owner of the copyright on the derived adaptation need to give permission to reproduce and distribute the derived work."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is a bit different from books or films or even databases because software is not only a collection of words and symbols, but also a machine that is used for something. As a result, working processes around software are quite different from those around books or films. Although it's bad practice, researchers quite often take a script from a colleague and modify it a bit so that it does what they want. A film director would be surprised indeed if you suggested they take a script from an existing film, change the dialog in the third act a bit, and then shoot it, but in software that's common. No novelist downloads ready-made paragraphs and chapters from the Internet and glues them together into a novel, but this is essentially how all modern software is developed."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As a result, software and copyright is a bit of a specialist topic, but one that cannot be avoided because of the automatic nature of copyright and the fact that science is a collaborative enterprise. Universities therefore need a policy to govern what their employees should do and can't do with respect to the software they develop and use, and that policy needs to include something specifically about licensing software."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"copyright-and-software","depth":2,"text":"Copyright and software"}]}},"_type":"markdown","_id":"local_fs:modules:licenses:copyright.md","_source":"local_fs","_file":"modules/licenses/copyright.md","_extension":"md"},{"_path":"/modules/licenses/ex_choose_a_license","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"Choose a license for or using your policy","description":"","type":"exercise","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"exercise-1-choose-a-license-for-or-using-your-policy-10-minutes"},"children":[{"type":"text","value":"Exercise 1: Choose a license for or using your policy (10 minutes)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One of the concerns typically addressed in a software policy is licensing of software developed at the institution. Policies can choose a single license, or offer a range of options."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Try to find out whether your university has a license policy. What does it say about which license(s) to use? If you don't have a policy yet, which license(s) would you choose for your policy? Why?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Go to "},{"type":"element","tag":"a","props":{"href":"https://choosealicense.com","rel":["nofollow"]},"children":[{"type":"text","value":"Choosealicense.com"}]},{"type":"text","value":" and play around with the options to help you choose."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"exercise-1-choose-a-license-for-or-using-your-policy-10-minutes","depth":2,"text":"Exercise 1: Choose a license for or using your policy (10 minutes)"}]}},"_type":"markdown","_id":"local_fs:modules:licenses:ex_choose_a_license.md","_source":"local_fs","_file":"modules/licenses/ex_choose_a_license.md","_extension":"md"},{"_path":"/modules/licenses/ex_have_licensing_policy","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"Does your university have a software licensing policy?","description":"","type":"exercise","order":6,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"exercise-2-does-your-university-have-a-software-licensing-policy"},"children":[{"type":"text","value":"Exercise 2: Does your university have a software licensing policy?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Try and find out whether your university has a software (licensing) policy. If you can find it, compare it with the ones from "},{"type":"element","tag":"a","props":{"href":"https://zenodo.org/record/4629662","rel":["nofollow"]},"children":[{"type":"text","value":"TU Delft"}]},{"type":"text","value":", "},{"type":"element","tag":"a","props":{"href":"https://zenodo.org/records/7307162","rel":["nofollow"]},"children":[{"type":"text","value":"ASTRON"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"https://www.esciencecenter.nl/wp-content/uploads/2020/05/nlesc_ip_policy_2017.pdf","rel":["nofollow"]},"children":[{"type":"text","value":"the Netherlands eScience Center"}]},{"type":"text","value":". What elements are commonly found? Which differences do you see, and what is their respective motivation?"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"exercise-2-does-your-university-have-a-software-licensing-policy","depth":2,"text":"Exercise 2: Does your university have a software licensing policy?"}]}},"_type":"markdown","_id":"local_fs:modules:licenses:ex_have_licensing_policy.md","_source":"local_fs","_file":"modules/licenses/ex_have_licensing_policy.md","_extension":"md"},{"_path":"/modules/licenses/ex_licenses_in_use","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"What licenses do researchers at your university use?","description":"","type":"exercise","order":7,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"exercise-3-what-licenses-do-researchers-at-your-university-use"},"children":[{"type":"text","value":"Exercise 3: What licenses do researchers at your university use?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Search on "},{"type":"element","tag":"a","props":{"href":"https://github.com/","rel":["nofollow"]},"children":[{"type":"text","value":"GitHub"}]},{"type":"text","value":" or other software repositories for software created by researchers at your university. What licenses do they use? Do they adhere to a policy (if there is one?)"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"exercise-3-what-licenses-do-researchers-at-your-university-use","depth":2,"text":"Exercise 3: What licenses do researchers at your university use?"}]}},"_type":"markdown","_id":"local_fs:modules:licenses:ex_licenses_in_use.md","_source":"local_fs","_file":"modules/licenses/ex_licenses_in_use.md","_extension":"md"},{"_path":"/modules/licenses","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software licenses","description":"thumbnail-licenses","id":5,"trl":"high","category":"Reusability","author":"eScience Center","thumbnail":"thumbnail-licenses.jpg","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/laptop-compute-displaying-command-prompt-vII7qKAk-9A?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-licenses"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@disruptxn?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Desola Lanre-Ologun"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/laptop-compute-displaying-command-prompt-vII7qKAk-9A?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:licenses:index.md","_source":"local_fs","_file":"modules/licenses/index.md","_extension":"md"},{"_path":"/modules/licenses/info","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the Software Licenses module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the Software Licenses module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:licenses:info.md","_source":"local_fs","_file":"modules/licenses/info.md","_extension":"md"},{"_path":"/modules/licenses/licenses","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"Software licenses","description":"","type":"reading","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"software-licenses"},"children":[{"type":"text","value":"Software licenses"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software licenses are legal statements that give permission to use, modify and/or distribute software. By copyright law, only the copyright owner(s) can give this permission, so the license must be granted by those owners."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are different kinds of software licenses, with different underlying business models. Some software producers sell copies or seats, where the user has to pay for each computer that the software is used on or person the software is used by, and where the user does not have permission to modify or distribute the software. In this case, licenses are given to individual users or companies as part of a sales contract."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It is also possible to make a general statement that anyone can use, modify and/or distribute a software package under certain conditions. In this case, there is no contract, and no specific counterparty. Instead, the owners of the copyright give the same permissions to everyone, usually in a document included with the software as it is put on the Internet. Software distributed like this can usually be downloaded without paying, although there may still be significant limitations on what you can do with it."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Some software is distributed with a license that gives very broad permissions to anyone who obtains a copy. Such software is known as Free Software and/or Open Source Software. Before we look at what that is exactly, it helps to understand a bit better what software actually is, and how it's made."}]},{"type":"element","tag":"h3","props":{"id":"what-is-software"},"children":[{"type":"text","value":"What is software?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To non-programmers, software can appear to be a somewhat magical thing. It is in our computers and phones and it makes them work, or sometimes not work. It's made by specialist people who we call programmers, and who must be very smart to be able to make all this work, or perhaps very dumb given how often software doesn't work. In short, it seems to be mysterious."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Of course, programmers are perfectly ordinary people. They make the software that makes our phones and computers work, and sometimes programmers make mistakes, and then the software doesn't work as intended. Computer programs are made by typing text into the computer, just like you do when writing an email or a letter. Computer programs consist of one or more files with instructions for the computer. These files can be modified to change what the software does, they can be combined together into a larger, more complex program, and they can be shared with others and reused. For the computer to be able to run the software, the files need to be translated from the human-readable text form (the "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"source code"}]},{"type":"text","value":") into a sequence of numbers encoding the same commands (a "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"binary"}]},{"type":"text","value":"). This is done mechanically by a special program called a compiler or an interpreter."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are different ways of making software collaboratively. One is to work closely together (even sharing a computer!) on the same source code, which can help reduce mistakes as two see more than one, or it can be useful as a teaching exercise. Looser ways of collaborating include copying someone else's code and then independently modifying it to do something a bit different, and reusing a software component made by someone else in your own program, usually in its original form but possibly with changes as well."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The looser forms of collaboration rely on software being distributed from its maker to its user, who then modifies it or integrates it. This requires permission from the copyright owners because there's distribution and the creation of a derivative work, which means that there needs to be a license. A reliable and easy way to do this is to make all the software Free and Open Source."}]},{"type":"element","tag":"h3","props":{"id":"free-and-open-source-software"},"children":[{"type":"text","value":"Free and Open Source Software"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The Free Software Foundation lists four freedoms that users need to be given by the copyright owner(s) for a program to be considered Free Software:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The freedom to run the program as you wish, for any purpose."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The freedom to study how the program works, and change it, so it does your computing as you wish. Access to the source code is a precondition for this."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The freedom to redistribute copies so you can help others."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. Access to the source code a precondition for this."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note that the word \"free\" here refers to freedom to do things, not to what the software costs. You're allowed to sell copies of Free Software!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open Source Software has an official definition too, which is quite a bit longer but boils down to the same thing. Because of that, the terms are often combined into Free and Open Source Software, or FOSS, but the term Open Source is also popular. We will use them here interchangeably."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can make a software package that you own the copyright to Open Source by distributing it (usually on the Internet) under an Open Source license, i.e. one that gives everyone the above freedoms. In practice, that means that the software is distributed in source code form, with a license document stating that the copyright owners give everyone the freedom to do the above things, subject to certain conditions. There exist a small number of standard Open Source licenses that you can use. All of these are open source, but there are some difference as well that are good to know about."}]},{"type":"element","tag":"h3","props":{"id":"license-categories"},"children":[{"type":"text","value":"License categories"}]},{"type":"element","tag":"table","props":{},"children":[{"type":"text","value":"\n "},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{"align":"center"},"children":[{"type":"text","value":"\n "},{"type":"element","tag":"th","props":{"colSpan":"3"},"children":[{"type":"text","value":"Free and Open Source"}]},{"type":"text","value":"\n "},{"type":"element","tag":"th","props":{"rowSpan":3,"vAlign":"top"},"children":[{"type":"text","value":"Proprietary"}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "},{"type":"element","tag":"tr","props":{"align":"center"},"children":[{"type":"text","value":"\n "},{"type":"element","tag":"th","props":{"colSpan":"2"},"children":[{"type":"text","value":"Copyleft"}]},{"type":"text","value":"\n "},{"type":"element","tag":"th","props":{"rowSpan":2},"children":[{"type":"text","value":"Permissive"}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "},{"type":"element","tag":"tr","props":{"align":"center"},"children":[{"type":"text","value":"\n "},{"type":"element","tag":"th","props":{},"children":[{"type":"text","value":"Strong"}]},{"type":"text","value":"\n "},{"type":"element","tag":"th","props":{},"children":[{"type":"text","value":"Weak"}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "},{"type":"element","tag":"tr","props":{"align":"center"},"children":[{"type":"text","value":"\n "},{"type":"element","tag":"td","props":{},"children":[{"type":"text","value":"GPL"},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" AGPL"},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"2"}]}]},{"type":"text","value":"\n "},{"type":"element","tag":"td","props":{},"children":[{"type":"text","value":"LGPL"},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":" MPL"},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"4"}]}]},{"type":"text","value":"\n "},{"type":"element","tag":"td","props":{},"children":[{"type":"text","value":"BSD"},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" MIT"},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":" Apache"}]},{"type":"text","value":"\n "},{"type":"element","tag":"td","props":{},"children":[{"type":"text","value":"Research Only: No copying, No modification"}]},{"type":"text","value":"\n "}]}]}]},{"type":"element","tag":"div","props":{"className":["footnote"]},"children":[{"type":"text","value":"\n "},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"GPL: GNU General Public License "},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"AGPL: Affero General Public License "},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"LGPL: GNU Lesser General Public License "},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":" MPL: Mozilla Public License "},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" BSD: Berkeley Software Distribution "},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":" MIT: Massachusetts Institute of Technology\n"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The table above shows five of the most common FOSS licenses. They're organised in a hierarchystarting with the distinction between Free and Open Source on the one and, and proprietary software on the other. Proprietary software is software that isn't FOSS, which is to say that it has restrictions on use or modification or distribution. It's called proprietary because there is a proprietor or (copyright) owner, who has exclusive control over the software. For Open Source this is not the case: there is a copyright and it's owned by someone, but the license gives everyone else the same permissions they have and so they don't have exclusive control."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Within the category of Open Source licenses, we can distinguish Copyleft licenses and Permissive licenses. Permissive licenses give everyone permission to use, modify and distribute with no further restrictions other than perhaps requiring an acknowledgement that the software was used. In particular, permissive licenses allow the software to be used as a part of non-Open Source software, and for it to be redistributed without the source code, so that it cannot be inspected or modified anymore."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Copyleft licenses try to ensure that the software remains FOSS. You are free to distribute Open Source software that has a copyleft license, but you have to include the complete source code and distribute the modified or extended software under that same license. As a result, everyone who gets a copy of a version of the software and anything it's used in will be free to use, modify and distribute that product. Note that distribution isn't required, all common open source licenses allow making private modifications and not sharing them with anyone."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Weak copyleft licenses are intended for use with libraries, software components that are intended to be used by other programmers to build larger programs. A weak copyleft license applies copyleft to the library itself, but not to the larger program using the library. As a result, programmers using the library can distribute their part of the program without source code or the right to make modifications, as long as they do distribute the source for the library, including any modifications. Strong copyleft licenses require the entire program to be under the same strong copyleft license."}]},{"type":"element","tag":"h3","props":{"id":"license-politics"},"children":[{"type":"text","value":"License politics"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Besides the legal differences, there's a bit of a political difference between Free Software and Open Source, and between copyleft and permissive licenses, that is good to understand. Free Software adherents see everyone as a potential programmer, and believe that your computer isn't truly yours until you fully control what it does, which requires the ability to inspect and modify the software. They envision a world in which computer users collaboratively develop the software they use, sharing their improvements with each other. They therefore prefer copyleft licenses, because those ensure that as many software packages (and therefore, users) as possible are free."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open Source takes a more pragmatic approach in assuming that most software is made by a small cadre of software developers, often employed by companies, and that there are a potentially large number of end users that have neither the skills nor the inclination to change what their computer does. For these end users, having the source code is not useful, but the developers can often save some effort by working together on software that everyone needs. A permissive Open Source license makes that possible with a minimal amount of legal complexity. It also makes it easy to build commercial, proprietary products on top of the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"From the perspective of science, there's something to be said for each of these approaches. On the one hand, Free Software and copyleft matches the ideals of Open Science quite well. On the other hand, science and scientific software development is funded by society using public funds in the hopes that something useful will come out of it, and scientific papers are useless to most citizens. They want a product, which will be produced commercially, and that is a good match for the Open Source and permissive licensing model."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-licenses","depth":2,"text":"Software licenses","children":[{"id":"what-is-software","depth":3,"text":"What is software?"},{"id":"free-and-open-source-software","depth":3,"text":"Free and Open Source Software"},{"id":"license-categories","depth":3,"text":"License categories"},{"id":"license-politics","depth":3,"text":"License politics"}]}]}},"_type":"markdown","_id":"local_fs:modules:licenses:licenses.md","_source":"local_fs","_file":"modules/licenses/licenses.md","_extension":"md"},{"_path":"/modules/licenses/slides","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"Software Licensing","description":"","type":"slides","order":1,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-licensing"},"children":[{"type":"text","value":"Software Licensing"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"about-copyright"},"children":[{"type":"text","value":"About copyright"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Berne convention"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Owned by author or employer?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Can be licensed"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By the Berne convention, software is automatically protected by copyright when it is made. Depending on the country, protection lasts 50 years or more. The owner of the copyright is the only one who can copy, publish, and modify the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you make software as part of a job for an employer, then your employer owns the copyright. Otherwise, you are the owner (unless there's a contract somewhere that says otherwise)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The owner of the copyright on a work can give permission to others to do things they would otherwise not be allowed to do, like copying, publishing and modifying the work. A document that describes what they can do is called a copyright license. These licenses can be given to a specific party, usually as part of a contract, or they can be offered to the general public."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"using-others-software"},"children":[{"type":"text","value":"Using others' software"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You need a license"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Open Source makes that easy"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Different Open Source licenses available"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To use software that was made by someone else, you need to (at least) get a copy of it, and that requires permission from the copyright owner, i.e. a license. If the software has an Open Source license, then you have permission to get a copy and run it for any purpose, including commercially, and/or use it in your own software. There will be some conditions attached, which depend on the particular license used."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are a handful of Open Source licenses available, with different terms. Those differences are especially important when you use a package or library in your own software. There are websites available that explain all the standard Open Source licenses in ordinary language, so that you can easily decide whether you can use a certain software package. You don't need to be (or have) a lawyer to use Open Source software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"who-owns-a-work"},"children":[{"type":"text","value":"Who owns a work?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Work for hire"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Consortium agreements"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"University policy"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In most countries, including The Netherlands, any work you do as part of your tasks as an employee of an organisation belongs to your employer, not to you. After all, they're paying you to do the work. This means that the copyright on any software written by a university employee is owned by to the university. And that means that anyone not working at that university (which may include said employee in the future!) needs permission from the owner to work with the code."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Some limited permission is often granted in the Consortium Agreements typically governing scientific project(s), but these are only valid within the project. To make the software available outside of the project it was developed in, broader permissions must be given. Some universities have a policy on how and under which conditions this can be done; details can typically be had from the library or legal department."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"why-license-your-software"},"children":[{"type":"text","value":"Why license your software?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Public funding"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Academic freedom of employees"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Save work by collaborating"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Increase impact"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If a scientist working at a university, in the course of doing their job, creates software, then that software is owned by the university. By default then, it can only be used by that university and its employees. This is an undesirable situation for several reasons."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"First, the software was most likely funded with public money, and should therefore be available to the public, just like papers are published Open Access."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Second, researchers frequently change jobs, moving from university to university. Without permission from their previous employers, they would have to start rebuilding their software from scratch every time they move to a new university, which would be very inefficient."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Third, many of the most pressing problems that scientist work on involve complex, multifaceted systems that can only be properly studied in collaboration. Where software is involved, which is to say almost everywhere in academic research, researchers need to be able to exchange software and collaborate on its development, including across projects."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Finally, doing so will allow them to achieve better results, and continue to build on those results, thus achieving higher impact."}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"open-sourcing-scientific-software"},"children":[{"type":"text","value":"Open Sourcing scientific software"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Free, Open Source Software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Technology Transfer"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Free, Open Source Software (or FOSS, as it's sometimes abbreviated) is software that you are free to 0) use for any purpose, 1) modify to suit your needs, 2) share with others, and 3) share with changes you made, so you can work on it together. That's actually the Free Software definition, but Open Source really just says the same thing in more words, which is why they're usually mentioned together. These are exactly the permissions scientists need to be able to do science together using the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open Source licenses also allow commercial use, which means that they are a very effective means of technology transfer. Since the license terms are the same for everyone, there are no issues with state aid regulations, nor does a market-rate value for the software need to be determined. The standard Open Source licenses are now well understood and trusted by commercial parties, removing the need for complex negotiations on the exact terms. Of course, no payment will be received either. Given that commercial sale of academic software is very rare, it seems that the benefits obtained from the academic collaboration enabled by Open Source far outweigh the potential income loss due to not commercially licensing the software. And note that it is still perfectly possible to launch a spin-off or start-up that offers commercial services related to the software, including support and continued development."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-licensing","depth":2,"text":"Software Licensing"},{"id":"about-copyright","depth":2,"text":"About copyright"},{"id":"using-others-software","depth":2,"text":"Using others' software"},{"id":"who-owns-a-work","depth":2,"text":"Who owns a work?"},{"id":"why-license-your-software","depth":2,"text":"Why license your software?"},{"id":"open-sourcing-scientific-software","depth":2,"text":"Open Sourcing scientific software"}]}},"_type":"markdown","_id":"local_fs:modules:licenses:slides.pmd","_source":"local_fs","_file":"modules/licenses/slides.pmd","_extension":"pmd"},{"_path":"/modules/licenses/university_policy","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"University software policies","description":"","type":"reading","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"university-software-policies"},"children":[{"type":"text","value":"University software policies"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Universities employ researchers, who often create and use software in the course of doing research. That means that they create and use copyrighted works, activities governed by copyright law. Works created by employees as part of their work are normally owned by their employer. This is the default legally in many places, and is almost always stated in the employment contract as well. So, the university owns the software created by its employees, and because the employees also act on behalf of their employer, is responsible for any violations of copyright by their employees."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In practice, for example when submitting a paper to a journal, it is often assumed that scientists can transfer copyright ownership or otherwise give permission to the publisher to publish their work on behalf of the university, but strictly speaking there is usually no legal basis for this. Likewise, if scientists produce software as part of their scientific work, then that software is owned by the university, and publishing it as Open Source software, while often done, does not sit on solid legal footing."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sharing scientific software offers great possibilities for collaboration, sharing of resources, and increased impact of the scientific work as well as of the software itself. Universities are increasingly aware of this, and have created or are creating policies to guide how they create and use research software. In this module we'll look into the why, how and what of university software policies."}]},{"type":"element","tag":"h3","props":{"id":"why"},"children":[{"type":"text","value":"Why?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Ensure scientific software is properly licensed\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Including the software your employees use!"}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Increase collaboration"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Increase impact"}]}]},{"type":"element","tag":"h3","props":{"id":"how"},"children":[{"type":"text","value":"How?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Still in development"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"TU Delft"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Astron"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"NLeSC"}]}]},{"type":"element","tag":"h3","props":{"id":"what"},"children":[{"type":"text","value":"What?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software quality"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software development processes and tooling"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Adhering to others' licenses"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How to publish as Open Source"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Acceptable licenses"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Registering output"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Education of researchers in software development"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Acknowledge funding"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"university-software-policies","depth":2,"text":"University software policies","children":[{"id":"why","depth":3,"text":"Why?"},{"id":"how","depth":3,"text":"How?"},{"id":"what","depth":3,"text":"What?"}]}]}},"_type":"markdown","_id":"local_fs:modules:licenses:university_policy.md","_source":"local_fs","_file":"modules/licenses/university_policy.md","_extension":"md"},{"_path":"/modules/multimedia","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Multimedia","description":"","id":0,"trl":"medium","category":"Examples","author":"eScience Center","thumbnail":"multimedia_image.avif","visibility":"hidden","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"image-example"},"children":[{"type":"text","value":"Image example"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is the original image example. Which can be generated using the following chapter heading:"}]},{"type":"element","tag":"pre","props":{"className":["language-markdown"],"code":":::Chapter{headline=\"Image\" image=\"multimedia_image.avif\"}\n","language":"markdown","meta":""},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":":::Chapter{headline=\"Image\" image=\"multimedia_image.avif\"}\n"}]}]}]},{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"video-example"},"children":[{"type":"text","value":"Video example"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is a video hosted on youtube. You have to specify the youtube ID in the chapter header."}]},{"type":"element","tag":"pre","props":{"className":["language-markdown"],"code":":::Chapter{headline=\"Citation\" video=\"IuWVAv0AxXY\"}\n","language":"markdown","meta":""},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":":::Chapter{headline=\"Citation\" video=\"IuWVAv0AxXY\"}\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The youtube video ID can be found in the url of your youtube video, after the url tag \"v=\" (e.g. w"},{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"ww."}]},{"type":"text","value":"youtube.com/watch?v="},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"IuWVAv0AxXY"}]},{"type":"text","value":"). Note that any following ampersand (&) symbols mark the end of the ID."}]}]},{"type":"element","tag":"div","props":{},"children":[]},{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"website-example"},"children":[{"type":"text","value":"Website example"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can also embed a website... software support inception..."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It can be done by adding the website prop with the url to the chapter heading:"}]},{"type":"element","tag":"pre","props":{"className":["language-markdown"],"code":":::Chapter{headline=\"Website\" website=\"https://esciencecenter-digital-skills.github.io/software-support-essentials/\"}\n","language":"markdown","meta":""},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":":::Chapter{headline=\"Website\" website=\"https://esciencecenter-digital-skills.github.io/software-support-essentials/\"}\n"}]}]}]},{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"wide-markdown"},"children":[{"type":"text","value":"Wide Markdown"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This type of chapter is used for all markdown. The small left text panel becomes screen wide and there is no media panel. It can be done by adding the "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"widemd"}]},{"type":"text","value":" prop:"}]},{"type":"element","tag":"pre","props":{"className":["language-markdown"],"code":":::Chapter{headline=\"Wide Markdown\" widemd=1}\n","language":"markdown","meta":""},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":":::Chapter{headline=\"Wide Markdown\" widemd=1}\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Something has to be added in the widemd prop, 1 is generally a safe value. Note that 0 will not turn it off; the only way to disable "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"widemd"}]},{"type":"text","value":" is simply to remove the prop entirely."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An image can also be added here of course, as in any markdown. But do note that the path needs to be relative to the "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"static"}]},{"type":"text","value":" directory that lives in root of this project.\nBecause the image lives in "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"static/stories/_multimedia"}]},{"type":"text","value":", the path to the image on this page should read "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"stories/_multimedia/multimedia_image.avif"}]},{"type":"text","value":".\n"},{"type":"element","tag":"img","props":{"alt":"This is the same image as in the image chapter.","src":"stories/_multimedia/multimedia_image.avif"},"children":[]}]}]},{"type":"element","tag":"div","props":{},"children":[]},{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"wall-of-text"},"children":[{"type":"text","value":"Wall of Text"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel."}]}]},{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"no-chapter-type"},"children":[{"type":"text","value":"No Chapter Type"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When no chapter type (or a wrong one) is given in the header, the media panel shows an error message."}]},{"type":"element","tag":"pre","props":{"className":["language-markdown"],"code":":::Chapter{headline=\"Typeless\"}\n","language":"markdown","meta":""},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":":::Chapter{headline=\"Typeless\"}\n"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"image-example","depth":2,"text":"Image example"},{"id":"video-example","depth":2,"text":"Video example"},{"id":"website-example","depth":2,"text":"Website example"},{"id":"wide-markdown","depth":2,"text":"Wide Markdown"},{"id":"wall-of-text","depth":2,"text":"Wall of Text"},{"id":"no-chapter-type","depth":2,"text":"No Chapter Type"}]}},"_type":"markdown","_id":"local_fs:modules:multimedia:index.md","_source":"local_fs","_file":"modules/multimedia/index.md","_extension":"md"},{"_path":"/modules/multimedia/info","_dir":"multimedia","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:multimedia:info.md","_source":"local_fs","_file":"modules/multimedia/info.md","_extension":"md"},{"_path":"/modules/multimedia/media/presentation","_dir":"media","_draft":false,"_partial":false,"_locale":"","title":"First presentation, markdown demo","description":"Note: Here are some notes that should appear at the side.","body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"first-presentation-markdown-demo"},"children":[{"type":"text","value":"First presentation, markdown demo"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note: Here are some notes that should appear at the side."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"a-slide"},"children":[{"type":"text","value":"A slide"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Lorem ipsum dolor sit amet"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"consectetur adipiscing elit"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note: This will only appear in the speaker notes window."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"an-image"},"children":[{"type":"text","value":"An image"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"External Image","src":"https://s3.amazonaws.com/static.slid.es/logo/v2/slides-symbol-512x512.png"},"children":[]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"some-math"},"children":[{"type":"text","value":"Some math"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"\\[ J(\\theta_0,\\theta_1) = \\sum_{i=0} \\]"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note: Look at this great equation"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]},{"type":"element","tag":"hr","props":{},"children":[]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"a-slide","depth":2,"text":"A slide"},{"id":"an-image","depth":2,"text":"An image"},{"id":"some-math","depth":2,"text":"Some math"}]}},"_type":"markdown","_id":"local_fs:modules:multimedia:media:presentation.md","_source":"local_fs","_file":"modules/multimedia/media/presentation.md","_extension":"md"},{"_path":"/modules/notebooks","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Notebooks","description":"","id":6,"trl":"medium","category":"Upcoming (under construction)","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"notebooks"},"children":[{"type":"text","value":"Notebooks"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"notebooks","depth":2,"text":"Notebooks"}]}},"_type":"markdown","_id":"local_fs:modules:notebooks:index.md","_source":"local_fs","_file":"modules/notebooks/index.md","_extension":"md"},{"_path":"/modules/notebooks/info","_dir":"notebooks","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:notebooks:info.md","_source":"local_fs","_file":"modules/notebooks/info.md","_extension":"md"},{"_path":"/modules/organization","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software project organization","description":"","id":7,"trl":"high","category":"Upcoming (under construction)","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"software-project-organization"},"children":[{"type":"text","value":"Software project organization"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-project-organization","depth":2,"text":"Software project organization"}]}},"_type":"markdown","_id":"local_fs:modules:organization:index.md","_source":"local_fs","_file":"modules/organization/index.md","_extension":"md"},{"_path":"/modules/organization/info","_dir":"organization","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:organization:info.md","_source":"local_fs","_file":"modules/organization/info.md","_extension":"md"},{"_path":"/modules/publication/automating_software_publication","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Automating software publication","description":"Most of the steps in the modern software publishing pipeline can be automated.","type":"exercise","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"automating-software-publication"},"children":[{"type":"text","value":"Automating software publication"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Most of the steps in the modern software publishing pipeline can be automated."}]},{"type":"element","tag":"h3","props":{"id":"an-example-with-github-zenodo-integration"},"children":[{"type":"text","value":"An example with github-zenodo integration"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Choose a software repository on github that you own (either existing, or create a new one)."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Navigate to "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Log in with your zenodo account (create a new one if necessary)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Navigate to the \"GitHub\" tab, located in a drop-down menu under your username"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Follow the instructions there to link your GitHub account with Zenodo (if not already done)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Look through the list of repositories listed until you find the one you wanted to archive"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Flip the toggle on the right to \"ON\""}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Go back to your repository on github.com and make a new release. Zenodo will automatically archive this release."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Add the zenodo badge for your repository to the README file."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"an-example-with-github-zenodo-integration","depth":3,"text":"An example with github-zenodo integration"}]}},"_type":"markdown","_id":"local_fs:modules:publication:automating_software_publication.md","_source":"local_fs","_file":"modules/publication/automating_software_publication.md","_extension":"md"},{"_path":"/modules/publication/discussion","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Discussion","description":"","type":"reading","order":1,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"discussion"},"children":[{"type":"text","value":"Discussion"}]},{"type":"element","tag":"h2","props":{"id":"before-we-dive-in"},"children":[{"type":"text","value":"Before we dive in..."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What do you already know about software publication?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Discuss how you would publish a piece of software."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"before-we-dive-in","depth":2,"text":"Before we dive in..."}]}},"_type":"markdown","_id":"local_fs:modules:publication:discussion.md","_source":"local_fs","_file":"modules/publication/discussion.md","_extension":"md"},{"_path":"/modules/publication/ex_registries","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Find your registry","description":"Software registries are an important player in the findability of research software.\nA collection of software registries can be found here: Research Software Registries Awesome List","type":"exercise","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-find-your-registry"},"children":[{"type":"text","value":"Exercise: Find your registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software registries are an important player in the findability of research software.\nA collection of software registries can be found here: "},{"type":"element","tag":"a","props":{"href":"https://github.com/NLeSC/awesome-research-software-registries","rel":["nofollow"]},"children":[{"type":"text","value":"Research Software Registries Awesome List"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Choose a piece of research software that you know, or pick one of the packages in this list:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/xenon","rel":["nofollow"]},"children":[{"type":"text","value":"Xenon"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/esmvaltool","rel":["nofollow"]},"children":[{"type":"text","value":"ESMValTool"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/projects/rs-dat","rel":["nofollow"]},"children":[{"type":"text","value":"RS-DAT"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/haddock3","rel":["nofollow"]},"children":[{"type":"text","value":"Haddock"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://cjvanlissa.github.io/worcs/index.html","rel":["nofollow"]},"children":[{"type":"text","value":"worcs"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In teams:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Find out what the software is about if you don't already know."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Look by yourself (without looking at your team mates) in the "},{"type":"element","tag":"a","props":{"href":"https://github.com/NLeSC/awesome-research-software-registries","rel":["nofollow"]},"children":[{"type":"text","value":"Research Software Registries Awesome List"}]},{"type":"text","value":" for a registry that is suitable for your chosen piece of software."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Discuss with your partner(s) why you chose that registry."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Investigate the requirements for your chosen registry. What should the software and its documentation adhere to, to be added to the registry?"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:publication:ex_registries.md","_source":"local_fs","_file":"modules/publication/ex_registries.md","_extension":"md"},{"_path":"/modules/publication","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software publication","description":"thumbnail-publication\nPhoto by ThisisEngineering on Unsplash","id":8,"trl":"medium","category":"Publishing & Citing","author":"eScience Center","thumbnail":"thumbnail-publication.jpg","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/man-in-blue-and-white-checkered-button-up-shirt-sitting-beside-man-in-yellow-shirt-t4qI2IDcL5s?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-publication"}]},{"type":"text","value":"\nPhoto by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@thisisengineering?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"ThisisEngineering"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/man-in-blue-and-white-checkered-button-up-shirt-sitting-beside-man-in-yellow-shirt-t4qI2IDcL5s?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:publication:index.md","_source":"local_fs","_file":"modules/publication/index.md","_extension":"md"},{"_path":"/modules/publication/info","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the Software Publication module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the Software Publication module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:publication:info.md","_source":"local_fs","_file":"modules/publication/info.md","_extension":"md"},{"_path":"/modules/publication/reading","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Reading material","description":"Follow the links below to read more about software publication.","type":"reading","order":6,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"reading-material"},"children":[{"type":"text","value":"Reading material"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Follow the links below to read more about software publication."}]},{"type":"element","tag":"h3","props":{"id":"the-turing-way"},"children":[{"type":"text","value":"The Turing Way"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in the Turing Way about "},{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/communication/citable","rel":["nofollow"]},"children":[{"type":"text","value":"Making Research Objects Citable"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"code-refinery"},"children":[{"type":"text","value":"Code Refinery"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in CodeRefinery about "},{"type":"element","tag":"a","props":{"href":"https://coderefinery.github.io/social-coding/software-citation/","rel":["nofollow"]},"children":[{"type":"text","value":"Social coding and open software"}]}]},{"type":"element","tag":"h3","props":{"id":"peerj-computer-science"},"children":[{"type":"text","value":"PeerJ Computer Science"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read this interesting article about "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.7717/peerj-cs.86","rel":["nofollow"]},"children":[{"type":"text","value":"Software citation principles"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-turing-way","depth":3,"text":"The Turing Way"},{"id":"code-refinery","depth":3,"text":"Code Refinery"},{"id":"peerj-computer-science","depth":3,"text":"PeerJ Computer Science"}]}},"_type":"markdown","_id":"local_fs:modules:publication:reading.md","_source":"local_fs","_file":"modules/publication/reading.md","_extension":"md"},{"_path":"/modules/publication/slides-publication","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Publishing Software","description":"","type":"slides","order":2,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h1","props":{"id":"publishing-software"},"children":[{"type":"text","value":"Publishing Software"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"what-do-we-mean-by-publishing"},"children":[{"type":"text","value":"What do we mean by publishing?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Publishing the "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"software itself"}]},{"type":"text","value":" (not just publishing an article "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"about"}]},{"type":"text","value":" it)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"There are many ways to do this"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This generally means the source code itself, ideally including instructions on how to use it, what dependencies it has on other software, etc."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The goal is to allow others to find and use your code, if they so wish, without extreme levels of difficulty."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"why-publish"},"children":[{"type":"text","value":"Why Publish?"}]},{"type":"element","tag":"h3","props":{"id":"major-scientific-considerations"},"children":[{"type":"text","value":"Major scientific considerations"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Citability"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reproducibility"}]}]},{"type":"element","tag":"h3","props":{"id":"fairness"},"children":[{"type":"text","value":"FAIRness"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"/modules/fairsoftware/media/fair.png","width":"40%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Citability - Allows the software authors to get credit for their work\nReproducibility - If software is not published anywhere then few people will successfully reproduce analyses, simulations or other research results that were performed by other researchers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Additionally, publishing is essential for meeting the FAIR principles:\nFindability - if software lives on someone's harddrive then it cannot be easily found by anyone\nAccessibility - the software can e.g. be downloaded and installed using a standard protocol (authentication is still a possibility)\nInteroperability - publishing the dependencies (e.g. software libraries) and input/output formats and versions is necessary for interoperability\nReusability - it's only reusable if it's available, and if people know what they are allowed to do with it (based on its software license)"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"traditional-publishing-pipeline"},"children":[{"type":"text","value":"Traditional publishing pipeline"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Write some code and leave it on your harddrive"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Generate scientific results with it"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Write a paper about those results"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Possibly not even mentioning the software at all"}]}]},{"type":"element","tag":"h3","props":{"id":"consequences"},"children":[{"type":"text","value":"Consequences"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The software itself is not citable"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Methods are not easily reproduced or even analysed"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Nobody else can build on top of your research"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"modern-publishing-pipeline"},"children":[{"type":"text","value":"Modern publishing pipeline"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software repository"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Tag/semantic versioning"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Get a persistent identifier"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Registries"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software Paper"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"software-repository"},"children":[{"type":"text","value":"Software repository"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Put all source files in a public version-controlled repository\ne.g. github, gitlab"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is immediately Findable"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Naturally contains a log of all development history"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Include a software license, and a citation.cff file"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"See license, citation and software management chapters"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"software-repository-1"},"children":[{"type":"text","value":"Software repository"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Which one?\n"},{"type":"element","tag":"img","props":{"src":"media/repository_logos.png","width":"80%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Anything is better than nothing. Gitlab and Github are the mainstream, used by many and with lots of features. You might run into projects using other repositories."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"tagsemantic-versioning"},"children":[{"type":"text","value":"Tag/semantic versioning"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It is important to communicate the actual version of the software used for a particular piece of research"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your software is used as a dependency of another software/workflow then specific versions can be referenced"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Ideally, use \"semantic versioning\" in the form MAJOR.MINOR.PATCH (e.g. v2.1.5)"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"get-a-persistent-identifier"},"children":[{"type":"text","value":"Get a Persistent Identifier"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Specific versions of the software should be published to an archiving service that provides persistent identifiers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, Zenodo is a long term archiving service for scientific data and software.\nZenodo will assign a DOI to the published data, making it citable"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"See Citation story"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"registries"},"children":[{"type":"text","value":"Registries"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Add a link to your software on a relevant public registry"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"For example, the eScience Center maintains the Research Software Directory"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Can also be domain specific software registries"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Or even list it on awesomelist"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This aids greatly in Findability by relevant researchers"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"software-paper"},"children":[{"type":"text","value":"Software Paper"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Publish a journal article about the software specifically"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Journal of Research Software (JORS)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Journal of Open Source Software (JOSS)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"SoftwareX"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"CRAN"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Some journals perform peer review of the software in question"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"automate-as-many-steps-as-possible"},"children":[{"type":"text","value":"Automate as many steps as possible!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you can automate archiving on Zenodo by linking it to your github account"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"See instructions in the \"Automating software publication\" tab of this story"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"what-do-we-mean-by-publishing","depth":2,"text":"What do we mean by publishing?"},{"id":"why-publish","depth":2,"text":"Why Publish?","children":[{"id":"major-scientific-considerations","depth":3,"text":"Major scientific considerations"},{"id":"fairness","depth":3,"text":"FAIRness"}]},{"id":"traditional-publishing-pipeline","depth":2,"text":"Traditional publishing pipeline","children":[{"id":"consequences","depth":3,"text":"Consequences"}]},{"id":"modern-publishing-pipeline","depth":2,"text":"Modern publishing pipeline","children":[{"id":"software-repository","depth":3,"text":"Software repository"},{"id":"software-repository-1","depth":3,"text":"Software repository"},{"id":"tagsemantic-versioning","depth":3,"text":"Tag/semantic versioning"},{"id":"get-a-persistent-identifier","depth":3,"text":"Get a Persistent Identifier"},{"id":"registries","depth":3,"text":"Registries"},{"id":"software-paper","depth":3,"text":"Software Paper"}]},{"id":"automate-as-many-steps-as-possible","depth":2,"text":"Automate as many steps as possible!"}]}},"_type":"markdown","_id":"local_fs:modules:publication:slides-publication.pmd","_source":"local_fs","_file":"modules/publication/slides-publication.pmd","_extension":"pmd"},{"_path":"/modules/publication/software_publication_pipeline","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Software publication pipeline","description":"","type":"reading","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"software-publication-pipeline"},"children":[{"type":"text","value":"Software publication pipeline"}]},{"type":"element","tag":"h2","props":{"id":"steps"},"children":[{"type":"text","value":"Steps"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It is recommended that all steps in the pipeline are followed, but they are not dependent on each other. In this pipeline we provide resources to achieve the whole pipeline using GitHub or GitLab for hosting the source code"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software repository"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Tag/semantic versioning"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Get a persistent identifier"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Registries"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software Paper"}]}]},{"type":"element","tag":"h2","props":{"id":"software-repository"},"children":[{"type":"text","value":"Software repository"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If possible, during the development of Research Software, changes should be tracked using dedicated version control software like "},{"type":"element","tag":"a","props":{"href":"https://git-scm.com/","rel":["nofollow"]},"children":[{"type":"text","value":"git"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Put all source files in a public version-controlled repository, preferably GitHub or GitLab. Both GitHub and Gitlab provide online repositories for hosting source code. As can be inferred from their names, they were designed to be used together with Git version control. The nice thing about using git together with GitHub and GitLab is that it stores the complete history of changes to the source code, rather than just a single version ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A quickstart tutorial for..."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://docs.github.com/en/get-started/quickstart/create-a-repo","rel":["nofollow"]},"children":[{"type":"text","value":"GitHub"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://docs.gitlab.com/ee/user/project/index.html","rel":["nofollow"]},"children":[{"type":"text","value":"GitLab"}]}]}]},{"type":"element","tag":"h2","props":{"id":"versions-tags-and-releases"},"children":[{"type":"text","value":"Versions, tags and releases"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Every time software changes, and that history is stored, that can be considered a new "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"version"}]},{"type":"text","value":" of the software. It is useful to add special identifiers, called "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"tags"}]},{"type":"text","value":" to new versions that mark significant changes, so that specific versions of your software can be cited or referenced as dependency by other software. If you use git for version control, you can "},{"type":"element","tag":"a","props":{"href":"https://git-scm.com/book/en/v2/Git-Basics-Tagging","rel":["nofollow"]},"children":[{"type":"text","value":"create tags in git"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It is good practice to use "},{"type":"element","tag":"strong","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://semver.org/","rel":["nofollow"]},"children":[{"type":"text","value":"semantic versioning"}]}]},{"type":"text","value":" to tag the software. In this way, information about the impact of the change from one version to the next is stored in the tag. Usually, tagged versions of the software are opened up to the public in a "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"software release"}]},{"type":"text","value":", together with updated documentation and a documentation of the changes since the previous release in a so called "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"changelog"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The documentation of creating releases..."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://docs.github.com/en/repositories/releasing-projects-on-github","rel":["nofollow"]},"children":[{"type":"text","value":"on GitHub"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://docs.gitlab.com/ee/user/project/releases/","rel":["nofollow"]},"children":[{"type":"text","value":"on GitLab"}]}]}]},{"type":"element","tag":"h2","props":{"id":"get-a-persistent-identifier"},"children":[{"type":"text","value":"Get a persistent identifier"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Specific versions of the software should be published to an archiving service that provides persistent identifiers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, "},{"type":"element","tag":"a","props":{"href":"https://zenodo.org/","rel":["nofollow"]},"children":[{"type":"text","value":"Zenodo"}]},{"type":"text","value":" is a long term archiving service for scientific data and software.\nZenodo will assign a DOI to the published data, making it citable."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Documentation on how to integrate Zenodo with your repository..."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://docs.github.com/en/repositories/archiving-a-github-repository/referencing-and-citing-content","rel":["nofollow"]},"children":[{"type":"text","value":"on GitHub"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://gitlab.com/sbeniamine/gitlab2zenodo","rel":["nofollow"]},"children":[{"type":"text","value":"on Gitlab"}]}]}]},{"type":"element","tag":"h2","props":{"id":"registries"},"children":[{"type":"text","value":"Registries"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To improve findability of the software, it should be shared in "},{"type":"element","tag":"a","props":{"href":"https://github.com/NLeSC/awesome-research-software-registries","rel":["nofollow"]},"children":[{"type":"text","value":"existing software registries"}]},{"type":"text","value":". Preferably, software is added to a registry specific to the domain and/or programming language. Software can be shared in multiple registries if they are relevant to the software."}]},{"type":"element","tag":"h2","props":{"id":"software-paper"},"children":[{"type":"text","value":"Software Paper"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A major, but also optional step is to publish a journal article about the software specifically in a dedicated software journal. Some examples are:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://openresearchsoftware.metajnl.com/","rel":["nofollow"]},"children":[{"type":"text","value":"Journal of Open Research Software (JORS)"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://joss.theoj.org/","rel":["nofollow"]},"children":[{"type":"text","value":"Journal of Open Source Software (JOSS)"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://www.softxjournal.com/","rel":["nofollow"]},"children":[{"type":"text","value":"SoftwareX"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://www.software.ac.uk/top-tip/which-journals-should-i-publish-my-software","rel":["nofollow"]},"children":[{"type":"text","value":"Check this extensive list of software journals"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note that this is different than other scientific journal publications in that the publication should be focussing on the software and its features and not on any particular research results. However, research projects in which the software plays a crucial role can of course be mentioned as use cases."}]},{"type":"element","tag":"h2","props":{"id":"communication-and-outreach"},"children":[{"type":"text","value":"Communication and outreach"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Once software is released, it is often a good idea to spend some time on communication and outreach to potential users of the software. In this way the world will get to know your software. This can be in many forms:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Blogposts"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Organisational/institutional newsletters"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Conference presentations/posters"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Etc."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"steps","depth":2,"text":"Steps"},{"id":"software-repository","depth":2,"text":"Software repository"},{"id":"versions-tags-and-releases","depth":2,"text":"Versions, tags and releases"},{"id":"get-a-persistent-identifier","depth":2,"text":"Get a persistent identifier"},{"id":"registries","depth":2,"text":"Registries"},{"id":"software-paper","depth":2,"text":"Software Paper"},{"id":"communication-and-outreach","depth":2,"text":"Communication and outreach"}]}},"_type":"markdown","_id":"local_fs:modules:publication:software_publication_pipeline.md","_source":"local_fs","_file":"modules/publication/software_publication_pipeline.md","_extension":"md"},{"_path":"/modules/researchsoftware/exercise-is-it-research-software","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"Is it research software?","description":"","type":"exercise","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"exercise-is-it-research-software"},"children":[{"type":"text","value":"Exercise: Is it research software?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Using the definition of research software from the FAIR4RS working group, try to classify the following as \"research software\" or \"software in research\""}]},{"type":"element","tag":"h3","props":{"id":"example-software-tools"},"children":[{"type":"text","value":"Example software tools"}]},{"type":"element","tag":"h4","props":{"id":"shape-preserving-local-histogram-modification-algorithm"},"children":[{"type":"text","value":"Shape Preserving Local Histogram Modification Algorithm"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5201/ipol.2018.236","rel":["nofollow"]},"children":[{"type":"text","value":"An Analysis and Implementation of the Shape Preserving Local Histogram Modification Algorithm"}]},{"type":"text","value":" is a published article on "},{"type":"element","tag":"a","props":{"href":"https://www.ipol.im/","rel":["nofollow"]},"children":[{"type":"text","value":"IPOL"}]},{"type":"text","value":". The source code implementing the algorithm is available for download."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Is this \"research software\" or \"software in research\"?"}]},{"type":"element","tag":"h4","props":{"id":"scipy"},"children":[{"type":"text","value":"SciPy"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://zbmath.org/software/6293","rel":["nofollow"]},"children":[{"type":"text","value":"SciPy"}]},{"type":"text","value":" is open-source software for mathematics, science, and engineering.\nIt is also the name of a very popular conference on scientific programming with Python. The SciPy library depends on NumPy, which provides convenient and fast N-dimensional array manipulation.\nThe SciPy library is built to work with NumPy arrays, and provides many user-friendly and efficient numerical routines such as routines for numerical integration and optimization.\nTogether, they run on all popular operating systems, are quick to install, and are free of charge.\nNumPy and SciPy are easy to use, but powerful enough to be depended upon by some of the world’s leading scientists and engineers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Is this \"research software\" or \"software in research\"?"}]},{"type":"element","tag":"h3","props":{"id":"other-software-tools"},"children":[{"type":"text","value":"Other software tools"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"How about other software tools you are familiar with?\nCan you provide an example of software you are familiar with, and then classify it as \"research software\" or \"software in research\"?"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"exercise-is-it-research-software","depth":2,"text":"Exercise: Is it research software?","children":[{"id":"example-software-tools","depth":3,"text":"Example software tools"},{"id":"other-software-tools","depth":3,"text":"Other software tools"}]}]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:exercise-is-it-research-software.md","_source":"local_fs","_file":"modules/researchsoftware/exercise-is-it-research-software.md","_extension":"md"},{"_path":"/modules/researchsoftware/exercise-research-life-cycle","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"Where does software fit in the research life cycle?","description":"","type":"exercise","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"exercise-where-does-software-fit-in-the-research-life-cycle"},"children":[{"type":"text","value":"Exercise: Where does software fit in the research life cycle?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Take a look at the research life cycle below."}]},{"type":"element","tag":"img","props":{"src":"stories/_fairsoftware/researchcycle.png","alt":"The Research Life Cycle","width":400},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Think of a piece of research software you have used or developed."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Where does it fit in the research life cycle?"}]},{"type":"element","tag":"h3","props":{"id":"existing-software"},"children":[{"type":"text","value":"Existing software"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The following research software can also be used as examples:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/xenon","rel":["nofollow"]},"children":[{"type":"text","value":"Xenon"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/esmvaltool","rel":["nofollow"]},"children":[{"type":"text","value":"ESMValTool"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/projects/rs-dat","rel":["nofollow"]},"children":[{"type":"text","value":"RS-DAT"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/haddock3","rel":["nofollow"]},"children":[{"type":"text","value":"Haddock"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://cjvanlissa.github.io/worcs/index.html","rel":["nofollow"]},"children":[{"type":"text","value":"worcs"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"exercise-where-does-software-fit-in-the-research-life-cycle","depth":2,"text":"Exercise: Where does software fit in the research life cycle?","children":[{"id":"existing-software","depth":3,"text":"Existing software"}]}]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:exercise-research-life-cycle.md","_source":"local_fs","_file":"modules/researchsoftware/exercise-research-life-cycle.md","_extension":"md"},{"_path":"/modules/researchsoftware","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Research software","description":"thumbnail-research-software","id":0,"trl":"medium","category":"Getting started","author":"eScience Center","thumbnail":"thumbnail-research-software.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/colorful-software-or-web-code-on-a-computer-monitor-Skf7HxARcoc?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-research-software"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@markusspiske?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Markus Spiske"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/colorful-software-or-web-code-on-a-computer-monitor-Skf7HxARcoc?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:index.md","_source":"local_fs","_file":"modules/researchsoftware/index.md","_extension":"md"},{"_path":"/modules/researchsoftware/info","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the Research Software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the Research Software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:info.md","_source":"local_fs","_file":"modules/researchsoftware/info.md","_extension":"md"},{"_path":"/modules/researchsoftware/research-software","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"The role of research software","description":"","type":"reading","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"the-role-of-research-software-10-minutes"},"children":[{"type":"text","value":"The role of research software (10 minutes)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The following piece was written after a workshop called \"The Future of Research Software\", held in the Netherlands in 2022."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It explores the different roles for research software in the research life cycle, strengthening the case for sustainable software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://upstream.force11.org/defining-the-roles-of-research-software/","rel":["nofollow"]},"children":[{"type":"text","value":"Defining the Roles of Research Software"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After reading the piece, discuss the following questions:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What are the different roles of research software?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What are the challenges for each of these roles?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How can we address these challenges?"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-role-of-research-software-10-minutes","depth":2,"text":"The role of research software (10 minutes)"}]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:research-software.md","_source":"local_fs","_file":"modules/researchsoftware/research-software.md","_extension":"md"},{"_path":"/modules/researchsoftware/slides-researchsoftware","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"Research Software","description":"","type":"slides","order":2,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"research-software"},"children":[{"type":"text","value":"Research software"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"ceci-nest-pas-une-photo"},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Ceci n'est pas une photo"}]}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Black_hole_-_Messier_87_crop_max_res.jpg/1280px-Black_hole_-_Messier_87_crop_max_res.jpg","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://doi.org/10.3847/2041-8213/ab0ec7","rel":["nofollow"]},"children":[{"type":"text","value":"The Event Horizon Telescope Collaboration et al. 2019"}]},{"type":"text","value":" (CC BY 3.0)"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software plays an important role in science. A first thought may be its role in data collection and analysis. Further, it may play a role in designing experiments, based on models generated. It may "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"be"}]},{"type":"text","value":" the experiment itself, simulate a research outcome based on data or ideas entered; it may also be the \"brain\" behind controlling crucial instrumentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What scientific software can you think of?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What role does it play?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An example here: the Event Horizon Telescope, which took a \"picture\" of a black hole.\nThe \"telescope\" is not a single tool, but complex: a \"planet-scale array of eight ground-based radio telescopes\" (wikipedia).\nThe separate telescopes collect data that is synchronized with atomic clocks, and the data is combined at highly specialised supercomputers.\nThe data can be converted into an image using custom software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"the-research-lifecycle"},"children":[{"type":"text","value":"The research lifecycle"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"stories/_fairsoftware/researchcycle.png","alt":"The Research Life Cycle","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":"Software is used all across the research lifecycle"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is used all across the research life cycle."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"stories/_fairsoftware/definition.png","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":"definition of Research Software from the FAIR4RS working group"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A definition of research software, from the FAIR4RS working group.\nIt is important that not all software that is used in research is research software.\nFor example, a text editor that is used to write a paper is not research software.\nNor is powerpoint, a web browser, or the software used to guide the telescope.\nEven tools like R or Python are not necessarily research software.\nThe code written in R or Python for an analysis would be research software, however.\nJust like a custom-made Excel macro that is used to analyse data.\nOr a custom-made web application that is used to collect data."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"why-the-distinction"},"children":[{"type":"text","value":"Why the distinction?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Research software is an important asset and output of research"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enable proper attribution"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Increase Findability and Reuse"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The distinction is important"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"take-home-messages"},"children":[{"type":"text","value":"Take home messages"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is an important part of research"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Not all software used in research is research software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"It is important to regard research software in the whole research lifecycle"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"ceci-nest-pas-une-photo","depth":2,"text":"Ceci n'est pas une photo"},{"id":"the-research-lifecycle","depth":2,"text":"The research lifecycle"},{"id":"why-the-distinction","depth":2,"text":"Why the distinction?"},{"id":"take-home-messages","depth":2,"text":"Take home messages"}]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:slides-researchsoftware.pmd","_source":"local_fs","_file":"modules/researchsoftware/slides-researchsoftware.pmd","_extension":"pmd"},{"_path":"/modules/researchsoftware/slides-software","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"What is software?","description":"","type":"slides","order":1,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h1","props":{"id":"what-is-software"},"children":[{"type":"text","value":"What is software?"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-is-data"},"children":[{"type":"text","value":"Software is data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Computer scientist: "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"\"Software is just data\""}]}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"stories/_researchsoftware/bits_heart.jpg","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@swimstaralex?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Alexander Sinn"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/a-heart-is-shown-on-a-computer-screen-KgLtFCgfC28?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nInside the computer, software is just some type of data."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-is-data-1"},"children":[{"type":"text","value":"Software is data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is ..."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"stored as bits"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"read, loaded and processed"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"can be input, and can be output"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"... just like all other data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nSoftware is stored as bits and read from disk, loaded into memory and processed in exactly the same way as other data. Software can be input, and software can be output."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-is-not-data"},"children":[{"type":"text","value":"Software is "},{"type":"element","tag":"u","props":{},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Everyone but computer scientists: "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"\"Software is not data\""}]}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"stories/_researchsoftware/tools.jpg","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@barnimages?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Barn Images"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/assorted-handheld-tools-in-tool-rack-t5YUoHW6zRo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}]},{"type":"element","tag":"small","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nFor all other practical purposes it is often helpful to make a distinction between software and other data.\nSoftware is a tool, while data is the material that you use the tool on."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-is-not-data-1"},"children":[{"type":"text","value":"Software is "},{"type":"element","tag":"u","props":{},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is..."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"complex"}]},{"type":"text","value":": code is creatively generated, interconnected and multi-layered"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"interdependent"}]},{"type":"text","value":": it builds upon and therefore depends on other software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"executable"}]},{"type":"text","value":": it is not static, but can be run (to process data)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"dynamic"}]},{"type":"text","value":": it can (and will) break soon, needs to be updated"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nWhile technically, software is a special kind of data (in that it is representation of information in a digital state), they are in essence quite different."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software and data both are digital objects, sharing certain characteristics: they can be assigned a DOI, and they can have a license."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is quite different from data, however. Consider:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Complexity; it is not a single file, but a collection of files that are interconnected and multi-layered, and do not necessarily stand on their own. Software is also the result of a creative process that provides a tool to do something, and not the result of a measurement or observation."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interdependence; software is often built using other software, and rarely built completely from scratch. This makes it dependent on other existing applications, which themselves may also change over time."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Executability; software is in its dryest form a set of instructions that can be an archive of a procedure. However, the main goal of software is that these instructions can be executed. Data, by contrast, stand on their own."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Dynamic vs static; its interdependence and context-dependency drives software to require maintenance to retain its value, and this maintenance is not straightforward. Maintenance is also counter to academic culture; it does not fit in existing structures (both in terms of reward/recognition, but also in terms of funding and understanding of what is needed). Versioning of software is very common, while data is often static (though versions may happen)."}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-vs-data-management"},"children":[{"type":"text","value":"Software vs data management"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is a "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"living thing"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Some FAIR data management practices apply to software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Many FAIR principles do not apply easily to software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Good data management will not ensure good software management"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe different nature of software also provides opportunities but also requires extra thought on its management.\nSoftware is a living thing, and therefore it is easier to adopt good practices early on.\nCrucially, there is a community driven openness in software that long predates the open science movement.\nThis is not to say that software is inherently open, but that there is a broad open culture, which also comes with existing tools and pathways to facilitate openness and transparency.\nConsider GitHub (and other code hosting platforms), which are designed for this purpose.\nConsider also version control software, a good software development practice that builds in provenance."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"take-home-messages"},"children":[{"type":"text","value":"Take home messages"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is a special kind of data"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Some FAIR data management"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Wee need extra and different techniques for software management"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-is-data","depth":2,"text":"Software is data"},{"id":"software-is-data-1","depth":2,"text":"Software is data"},{"id":"software-is-not-data","depth":2,"text":"Software is not data"},{"id":"software-is-not-data-1","depth":2,"text":"Software is not data"},{"id":"software-vs-data-management","depth":2,"text":"Software vs data management"},{"id":"take-home-messages","depth":2,"text":"Take home messages"}]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:slides-software.pmd","_source":"local_fs","_file":"modules/researchsoftware/slides-software.pmd","_extension":"pmd"},{"_path":"/modules/researchsoftware/software-and-data","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"Software is data","description":"","type":"reading","order":6,"body":{"type":"root","children":[{"type":"element","tag":"h3","props":{"id":"software-is-data-10-minutes-optional"},"children":[{"type":"text","value":"Software is data (10 minutes, optional)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In computer science, the fact that software is data is considered one of the fundamental concepts of computing. The fact that the thing that operates the machine (software) is the same kind of thing as the thing it operates on (data) is definitely one of the strengths of current computersystems and one of the main reasons why we can do such complex and powerful things with the combination of hardware and software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read the following blogpost about why this concept is so powerful:\n"},{"type":"element","tag":"a","props":{"href":"https://www.blackliszt.com/2014/04/fundamental-concepts-of-computing-software-is-data.html","rel":["nofollow"]},"children":[{"type":"text","value":"https://www.blackliszt.com/2014/04/fundamental-concepts-of-computing-software-is-data.html"}]}]},{"type":"element","tag":"h3","props":{"id":"software-is-a-special-type-of-data"},"children":[{"type":"text","value":"Software is a special type of data ()"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However for most practical purposes in most domains of scientific research (except maybe the domain of computer science) it is useful to make a distinction between the data that is software and other data. From now on, when we use the word data, we mean the kind fo data which is not software and which we use to store more static information."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is executable, data is not."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Data provides information or evidence, software provides a tool to do work on the data."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is a creative work, scientific data are facts or observations."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The lifetime of software is generally not as long as that of data."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/danielskatz/software-vs-data","rel":["nofollow"]},"children":[{"type":"text","value":"https://github.com/danielskatz/software-vs-data"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://doi.org/10.7287/peerj.preprints.2630v1","rel":["nofollow"]},"children":[{"type":"text","value":"https://doi.org/10.7287/peerj.preprints.2630v1"}]}]},{"type":"element","tag":"h3","props":{"id":"discussion"},"children":[{"type":"text","value":"Discussion"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Can you think of examples where the line between software and data becomes fuzzy?"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-is-data-10-minutes-optional","depth":3,"text":"Software is data (10 minutes, optional)"},{"id":"software-is-a-special-type-of-data","depth":3,"text":"Software is a special type of data ()"},{"id":"discussion","depth":3,"text":"Discussion"}]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:software-and-data.md","_source":"local_fs","_file":"modules/researchsoftware/software-and-data.md","_extension":"md"},{"_path":"/modules/smp/exercise1","_dir":"smp","_draft":false,"_partial":false,"_locale":"","title":"Exercise 1","description":"","type":"exercise","order":2,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-1"},"children":[{"type":"text","value":"Exercise 1"}]},{"type":"element","tag":"h2","props":{"id":"software-management-plans-10-minutes"},"children":[{"type":"text","value":"Software Management Plans (10 minutes)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Research software plays a crucial role in academic research and has become a key output of many research projects. A software management plan helps to implement best practices during software development and ensures that software is accessible and reusable in the short and longer term. It also contributes to the reproducibility of results and stimulates collaborative work on open-source software for research."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In practice, a software management plan helps:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Assess whether developing new software is necessary"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Plan to make the research software reusable and sustainable"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Plan for necessary resources"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Allow for verification of work that went into implementation"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the Practical Guide to Software Management plans, this is described in more detail:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://zenodo.org/record/7589725","rel":["nofollow"]},"children":[{"type":"text","value":"A practical guide to software management plans"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After reading this guide, you should:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Be aware of different types of research software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Understand different demands placed on these types of software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Know about various aspects of software management"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Be able to explain the importance of a software management plan for software sustainability."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-management-plans-10-minutes","depth":2,"text":"Software Management Plans (10 minutes)"}]}},"_type":"markdown","_id":"local_fs:modules:smp:exercise1.md","_source":"local_fs","_file":"modules/smp/exercise1.md","_extension":"md"},{"_path":"/modules/smp/exercise2","_dir":"smp","_draft":false,"_partial":false,"_locale":"","title":"Exercise 2","description":"In a live setting, this exercise is done in groups.\nEach group will be assigned a software project.\nThe group will then create an SMP for this project.","type":"exercise","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-2"},"children":[{"type":"text","value":"Exercise 2"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"In a live setting, this exercise is done in groups.\nEach group will be assigned a software project.\nThe group will then create an SMP for this project."}]}]},{"type":"element","tag":"h2","props":{"id":"step-1-choose-a-software-project"},"children":[{"type":"text","value":"Step 1: Choose a software project"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Choose a software project for this exercise, preferably one you are familiar with."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you don't have a project in mind, you can use one of the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/xenon","rel":["nofollow"]},"children":[{"type":"text","value":"Xenon"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/esmvaltool","rel":["nofollow"]},"children":[{"type":"text","value":"ESMValTool"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/projects/rs-dat","rel":["nofollow"]},"children":[{"type":"text","value":"RS-DAT"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/haddock3","rel":["nofollow"]},"children":[{"type":"text","value":"Haddock"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://cjvanlissa.github.io/worcs/index.html","rel":["nofollow"]},"children":[{"type":"text","value":"worcs"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Find the Practical Guide at "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5281/zenodo.7589725","rel":["nofollow"]},"children":[{"type":"text","value":"tinyurl.com/SMP-guide"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"step-2-assess-the-management-level-needed"},"children":[{"type":"text","value":"Step 2: Assess the management level needed"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Look at the software repository or page in the Research Software Directory"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Assess what level of management the software needs: low, medium, or high."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For this, use the following considerations (section 5 in "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5281/zenodo.7589725","rel":["nofollow"]},"children":[{"type":"text","value":"the guide"}]},{"type":"text","value":"):"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Purpose"}]},{"type":"text","value":". What is the current reason or expected end-use for developing the software?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Reliability"}]},{"type":"text","value":". The effect of software failure and/or non-maintenance on:\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Risk of harm to self or others. This includes injury, privacy violation, bias, and inappropriate content."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reputation. For example to self, institution or other."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Research, either your own or of others. This effect could be due to an obvious software failure (\"crash\") or a hidden one, for example, returning inconsistent numerical results on different operating systems."}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Maintenance"}]},{"type":"text","value":". The long-term effort needed to maintain the software as long as it might be used as a standalone tool or dependency. This includes maintenance functions that can extend beyond the lifespan of the original development project and includes fixing bugs, dependency management, operating system compatibility, and security issues."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This may not be a clear-cut decision, but that is fine.\nThe goal is to get a sense of the level of management needed.\nDiscuss with your group and come to a consensus."}]},{"type":"element","tag":"h2","props":{"id":"step-3-fill-in-the-smp-template"},"children":[{"type":"text","value":"Step 3: Fill in the SMP template"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"From the assessment made in Step 1, get the requirements that match the level of management needed."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Copy a template, and fill it in for your software project."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"step-1-choose-a-software-project","depth":2,"text":"Step 1: Choose a software project"},{"id":"step-2-assess-the-management-level-needed","depth":2,"text":"Step 2: Assess the management level needed"},{"id":"step-3-fill-in-the-smp-template","depth":2,"text":"Step 3: Fill in the SMP template"}]}},"_type":"markdown","_id":"local_fs:modules:smp:exercise2.md","_source":"local_fs","_file":"modules/smp/exercise2.md","_extension":"md"},{"_path":"/modules/smp/exercise3","_dir":"smp","_draft":false,"_partial":false,"_locale":"","title":"Exercise 3","description":"","type":"exercise","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-3"},"children":[{"type":"text","value":"Exercise 3"}]},{"type":"element","tag":"h2","props":{"id":"smp-vs-fair"},"children":[{"type":"text","value":"SMP vs FAIR"}]},{"type":"element","tag":"h3","props":{"id":"why-do-we-care"},"children":[{"type":"text","value":"Why do we care?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When thinking of the importance of good software stewardship, management, and development practice, many reasons and motivations come to mind.\nYou may think of:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Accuracy of results"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reproducibility of results"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reusability of software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"User friendliness of software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software quality"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Recognition and rewards for software developers"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Scholarly archive"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software sustainability"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What are the reasons and motivations that come to mind for you?"}]},{"type":"element","tag":"h3","props":{"id":"mapping-motivations"},"children":[{"type":"text","value":"Mapping motivations"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"("},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"NB:"}]},{"type":"text","value":" If you are not yet familiar with the FAIR principles for research software, "},{"type":"element","tag":"a","props":{"href":"/modules/fairsoftware.md"},"children":[{"type":"text","value":"take a look at the chapter on FAIR software"}]},{"type":"text","value":" before doing the following exercise.)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The motivations we listed above were important considerations for the development of Software Management Plans as well as the FAIR principles for research software.\nThey do not match completely, however.\nEach has its own focus and emphasis."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the following exercise, we will map the motivations we listed above to the ultimate goals of SMPs and the FAIR principles."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Draw a Venn diagram with two circles: SMP and FAIR:"}]},{"type":"element","tag":"img","props":{"src":"/modules/smp/media/venn_fairsmp.png","width":400,"style":{"aspectRatio":"2124/1362"}},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Map the motivations listed above to the Venn diagram."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Which motivations are covered by SMPs, which by FAIR, and which by both?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you find any motivations that are not covered by either?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What does this tell you about the relationship between SMPs and FAIR?"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"smp-vs-fair","depth":2,"text":"SMP vs FAIR","children":[{"id":"why-do-we-care","depth":3,"text":"Why do we care?"},{"id":"mapping-motivations","depth":3,"text":"Mapping motivations"}]}]}},"_type":"markdown","_id":"local_fs:modules:smp:exercise3.md","_source":"local_fs","_file":"modules/smp/exercise3.md","_extension":"md"},{"_path":"/modules/smp","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software Management Plans","description":"thumbnail-smp","id":1,"trl":"medium","category":"Reusability","author":"eScience Center","thumbnail":"thumbnail-smp.jpg","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/person-holding-pencil-near-laptop-computer-5fNmWej4tAA?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-smp"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@homajob?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Scott Graham"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/person-holding-pencil-near-laptop-computer-5fNmWej4tAA?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:smp:index.md","_source":"local_fs","_file":"modules/smp/index.md","_extension":"md"},{"_path":"/modules/smp/info","_dir":"smp","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the Software Management Plans module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the Software Management Plans module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:smp:info.md","_source":"local_fs","_file":"modules/smp/info.md","_extension":"md"},{"_path":"/modules/smp/reading","_dir":"smp","_draft":false,"_partial":false,"_locale":"","title":"Reading material","description":"","type":"reading","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"reading-material"},"children":[{"type":"text","value":"Reading material"}]},{"type":"element","tag":"h2","props":{"id":"software-management-plans"},"children":[{"type":"text","value":"Software Management Plans"}]},{"type":"element","tag":"h3","props":{"id":"zenodo"},"children":[{"type":"text","value":"Zenodo"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in Zenodo about "},{"type":"element","tag":"a","props":{"href":"https://zenodo.org/records/7589725","rel":["nofollow"]},"children":[{"type":"text","value":"Practical guide to Software Management Plans"}]}]},{"type":"element","tag":"h3","props":{"id":"software-sustainability-institute"},"children":[{"type":"text","value":"Software Sustainability Institute"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in SSI Resources Hub about "},{"type":"element","tag":"a","props":{"href":"https://www.software.ac.uk/guide/writing-and-using-software-management-plan","rel":["nofollow"]},"children":[{"type":"text","value":"Writing and using a software management plan"}]}]},{"type":"element","tag":"h2","props":{"id":"overview-of-practical-guides"},"children":[{"type":"text","value":"Overview of practical guides"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are various practical guides online to the different aspects of software management."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here is an (incomplete) list:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/vcs.html","rel":["nofollow"]},"children":[{"type":"text","value":"Version control"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/testing/testing-guidance.html","rel":["nofollow"]},"children":[{"type":"text","value":"Testing"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/renv/renv-package.html","rel":["nofollow"]},"children":[{"type":"text","value":"Packaging"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://guide.esciencecenter.nl/#/best_practices/documentation","rel":["nofollow"]},"children":[{"type":"text","value":"Documentation"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"User"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Deployment"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developer"}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/communication/citable/citable-cff.html#cm-citable-cff","rel":["nofollow"]},"children":[{"type":"text","value":"Citation"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/licensing/licensing-software.html","rel":["nofollow"]},"children":[{"type":"text","value":"Software licensing"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/licensing/licensing-compatibility.html","rel":["nofollow"]},"children":[{"type":"text","value":"compatibility"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-management-plans","depth":2,"text":"Software Management Plans","children":[{"id":"zenodo","depth":3,"text":"Zenodo"},{"id":"software-sustainability-institute","depth":3,"text":"Software Sustainability Institute"}]},{"id":"overview-of-practical-guides","depth":2,"text":"Overview of practical guides"}]}},"_type":"markdown","_id":"local_fs:modules:smp:reading.md","_source":"local_fs","_file":"modules/smp/reading.md","_extension":"md"},{"_path":"/modules/smp/slides-smp","_dir":"smp","_draft":false,"_partial":false,"_locale":"","title":"Software Management Plans","description":"","type":"slides","order":1,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h1","props":{"id":"software-management-plans"},"children":[{"type":"text","value":"Software Management Plans"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"mapping-the-via-appia"},"children":[{"type":"text","value":"Mapping the Via Appia"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Mapping the Via Appia","src":"media/viaappia.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe Via Appia was the most important road in the Roman Empire, connecting Rome to Brindisi in the south of Italy, spanning a distance of 540km.\nIt was used for military purposes, but also for trade and travel.\nThe Via Appia was built in 312 BC, and used for 600 years, until the fall of the Roman Empire."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The eScience Center participated in a project to map the Via Appia. Using a combination of satellite imagery and ground-based measurements, the project created a 3D model of the road. The model was used to study the road and its surroundings."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In this project, research software was used to process the satellite imagery and the ground-based measurements, and combine them into a 3D model of the Via Appia."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"the-research-life-cycle"},"children":[{"type":"text","value":"The research life cycle"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/researchcycle.png","width":"60%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nAll over the research life cycle we can find examples of software created for research.\nSome are more straightforward than others:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Planning: to design experiments"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Collecting: to collect data, to control instruments, to run simulations"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Analysing: to analyse data, to generate models"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"reuse-reproduce"},"children":[{"type":"text","value":"Reuse & reproduce"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Both reusability and reproducibility are important values in research software:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Reproducibility"}]},{"type":"text","value":" is an integral part of the research process"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"reusability"}]},{"type":"text","value":" allows building upon existing software"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For both, we need to be able to "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"find"}]},{"type":"text","value":", "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"access"}]},{"type":"text","value":", "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"use"}]},{"type":"text","value":", and "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"understand"}]},{"type":"text","value":" software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nReproducibility of research allows validation of its findings, and is therefore vital in building a solid foundation for scientific progress.\nWe can only truly build upon existing research if we can reproduce its results."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When software has been used in research, this has enormous potential to facilitate the research reproducibility.\nHowever, it also comes with its own particular challenges: software reproducibility is not always straightforward."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An additional feature of software, is that it may be a product on its own, and can be reused by others.\nThis is a great opportunity to build on our collective knowledge and tools, and to avoid reinventing the wheel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Ensuring that the software is findable, accessible, usable and understandable is key to both reproducibility and reusability."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Software Needs Maintenance","src":"media/maintenance.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nSoftware and code have some unique features.\nOne particular feature is that they depend on other software, and on the environment in which they are run.\nThis means that it requires maintenance and updates to keep it functional, as the environments around it change.\nThis is called software sustainability."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"overview"},"children":[{"type":"text","value":"Overview"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software Management Plan: what and why?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Aspects of software management"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Different needs for different software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"SMP template examples"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThis presentation will introduce you to the concept of software management plans, as a first step towards better software stewardship and sustainability.\nWe will look at different aspects of good software managements, as well as different needs for different types of software.\nFinally, we will take a look at some concrete examples of software management plans."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"software-management-plan-smp"},"children":[{"type":"text","value":"Software Management Plan (SMP)"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Building on the success of Data Management Plans (DMPs)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A document detailing how research software will be managed\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What does it do?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Who is it for?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What resources does it need?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Who is responsible?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How long will it be available?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"..."}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Can be part of a project proposal, or generated in the early phases"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nSoftware management plans (SMPs) are inspired by the earlier adopted data management plans.\nIn these documents, often created at or before the start of a project, plans and explicit decisions are made about various aspects around the management of these digital objects.\nThey are increasingly required by funders and institutions."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In an SMP it is explicitly stated what the software aims to do, who its target audience is, and what resources it is expected to need.\nIt also addresses the intended lifespan, and allocates responsibility: who makes releases? Who maintains the software at the end of the project, and if so for how long?"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"why-use-an-smp"},"children":[{"type":"text","value":"Why use an SMP?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Make technical choices explicit"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Plan for necessary resources"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Assess whether new software is really needed"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Clarity early on helps to avoid problems later"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"..."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nWith an SMP, you make explicit plans and decisions in an early stage.\nThe SMP provides the team with structured, relevant questions early on, with the aim to maximize the accessibility, reusability, and impact of the software in question.\nThis supports good software management practices, and it makes sure they are known to the researchers involved."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"More specifically, in an SMP you:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Make explicit technical choices. For example, what programming language will be used? What operating system will be supported?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Plan for necessary resources; be they financial, human, infrastructure or other."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Assess whether new software is really needed; explore whether existing software can be reused, and to what extent;"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"These are issues that arise during software development anyway, but all too often are not explicitly dealt with.\nBy tackling them early, a conscious decision can be made rather than needing to deal with consequences of implicit choices.\nResource planning moreover is vital for the sustainability of the software.\nFinally, the SMP will allow later verification of plans in a publicly funded project."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/smpguide.png","width":"50%"},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5281/zenodo.7038280","rel":["nofollow"]},"children":[{"type":"text","value":"doi:10.5281/zenodo.7038280"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nTo get started on creating a Software Management Plan, this practical guide has been created by NWO and the Netherlands eScience Center.\nIts first version was released in August of 2022, but it has since been, and will continue to be, updated.\nAll past versions and the latest release are available on Zenodo via this DOI."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/groupedrequirements.png","width":"60%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nIn the practical guide, the core requirements for an SMP are listed, and grouped into four categories."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Focusing on the "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"engineering"}]},{"type":"text","value":", the guide asks about version control, packaging, testing, and software quality."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Focusing on "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":", the guide discusses documentation needs for users, developers, and for deployment specifically."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Focusing on "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"project management"}]},{"type":"text","value":", the guide addresses licensing, maintenance, resources, the project repository, and a risk analysis."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Finally, the guide asks about the "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"purpose"}]},{"type":"text","value":" of the software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/purpose.png","width":"40%"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What problem does it solve?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Who is the intended audience?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What are its advantages and limitations?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe software's purpose is a central question in the SMP."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It is important to be clear about the problem it addresses, and who the software is aimed at.\nAddressing the limitations of the software, as well as the advantages it will provide, help determine its scope.\nThis will help the developers focus on the specific needs of the software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/engineering.png","width":"30%"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What version control will you use?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How will you test the software?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How will the project be organized or packaged?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How will you manage code quality?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nOn the engineering focus, several specific areas are addressed."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Version control"}]},{"type":"text","value":" has a myriad of benefits: it allows keeping track of history and provenance, can support experimentation and collaboration, and is crucial for the identification of specific versions of the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Testing"}]},{"type":"text","value":" ensures that software continues to work as intended.\nThere are many different approaches to this: units of code can be tested in unit tests; entire workflows can be verified in integration tests; acceptance tests can be created to ensure specific requirements are met; regression testing can be done to ensure new changes do not break existing functionality; and so on.\nDeciding whether and if so what testing will be implemented is an important element of the SMP."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Packaging"}]},{"type":"text","value":" is important for the distribution of software.\nThe format in which the software will be distributed is an important decision that should be made early on."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Code quality"}]},{"type":"text","value":" should be addressed: what standards will be adhered to, and how will they be measured and supported?\nThere are many tools that can help with this, and it is important to choose them early on to maintain consistent code quality throughout the project."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/documentation.png","width":"30%"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What documentation will you provide\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"for users?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"for developers?"}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How will you manage system requirements (e.g. dependencies)?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nDocumentation is an important component of software, and should be tailored to different audiences."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"user documentation"}]},{"type":"text","value":", the software's function should be explained, and instructions on how to use it should be provided."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"developer documentation"}]},{"type":"text","value":", instructions on how to modify the software, and how to contribute to the project should be provided."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Deployment documentation"}]},{"type":"text","value":" explains any system requirements (such as dependencies) for deploying the software, and installation and testing instructions."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/projectmanagement.png","width":"30%"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What license will you use?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How will the software be maintained? For how long?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How should the software be cited?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What repository(ies) will you use?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What resources will you need?\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"e.g. infrastructure, personnel, training, hardware..."}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What risks and challenges do you foresee?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe project management focus is broad, and addresses various conditions for the software's long-term sustainability and re-use."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Any reusable software should have an appropriate "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"license"}]},{"type":"text","value":", which is an important early decision."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"maintenance"}]},{"type":"text","value":" of the software should be addressed in an SMP: who will maintain it, and for how long?\nHow and when will it be retired?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Plan the "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"citation"}]},{"type":"text","value":" of the software: how will you collect information about its use? What DOI will you use for this?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"repository"}]},{"type":"text","value":" where the software will be deposited is preferably publicly accessible, and should allow users to obtain a functional copy of the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"resources"}]},{"type":"text","value":" — human, infrastructure, financial - will be needed, and when?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Finally, a "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"risk analysis"}]},{"type":"text","value":" should be performed: for instance, are there privacy or security concerns? Is there potential for vendor lock, or other considerations for future reliability and reuse?"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"smp-template"},"children":[{"type":"text","value":"SMP template"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Should be provided by the institution"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Include guidance:\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Instructions on how to fill it out"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Resources for information and support"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Institution-specific regulations"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Institution-specific resources available"}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Include an assessment rubric (e.g. with (un)acceptable answers)"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe Software Management Plan template is a duty of the institution.\nA good SMP includes guidance on how to fill it out, including institution-specific regulations and resources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An assessment rubric should accompany the template, indicating per question or focus what conditions need to be met, and which answers are (un)acceptable."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"not-all-software-is-equal"},"children":[{"type":"text","value":"Not all software is equal"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"","src":"media/softwarespectrum.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nIt is important to realize when making an SMP, that research software comes in many shapes and sizes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An ad-hoc R script written by a PhD student to analyse data from a specific machine, is research software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It can also be a multinational collaboration to develop a tool that is used by thousands of researchers worldwide."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Different software has different needs, but there are common principles in managing them and ensuring their sustainability."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The diversity of research software does mean that not all requirements apply to every type of software.\nTo address this, we can subset the core requirements to create different SMP templates tailored to software with different management needs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The SMP Guide distinguishes software with low, medium, and high management needs."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"smp-level-low"},"children":[{"type":"text","value":"SMP level: low"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Single purpose scripts"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developer is the primary user"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Performs limited function:\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Analyses a single experiment or dataset"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Automates a routine task"}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nSoftware with low management requirements is defined by its limited function: it performs a single analysis or automates a routine task.\nIts "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"purpose"}]},{"type":"text","value":" is typically limited to a specific experiment, and the developer is the primary user."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"reliability"}]},{"type":"text","value":" of this type of software is usually easy to assess: the output can be visually inspected, or tested with a limited set of inputs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"maintenance"}]},{"type":"text","value":" of this type of software is usually limited to the duration of the project in which it was developed.\nIt is not intended to be used by others, and therefore its influence beyond the scope for which it was intended is likely small."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Best practices during development (e.g. version control), as well as measures to enable its reuse (documentation, versioning, archiving) are appropriate and recommended.\nThey are however not requirements, nor is long term maintenance planning necessary."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"smp-level-medium"},"children":[{"type":"text","value":"SMP level: medium"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Primary or secondary output of a research project"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Adds a library or module to existing tool, or even works standalone"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Unique functionality that will be reused\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Implements a new or higher performance algorithm"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simulation software implementing a new model or method"}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nSoftware requiring "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"medium"}]},{"type":"text","value":" management, is defined as software that is the primary or secondary output of a research project."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Its original "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"purpose"}]},{"type":"text","value":" is typically limited to a single research project, but incorporates functionality that may be of use to others, either as a standalone tool, library, or module in an existing tool."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"reliability"}]},{"type":"text","value":" is more difficult to assess due to its increased complexity, but it is also also more important: this software likely has an effect on other research outside of the original project.\nGood software practices such as version control and user/technical documentation are therefore essential here.\nMore advanced requirements, such as code auditing, automated testing, software packaging, and distribution also need to be considered."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This software's longer term "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"maintenance"}]},{"type":"text","value":" is relevant as it will have a lifespan longer than the project in which it was developed.\nSoftware management planning should include providing information on archiving and citation as well as strategies for post-project maintenance and support."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"smp-level-high"},"children":[{"type":"text","value":"SMP level: high"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Mission critical software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"High standards required for reliability"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Absence or replacement of the software would threaten research"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software that is continually in use:\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Preprocessing data coming from a telescope"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Controlling a medical device"}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\n"},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"High"}]},{"type":"text","value":" management software is defined as mission critical software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Its "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"purpose"}]},{"type":"text","value":" is to perform a critical function, and its absence or replacement would threaten the research."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"reliability"}]},{"type":"text","value":" of this software is of utmost importance, and all possible actions should be taken to ensure it."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Its "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"maintenance"}]},{"type":"text","value":" is not limited to the duration of the project in which it was developed, but should be maintained as long as it is in use.\nThus, maintenance strategies, including funding and/or community development plans, should be in place."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"making-that-call"},"children":[{"type":"text","value":"Making that call"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Purpose"}]},{"type":"text","value":": what is the reason or expected end-use for the software?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Reliability"}]},{"type":"text","value":": what is the effect of software failure and/or non-maintenance?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Maintenance"}]},{"type":"text","value":": what is the long-term effort needed to maintain the software?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check the Practical Guide: "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5281/zenodo.7038280","rel":["nofollow"]},"children":[{"type":"text","value":"doi:10.5281/zenodo.7038280"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nDeciding what level of management, and therefore which SMP template, is appropriate for a specific software project, is not always straightforward.\nThe practical guide provides some guidance on how to make this decision.\nAddressing what purpose the software serves, how reliable it needs to be, and what efforts will be required for its longer term maintenance, will help determine the appropriate level of management."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/threelevels.png","width":"60%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nWith a specific level of management in mind, the core requirements that are relevant for this software's management can be determined.\nThe practical guide provides a clear overview of this."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"take-home-messages"},"children":[{"type":"text","value":"Take home messages"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is found in all stages of the research cycle"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Research software comes in many shapes and sizes"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software stewardship starts with a good plan"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Good software management leads to better science"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nSoftware is found in all stages of the research cycle, and is used for many different purposes.\nIt comes in many shapes and sizes, and has different needs.\nSoftware stewardship starts with a good plan, and is an important scientific step: good software management leads to better science."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"mapping-the-via-appia","depth":2,"text":"Mapping the Via Appia"},{"id":"the-research-life-cycle","depth":2,"text":"The research life cycle"},{"id":"reuse-reproduce","depth":2,"text":"Reuse & reproduce"},{"id":"overview","depth":2,"text":"Overview","children":[{"id":"software-management-plan-smp","depth":3,"text":"Software Management Plan (SMP)"}]},{"id":"why-use-an-smp","depth":2,"text":"Why use an SMP?"},{"id":"smp-template","depth":2,"text":"SMP template"},{"id":"not-all-software-is-equal","depth":2,"text":"Not all software is equal"},{"id":"smp-level-low","depth":2,"text":"SMP level: low"},{"id":"smp-level-medium","depth":2,"text":"SMP level: medium"},{"id":"smp-level-high","depth":2,"text":"SMP level: high"},{"id":"making-that-call","depth":2,"text":"Making that call"},{"id":"take-home-messages","depth":2,"text":"Take home messages"}]}},"_type":"markdown","_id":"local_fs:modules:smp:slides-smp.pmd","_source":"local_fs","_file":"modules/smp/slides-smp.pmd","_extension":"pmd"},{"_path":"/modules/testing/exercise1","_dir":"testing","_draft":false,"_partial":false,"_locale":"","title":"Exercise 1","description":"Choose an alternative that correctly answers the following questions:","type":"exercise","order":2,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-1"},"children":[{"type":"text","value":"Exercise 1"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Choose an alternative that correctly answers the following questions:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"1.1 What is software testing?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"a) A method for evaluating a software's compatibility with different operating systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"b) The process of releasing updates and patches for software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"c) The process of verifying and validating that a software meets the required specifications and works as intended."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"d) A step in the software lifecycle focused on community engagement and feedback."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"e) The practice of documenting software functionalities."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"1.2 Why is software testing important?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"a) To build and maintain the community's trust by demonstrating commitment to quality."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"b) To identify and fix bugs, ensure the software meets required standards, and assess its reliability and reproducibility."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"c) To design the software's user interface and graphics."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"d) To accelerate the overall software development process."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"e) To facilitate easier collaboration among developers."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"answers:"}]},{"type":"text","value":"\n1.1 c)\n1.2 The most obvious answer is b), but in fact all answers except c) are correct\n"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:testing:exercise1.md","_source":"local_fs","_file":"modules/testing/exercise1.md","_extension":"md"},{"_path":"/modules/testing/exercise2","_dir":"testing","_draft":false,"_partial":false,"_locale":"","title":"Exercise 2","description":"","type":"exercise","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-2"},"children":[{"type":"text","value":"Exercise 2"}]},{"type":"element","tag":"h2","props":{"id":"instructions"},"children":[{"type":"text","value":"Instructions"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Match the items in Column A with their corresponding items in Column B."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Write the letter of the correct match next to each item in Column A."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Have fun and learn!"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"column-a"},"children":[{"type":"text","value":"Column A"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Smoke Test"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Unit Test"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Integration Test"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"System Test"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Regression Test"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"column-b"},"children":[{"type":"text","value":"Column B"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A. Style of testing that focuses on retesting after changes are made. The results of tests after the changes are compared to the results before, and errors are raised if these are different. The purpose of this test is to ensure that changes (enhancements or defect fixes) to the software have not adversely affected it."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"B. A level of the software testing process where the complete, integrated system is tested. The purpose of this test is to evaluate whether the system as a whole gives the correct outputs for given inputs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"C. Very brief initial checks that ensure the basic units required to run the software can be initialized. If these fail there is no point proceeding to additional levels of testing until they are fixed."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"D. A level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"E. A level of the software testing process where individual units of a software are tested. The purpose is to ensure that each unit of the software works as expected."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"answers"},"children":[{"type":"text","value":"Answers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"(Leave this blank for now, you can fill in the answers after completing the activity)"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[]},{"type":"element","tag":"li","props":{},"children":[]},{"type":"element","tag":"li","props":{},"children":[]},{"type":"element","tag":"li","props":{},"children":[]},{"type":"element","tag":"li","props":{},"children":[]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"hint"},"children":[{"type":"text","value":"Hint"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here’s an analogy: during the process of manufacturing a ballpoint pen, the cap, the body, the tail, the ink cartridge and the ballpoint are produced separately and unit tested separately. When two or more units are ready, they are assembled and integration testing is performed, for example a test to check the cap fits on the body. When the complete pen is integrated, system testing is performed to check it can be used to write like any pen should."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" correct answers: 1.C., 2.E., 3.D., 4.B., and 5.A "}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"instructions","depth":2,"text":"Instructions","children":[{"id":"column-a","depth":3,"text":"Column A"},{"id":"column-b","depth":3,"text":"Column B"}]},{"id":"answers","depth":2,"text":"Answers"},{"id":"hint","depth":2,"text":"Hint"}]}},"_type":"markdown","_id":"local_fs:modules:testing:exercise2.md","_source":"local_fs","_file":"modules/testing/exercise2.md","_extension":"md"},{"_path":"/modules/testing/exercise3","_dir":"testing","_draft":false,"_partial":false,"_locale":"","title":"Exercise 3","description":"","type":"exercise","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-3"},"children":[{"type":"text","value":"Exercise 3"}]},{"type":"element","tag":"h2","props":{"id":"scenario"},"children":[{"type":"text","value":"Scenario"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You are part of a research team working on a complex simulation software that models climate change. The software is developed collaboratively by a diverse group of scientists, each contributing to different modules (e.g., ocean temperature modeling, atmospheric chemistry, etc.). The team has faced issues with code integration, where new contributions occasionally break existing functionalities or cause unexpected results, leading to delays in their research. You are considering the adoption of "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Continuous Integration"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"question"},"children":[{"type":"text","value":"Question"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Which of the following best describes Continuous Integration and its benefits for this project?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"a) Continuous Integration is a practice where team members work in isolation to ensure their code is perfect before integrating it once at the end of the project, helping to avoid conflicts and errors."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"b) Continuous Integration involves the use of specialized software to automatically translate code into multiple programming languages, making it more versatile and reducing workload."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"c) Continuous Integration is a development practice where team members frequently integrate their work, often several times a day, to detect and fix integration issues early, thereby improving collaboration and code quality."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"d) Continuous Integration is a method where team members manually review each other's code at the end of each day, ensuring that the code meets quality standards and is ready for client presentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"e) Continuous Integration refers to the continuous updating of software to incorporate user feedback and new features, ensuring the software evolves to meet user needs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" correct answer: c) "}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"scenario","depth":2,"text":"Scenario"},{"id":"question","depth":2,"text":"Question"}]}},"_type":"markdown","_id":"local_fs:modules:testing:exercise3.md","_source":"local_fs","_file":"modules/testing/exercise3.md","_extension":"md"},{"_path":"/modules/testing","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software testing","description":"thumbnail-testing\nPhoto by Christina @ wocintechchat.com on Unsplash","id":9,"trl":"medium","category":"Development","abstract":"Local testing of your software and using Continuous Integration and Continuous Deployment (CI/CD)","author":"eScience Center","thumbnail":"thumbnail-testing.jpg","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/macbook-pro-2JDDn7iSGH8?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-testing"}]},{"type":"text","value":"\nPhoto by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@wocintechchat?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Christina @ wocintechchat.com"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/macbook-pro-2JDDn7iSGH8?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:testing:index.md","_source":"local_fs","_file":"modules/testing/index.md","_extension":"md"},{"_path":"/modules/testing/info","_dir":"testing","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Appreciate the importance of testing software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Understand the various benefits of testing"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Understand the types of tests and what info they convey"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Get familiar with the idea of continuous integration and its importance"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:testing:info.md","_source":"local_fs","_file":"modules/testing/info.md","_extension":"md"},{"_path":"/modules/testing/presentation","_dir":"testing","_draft":false,"_partial":false,"_locale":"","title":"Software Testing","description":"","type":"slides","order":1,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-testing"},"children":[{"type":"text","value":"Software Testing"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"what-is-software-testing"},"children":[{"type":"text","value":"What is software testing?"}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"“Software testing is the process of evaluating and verifying that a software product or application does what it’s supposed to do. The benefits of good testing include preventing bugs and improving performance.”"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://www.ibm.com/topics/software-testing","rel":["nofollow"]},"children":[{"type":"text","value":"From IBM Featured Topics"}]},{"type":"text","value":" "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What is software testing?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software testing is the process of evaluating and verifying that a software and its components meet specified requirements and work as expected. Its primary purpose is to identify defects, errors, flaws, or bugs early in the development process."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software testing can be done manually, where a human actively uses the software to observe for defects, or automatically, where test scripts or tools are used to execute tests."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Untested software can be compared to uncalibrated experimental devices."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"consequences-of-not-testing-your-research-software"},"children":[{"type":"text","value":"Consequences of not testing your (research) software"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/testing-motivation1.png","width":"30%"},"children":[]},{"type":"element","tag":"img","props":{"src":"media/testing-motivation2.png","width":"30%"},"children":[]},{"type":"element","tag":"img","props":{"src":"media/testing-motivation3.png","width":"30%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" Find the complete articles "},{"type":"element","tag":"a","props":{"href":"https://www.science.org/doi/full/10.1126/science.314.5807.1856","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":", "},{"type":"element","tag":"a","props":{"href":"https://arstechnica.com/information-technology/2019/10/chemists-discover-cross-platform-python-scripts-not-so-cross-platform/","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":", and "},{"type":"element","tag":"a","props":{"href":"https://www.wired.com/2010/11/1110mars-climate-observer-report/","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":" "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are several examples in which the lack of proper software testings resulted in serious consequences."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first article from 2006 reports about a software flaw (a plus sign in place of a minus sign) that lead to a retraction of 5 scientific articles."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the second from 2019, researchers found that a programming error in a set of Python scripts commonly used for computational analysis of chemistry data returned varying results based on which operating system they were run on—throwing doubt on the results of more than 150 published chemistry studies."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The loss of the Mars Climate Orbiter in 1999 is another prominent example of a catastrophe caused by a software error, specifically a unit conversion mistake."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There is also the case of the Ariane flight V88, an European Space Agency rocket which was destroyed just 40 seconds after its launch due to a software bug; see "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Ariane_flight_V88","rel":["nofollow"]},"children":[{"type":"text","value":"https://en.wikipedia.org/wiki/Ariane_flight_V88"}]},{"type":"text","value":"."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"why-testing-your-software"},"children":[{"type":"text","value":"Why testing your software ?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Ensure software reliability, validity, and reproducibility."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Confirm correct installation and demonstrate use."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Boost developer confidence for contributions and modifications."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Maintain expected software functionality."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simplify and manage code complexity."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Why testing your software is so crucial?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Specifically for research software, tests are vital for ensuring the reliability, validity, and reproducibility of your scientific results."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"They help users by enabling them confirm that the software is installed correctly, providing usage examples."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tests also help other developers modify and contribute to your software. A good test suite gives collaborators confidence to make modifications without breaking existing functionalities.\nThey preserve the expected functionality of the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Manage complexity: Code that is easy to test is often easier to understand and maintain."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"types-of-testing"},"children":[{"type":"text","value":"Types of testing"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Unit tests"}]},{"type":"text","value":": Assess individual components for correctness."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Integration tests"}]},{"type":"text","value":": Verify interactions between different parts of the software."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"System tests"}]},{"type":"text","value":": Evaluate the complete and integrated software system."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Regression tests"}]},{"type":"text","value":": Ensure new changes don’t disrupt existing functionality."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are several types of software testing, each of which with its own purpose."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In unit tests each individual unit of a software is tested separately. The purpose is to ensure that each component of the software works as expected."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Integration tests are a level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The complete, integrated system is checked via the so-called system tests. The purpose here is to evaluate whether the software as a whole gives the correct outputs for given inputs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Finally, regression tests check for unexpected side-effects in existing features after changes."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"continuous-integration-and-continuous-deployment-cicd"},"children":[{"type":"text","value":"Continuous Integration and Continuous Deployment (CI/CD)"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/cicd_scheme.png","width":"80%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Continuous Integration (CI) is a practice in software development where team members regularly integrate their individual code changes, often several times a day, into a shared remote repository. After every integration, a working version of the project is build and the software's test suite is run automatically, making it possible to identify defects, errors, flaws, or bugs introduced by changes early in the development process. This helps keep the code up-to-date and reduces the chances of major issues when combining everyone's work."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Continuous deployment (CD) is the next step after CI in the CI/CD pipeline shown in the figure. CD is the practice of automatically deploying every working version of the project that passes the automated testing phase to its end-users."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"benefits-of-continuous-integration"},"children":[{"type":"text","value":"Benefits of continuous integration"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/benefits_of_ci.png","width":"80%"},"children":[]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"take-home-messages"},"children":[{"type":"text","value":"Take home messages"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software testing is key for quality, reliability, and reproducibility"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Unit tests verify individual components, integration tests check component interactions"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"CI/CD streamline development and enhance deployment efficiency."}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-testing","depth":2,"text":"Software Testing"},{"id":"what-is-software-testing","depth":2,"text":"What is software testing?"},{"id":"consequences-of-not-testing-your-research-software","depth":2,"text":"Consequences of not testing your (research) software"},{"id":"why-testing-your-software","depth":2,"text":"Why testing your software ?"},{"id":"types-of-testing","depth":2,"text":"Types of testing"},{"id":"continuous-integration-and-continuous-deployment-cicd","depth":2,"text":"Continuous Integration and Continuous Deployment (CI/CD)"},{"id":"benefits-of-continuous-integration","depth":2,"text":"Benefits of continuous integration"},{"id":"take-home-messages","depth":2,"text":"Take home messages"}]}},"_type":"markdown","_id":"local_fs:modules:testing:presentation.pmd","_source":"local_fs","_file":"modules/testing/presentation.pmd","_extension":"pmd"},{"_path":"/modules/testing/reading","_dir":"testing","_draft":false,"_partial":false,"_locale":"","title":"Reading material","description":"","type":"reading","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"reading-material"},"children":[{"type":"text","value":"Reading material"}]},{"type":"element","tag":"h2","props":{"id":"testing"},"children":[{"type":"text","value":"Testing"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Follow the links below to read more about software testing."}]},{"type":"element","tag":"h3","props":{"id":"the-turing-way"},"children":[{"type":"text","value":"The Turing Way"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in the Turing Way about "},{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/testing","rel":["nofollow"]},"children":[{"type":"text","value":"Code Testing"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"code-refinery"},"children":[{"type":"text","value":"Code Refinery"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in CodeRefinery about "},{"type":"element","tag":"a","props":{"href":"https://coderefinery.github.io/testing/motivation/","rel":["nofollow"]},"children":[{"type":"text","value":"Automated testing"}]}]},{"type":"element","tag":"h3","props":{"id":"ibm"},"children":[{"type":"text","value":"IBM"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Link to an "},{"type":"element","tag":"a","props":{"href":"https://www.ibm.com/topics/software-testing","rel":["nofollow"]},"children":[{"type":"text","value":"IBM article"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"arxiv"},"children":[{"type":"text","value":"arXiv"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read this interesting article about "},{"type":"element","tag":"a","props":{"href":"https://arxiv.org/abs/2205.15982","rel":["nofollow"]},"children":[{"type":"text","value":"Testing Research Software"}]}]},{"type":"element","tag":"h2","props":{"id":"cicd"},"children":[{"type":"text","value":"CI/CD"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Follow the links below to read more about CI/CD."}]},{"type":"element","tag":"h3","props":{"id":"the-turing-way-1"},"children":[{"type":"text","value":"The Turing Way"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in the Turing Way about "},{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/ci","rel":["nofollow"]},"children":[{"type":"text","value":"Continuous Integration"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"code-refinery-1"},"children":[{"type":"text","value":"Code Refinery"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in CodeRefinery about "},{"type":"element","tag":"a","props":{"href":"https://coderefinery.github.io/testing/continuous-integration/","rel":["nofollow"]},"children":[{"type":"text","value":"Continuous integration"}]}]},{"type":"element","tag":"h3","props":{"id":"bytebytego-newsletter"},"children":[{"type":"text","value":"ByteByteGo Newsletter"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in ByteByteGo newsletter about "},{"type":"element","tag":"a","props":{"href":"https://blog.bytebytego.com/p/a-crash-course-in-cicd","rel":["nofollow"]},"children":[{"type":"text","value":"A Crash Course in CI/CD"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"testing","depth":2,"text":"Testing","children":[{"id":"the-turing-way","depth":3,"text":"The Turing Way"},{"id":"code-refinery","depth":3,"text":"Code Refinery"},{"id":"ibm","depth":3,"text":"IBM"},{"id":"arxiv","depth":3,"text":"arXiv"}]},{"id":"cicd","depth":2,"text":"CI/CD","children":[{"id":"the-turing-way-1","depth":3,"text":"The Turing Way"},{"id":"code-refinery-1","depth":3,"text":"Code Refinery"},{"id":"bytebytego-newsletter","depth":3,"text":"ByteByteGo Newsletter"}]}]}},"_type":"markdown","_id":"local_fs:modules:testing:reading.md","_source":"local_fs","_file":"modules/testing/reading.md","_extension":"md"},{"_path":"/modules/version-control","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software version control","description":"","id":10,"trl":"high","category":"Upcoming (under construction)","abstract":"Local version control and collaborative code development, for example using Git and GitHub","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"local-version-control"},"children":[{"type":"text","value":"Local version control"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]},{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"remote-repositories"},"children":[{"type":"text","value":"Remote repositories"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"local-version-control","depth":2,"text":"Local version control"},{"id":"remote-repositories","depth":2,"text":"Remote repositories"}]}},"_type":"markdown","_id":"local_fs:modules:version-control:index.md","_source":"local_fs","_file":"modules/version-control/index.md","_extension":"md"},{"_path":"/modules/version-control/info","_dir":"version-control","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:version-control:info.md","_source":"local_fs","_file":"modules/version-control/info.md","_extension":"md"},{"_path":"/modules/versioning","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Versioning & Changelog","description":"","id":3,"trl":"medium","category":"Upcoming (under construction)","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"versioning"},"children":[{"type":"text","value":"Versioning"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"versioning","depth":2,"text":"Versioning"}]}},"_type":"markdown","_id":"local_fs:modules:versioning:index.md","_source":"local_fs","_file":"modules/versioning/index.md","_extension":"md"},{"_path":"/modules/versioning/info","_dir":"versioning","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:versioning:info.md","_source":"local_fs","_file":"modules/versioning/info.md","_extension":"md"},{"_path":"/readme","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Research Software Support","description":"This repository contains the contents for the Research Software Support platform.","body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"research-software-support"},"children":[{"type":"text","value":"Research Software Support"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This repository contains the contents for the Research Software Support platform."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This platform uses the "},{"type":"element","tag":"a","props":{"href":"https://github.com/esciencecenter-digital-skills/NEBULA","rel":["nofollow"]},"children":[{"type":"text","value":"NEBULA framework"}]},{"type":"text","value":"."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:README.md","_source":"local_fs","_file":"README.md","_extension":"md"}],"navigation":[{"title":"Config","_path":"/config"},{"title":"Hello world","_path":"/"},{"title":"LICENSE","_path":"/license"},{"title":"Main","_path":"/main","children":[{"title":"About","_path":"/main/about"},{"title":"Contribute","_path":"/main/contribute"}]},{"title":"Modules","_path":"/modules","children":[{"title":"Software citation","_path":"/modules/citation","children":[{"title":"The `CITATION.cff` file","_path":"/modules/citation/citationcff"},{"title":"Using cffinit to create `CITATION.cff`","_path":"/modules/citation/create_citation_file"},{"title":"Which software should I cite?","_path":"/modules/citation/ex_when_to_cite"},{"title":"Reading material","_path":"/modules/citation/further_reading"},{"title":"Software citation","_path":"/modules/citation"},{"title":"Learning objectives","_path":"/modules/citation/info"},{"title":"Citing software","_path":"/modules/citation/introduction"},{"title":"The principles","_path":"/modules/citation/principles"},{"title":"Software Citation","_path":"/modules/citation/slides-citation"}]},{"title":"Software documentation","_path":"/modules/documentation","children":[{"title":"Software documentation","_path":"/modules/documentation"},{"title":"Learning objectives","_path":"/modules/documentation/info"}]},{"title":"Environments & Containers","_path":"/modules/environments","children":[{"title":"Environments & Containers","_path":"/modules/environments"},{"title":"Learning objectives","_path":"/modules/environments/info"}]},{"title":"FAIR software","_path":"/modules/fairsoftware","children":[{"title":"What is FAIR?","_path":"/modules/fairsoftware/exercise1"},{"title":"Mapping the principles","_path":"/modules/fairsoftware/exercise2"},{"title":"FAIR in practice","_path":"/modules/fairsoftware/exercise3"},{"title":"FAIR software","_path":"/modules/fairsoftware"},{"title":"Learning objectives","_path":"/modules/fairsoftware/info"},{"title":"Reading material","_path":"/modules/fairsoftware/reading"},{"title":"FAIR software","_path":"/modules/fairsoftware/slides-fairsoftware"}]},{"title":"High Performance Computing (HPC)","_path":"/modules/hpc","children":[{"title":"High Performance Computing (HPC)","_path":"/modules/hpc"},{"title":"Learning objectives","_path":"/modules/hpc/info"}]},{"title":"Software licenses","_path":"/modules/licenses","children":[{"title":"Copyright and software","_path":"/modules/licenses/copyright"},{"title":"Choose a license for or using your policy","_path":"/modules/licenses/ex_choose_a_license"},{"title":"Does your university have a software licensing policy?","_path":"/modules/licenses/ex_have_licensing_policy"},{"title":"What licenses do researchers at your university use?","_path":"/modules/licenses/ex_licenses_in_use"},{"title":"Software licenses","_path":"/modules/licenses"},{"title":"Learning objectives","_path":"/modules/licenses/info"},{"title":"Software licenses","_path":"/modules/licenses/licenses"},{"title":"Software Licensing","_path":"/modules/licenses/slides"},{"title":"University software policies","_path":"/modules/licenses/university_policy"}]},{"title":"Multimedia","_path":"/modules/multimedia","children":[{"title":"Multimedia","_path":"/modules/multimedia"},{"title":"Learning objectives","_path":"/modules/multimedia/info"},{"title":"Media","_path":"/modules/multimedia/media","children":[{"title":"First presentation, markdown demo","_path":"/modules/multimedia/media/presentation"}]}]},{"title":"Notebooks","_path":"/modules/notebooks","children":[{"title":"Notebooks","_path":"/modules/notebooks"},{"title":"Learning objectives","_path":"/modules/notebooks/info"}]},{"title":"Software project organization","_path":"/modules/organization","children":[{"title":"Software project organization","_path":"/modules/organization"},{"title":"Learning objectives","_path":"/modules/organization/info"}]},{"title":"Software publication","_path":"/modules/publication","children":[{"title":"Automating software publication","_path":"/modules/publication/automating_software_publication"},{"title":"Discussion","_path":"/modules/publication/discussion"},{"title":"Find your registry","_path":"/modules/publication/ex_registries"},{"title":"Software publication","_path":"/modules/publication"},{"title":"Learning objectives","_path":"/modules/publication/info"},{"title":"Reading material","_path":"/modules/publication/reading"},{"title":"Publishing Software","_path":"/modules/publication/slides-publication"},{"title":"Software publication pipeline","_path":"/modules/publication/software_publication_pipeline"}]},{"title":"Research software","_path":"/modules/researchsoftware","children":[{"title":"Is it research software?","_path":"/modules/researchsoftware/exercise-is-it-research-software"},{"title":"Where does software fit in the research life cycle?","_path":"/modules/researchsoftware/exercise-research-life-cycle"},{"title":"Research software","_path":"/modules/researchsoftware"},{"title":"Learning objectives","_path":"/modules/researchsoftware/info"},{"title":"The role of research software","_path":"/modules/researchsoftware/research-software"},{"title":"Research Software","_path":"/modules/researchsoftware/slides-researchsoftware"},{"title":"What is software?","_path":"/modules/researchsoftware/slides-software"},{"title":"Software is data","_path":"/modules/researchsoftware/software-and-data"}]},{"title":"Software Management Plans","_path":"/modules/smp","children":[{"title":"Exercise 1","_path":"/modules/smp/exercise1"},{"title":"Exercise 2","_path":"/modules/smp/exercise2"},{"title":"Exercise 3","_path":"/modules/smp/exercise3"},{"title":"Software Management Plans","_path":"/modules/smp"},{"title":"Learning objectives","_path":"/modules/smp/info"},{"title":"Reading material","_path":"/modules/smp/reading"},{"title":"Software Management Plans","_path":"/modules/smp/slides-smp"}]},{"title":"Software testing","_path":"/modules/testing","children":[{"title":"Exercise 1","_path":"/modules/testing/exercise1"},{"title":"Exercise 2","_path":"/modules/testing/exercise2"},{"title":"Exercise 3","_path":"/modules/testing/exercise3"},{"title":"Software testing","_path":"/modules/testing"},{"title":"Learning objectives","_path":"/modules/testing/info"},{"title":"Software Testing","_path":"/modules/testing/presentation"},{"title":"Reading material","_path":"/modules/testing/reading"}]},{"title":"Software version control","_path":"/modules/version-control","children":[{"title":"Software version control","_path":"/modules/version-control"},{"title":"Learning objectives","_path":"/modules/version-control/info"}]},{"title":"Versioning & Changelog","_path":"/modules/versioning","children":[{"title":"Versioning & Changelog","_path":"/modules/versioning"},{"title":"Learning objectives","_path":"/modules/versioning/info"}]}]},{"title":"Research Software Support","_path":"/readme"}]} \ No newline at end of file +{"generatedAt":1715801013539,"generateTime":620,"contents":[{"_path":"/config","_dir":"","_draft":false,"_partial":false,"_locale":"","publicProps":{"title":"Research Software Support","baseURL":"research-software-support","repoName":"research-software-support","repoOwner":"esciencecenter-digital-skills","organization":"Netherlands eScience Center","categoryOrder":["Getting started","Reusability","Publishing & Citing","Development","Upcoming (under construction)"]},"_id":"local_fs:config.json","_type":"json","title":"Config","_source":"local_fs","_file":"config.json","_extension":"json"},{"_path":"/","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Hello world","description":"Here is some markdown content.","body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"hello-world"},"children":[{"type":"text","value":"Hello world"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here is some markdown content."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"/lessons/demo"},"children":[{"type":"text","value":"Demo lesson link"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:index.md","_source":"local_fs","_file":"index.md","_extension":"md"},{"_path":"/license","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"LICENSE","description":"The content of the modules/ folder of this project is licensed under a Creative Commons Attribution 4.0 International License.","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"rel":["license"],"href":"http://creativecommons.org/licenses/by/4.0/"},"children":[{"type":"element","tag":"img","props":{"alt":"Creative Commons License","style":"border-width:0","src":"https://i.creativecommons.org/l/by/4.0/88x31.png"},"children":[]}]},{"type":"element","tag":"br","props":{},"children":[]},{"type":"text","value":"The content of the "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"modules/"}]},{"type":"text","value":" folder of this project is licensed under a "},{"type":"element","tag":"a","props":{"rel":["license"],"href":"http://creativecommons.org/licenses/by/4.0/"},"children":[{"type":"text","value":"Creative Commons Attribution 4.0 International License"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This license does not apply to any image files in the "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"modules"}]},{"type":"text","value":" folder or its subfolders.\nImage files are files with "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".png"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".jpg"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".svg"}]},{"type":"text","value":", or "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".gif"}]},{"type":"text","value":" extensions."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:LICENSE.md","_source":"local_fs","_file":"LICENSE.md","_extension":"md"},{"_path":"/main/about","_dir":"main","_draft":false,"_partial":false,"_locale":"","title":"About","description":"","body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"about-the-research-software-support"},"children":[{"type":"text","value":"About the Research Software Support"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support."}]},{"type":"element","tag":"h2","props":{"id":"target-audience"},"children":[{"type":"text","value":"Target audience"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"about-the-research-software-support","depth":2,"text":"About the Research Software Support"},{"id":"target-audience","depth":2,"text":"Target audience"}]}},"_type":"markdown","_id":"local_fs:main:about.md","_source":"local_fs","_file":"main/about.md","_extension":"md"},{"_path":"/main/contribute","_dir":"main","_draft":false,"_partial":false,"_locale":"","title":"Contribute","description":"","body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"contributing-to-the-research-software-support"},"children":[{"type":"text","value":"Contributing to the Research Software Support"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project."}]},{"type":"element","tag":"h3","props":{"id":"what-can-i-do"},"children":[{"type":"text","value":"What can I do?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Go to our github repository by clicking on the GitHub logo in the top right of this website."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Contribute to the content discussion in the "},{"type":"element","tag":"a","props":{"href":"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory","rel":["nofollow"]},"children":[{"type":"text","value":"chapter issues"}]},{"type":"text","value":", e.g. by listing good resources for information."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#elements-of-a-module"},"children":[{"type":"text","value":"Author a lesson"}]},{"type":"text","value":", e.g. by:\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#slides"},"children":[{"type":"text","value":"Creating slides"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#exercises"},"children":[{"type":"text","value":"Designing an exercise"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"#online-resources"},"children":[{"type":"text","value":"Curating online resources"}]}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Review a lesson module; both by looking at "},{"type":"element","tag":"a","props":{"href":"https://github.com/esciencecenter-digital-skills/research-software-support/pulls","rel":["nofollow"]},"children":[{"type":"text","value":"open PRs"}]},{"type":"text","value":", as well as flagging issues for improvement in the "},{"type":"element","tag":"a","props":{"href":"https://esciencecenter-digital-skills.github.io/research-software-support/","rel":["nofollow"]},"children":[{"type":"text","value":"existing content"}]},{"type":"text","value":"."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/esciencecenter-digital-skills/research-software-support/issues","rel":["nofollow"]},"children":[{"type":"text","value":"Provide feedback"}]},{"type":"text","value":" on the different subjects covered: what did we miss? Should something be restructured?"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"contributing-to-the-research-software-support","depth":2,"text":"Contributing to the Research Software Support","children":[{"id":"what-can-i-do","depth":3,"text":"What can I do?"}]}]}},"_type":"markdown","_id":"local_fs:main:contribute.md","_source":"local_fs","_file":"main/contribute.md","_extension":"md"},{"_path":"/modules/citation/citationcff","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"The `CITATION.cff` file","description":"","type":"reading","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"the-citationcff-file"},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":" file"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To facilitate the citation of scientific software, a group of software developers, researchers, and publishers have come together to develop the "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":" format. A "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":" file is a lightweight, machine-readable file that provides information about the software, its creators, and how it should be cited. This file can be included in the software, and should be easy to find and access."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are even nice integrations with GitHub and Zenodo."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here is an example of a "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":" file:"}]},{"type":"element","tag":"pre","props":{"code":"cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n - family-names: Druskat\n given-names: Stephan\n orcid: https://orcid.org/1234-5678-9101-1121\ntitle: \"My Research Software\"\nversion: 2.0.4\nidentifiers:\n - type: doi\n value: 10.5281/zenodo.1234\ndate-released: 2021-08-11\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n - family-names: Druskat\n given-names: Stephan\n orcid: https://orcid.org/1234-5678-9101-1121\ntitle: \"My Research Software\"\nversion: 2.0.4\nidentifiers:\n - type: doi\n value: 10.5281/zenodo.1234\ndate-released: 2021-08-11\n"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-citationcff-file","depth":2,"text":"The CITATION.cff file"}]}},"_type":"markdown","_id":"local_fs:modules:citation:citationcff.md","_source":"local_fs","_file":"modules/citation/citationcff.md","_extension":"md"},{"_path":"/modules/citation/create_citation_file","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"Using cffinit to create `CITATION.cff`","description":"","type":"exercise","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"using-cffinit-to-create-citationcff"},"children":[{"type":"text","value":"Using cffinit to create "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This tutorial demonstrates the use of CFFinit, to create a "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":" file. You can find the tool at "},{"type":"element","tag":"a","props":{"href":"https://citation-file-format.github.io/cff-initializer-javascript/#/","rel":["nofollow"]},"children":[{"type":"text","value":"citation-file-format.github.io/cff-initializer-javascript"}]},{"type":"text","value":"."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"using-cffinit-to-create-citationcff","depth":2,"text":"Using cffinit to create CITATION.cff"}]}},"_type":"markdown","_id":"local_fs:modules:citation:create_citation_file.md","_source":"local_fs","_file":"modules/citation/create_citation_file.md","_extension":"md"},{"_path":"/modules/citation/ex_when_to_cite","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"Which software should I cite?","description":"","type":"exercise","order":6,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"exercise-which-software-should-i-cite"},"children":[{"type":"text","value":"Exercise: Which software should I cite?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suppose you are writing a paper on your latest research and are putting together the reference list. During your research you have used all the software mentioned below."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Ubuntu - Operating System ()"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Microsoft word - text editor (used to write the paper, take notes)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Git - Version control software ()"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Numpy - Python math library (used in nearly all python-based research software)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"ESMValTool - Diagnostic tool/library for Earth System Models (Used in many climate research projects)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"ClimAnal - Your own domain specific python library (defines various analytical functions that you used in your climate research)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The original code on which you based your library ClimAnal"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your own local python script, used to execute the analysis"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Which software would you cite and which not? Why?"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"exercise-which-software-should-i-cite","depth":2,"text":"Exercise: Which software should I cite?"}]}},"_type":"markdown","_id":"local_fs:modules:citation:ex_when_to_cite.md","_source":"local_fs","_file":"modules/citation/ex_when_to_cite.md","_extension":"md"},{"_path":"/modules/citation/further_reading","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"Reading material","description":"","type":"reading","order":7,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"links-for-further-reading"},"children":[{"type":"text","value":"Links for further reading"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The FORCE11 "},{"type":"element","tag":"a","props":{"href":"https://force11.org/info/software-citation-principles-published-2016/","rel":["nofollow"]},"children":[{"type":"text","value":"Software Citation Principles"}]},{"type":"text","value":" describe the rationale behind software citation."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"An interactive guide on software citation can be found at "},{"type":"element","tag":"a","props":{"href":"https://cfa-library.github.io/citesoftware.org/","rel":["nofollow"]},"children":[{"type":"text","value":"citesoftware.org"}]},{"type":"text","value":"."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"An extensive (non-interactive) guide can be found at "},{"type":"element","tag":"a","props":{"href":"https://cite.research-software.org/","rel":["nofollow"]},"children":[{"type":"text","value":"cite.research-software.org"}]},{"type":"text","value":"."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"To provide citation information "},{"type":"element","tag":"a","props":{"href":"https://citation-file-format.github.io/","rel":["nofollow"]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":" files can be created using the online "},{"type":"element","tag":"a","props":{"href":"https://citation-file-format.github.io/cff-initializer-javascript/#/","rel":["nofollow"]},"children":[{"type":"text","value":"CFFInit"}]},{"type":"text","value":" tool."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://mr-c.github.io/shouldacite/","rel":["nofollow"]},"children":[{"type":"text","value":"Shouldacite"}]},{"type":"text","value":" helps you decide when to cite software in your publications."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"links-for-further-reading","depth":2,"text":"Links for further reading"}]}},"_type":"markdown","_id":"local_fs:modules:citation:further_reading.md","_source":"local_fs","_file":"modules/citation/further_reading.md","_extension":"md"},{"_path":"/modules/citation","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software citation","description":"thumbnail-citation","id":0,"trl":"medium","category":"Publishing & Citing","author":"eScience Center","thumbnail":"thumbnail-citation.jpg","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/difficult-roads-lead-to-beautiful-destinations-desk-decor-z1d-LP8sjuI?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-citation"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@helloimnik?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Nik"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/difficult-roads-lead-to-beautiful-destinations-desk-decor-z1d-LP8sjuI?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:citation:index.md","_source":"local_fs","_file":"modules/citation/index.md","_extension":"md"},{"_path":"/modules/citation/info","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the Citation module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the Citation module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:citation:info.md","_source":"local_fs","_file":"modules/citation/info.md","_extension":"md"},{"_path":"/modules/citation/introduction","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"Citing software","description":"","type":"reading","order":2,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"citing-software"},"children":[{"type":"text","value":"Citing software"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software has become a crucial part of scientific research, yet it is not cited or credited as often and as easily as traditional research outputs. However, it is important to properly cite software, for many reasons, among which:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Understanding Research Fields"}]},{"type":"text","value":": Software is a product of research, and by not citing it, we leave holes in the record of research of progress in those fields."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Recognition"}]},{"type":"text","value":": Academic researchers at all levels, including students, postdocs, faculty, and staff, should be credited for the software products they develop and contribute to, particularly when those products enable or further research done by others. Non-academic researchers should also be credited for their software work, though the specific forms of credit are different than for academic researchers. Furthermore, citations can be tracked, which allows for more accurate assessment of the software's impact: who uses it, and what projects does it contribute to?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Discovering Software"}]},{"type":"text","value":": Citations enable the specific software used in a research product to be found. Additional researchers can then use the same software for different purposes, leading to credit for those responsible for the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Reproducibility"}]},{"type":"text","value":": Citation of specific software used is a crucial step in allowing other researchers to reproduce your results, although it is not sufficient. Additional information such as configurations and platform issues are also needed. Accurate information about the software — and its version! — used in your research is necessary for others to obtain and use the same software, making it easier to validate and build upon your research."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In this module, we will further illustrate the importance of software citation, and we will demonstrate how scientific software can be cited, and how to facilitate this as the author of scientific software. Here, you will be introduced to the file type "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]},{"type":"text","value":", which was developed especially for this purpose.\n:::"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"citing-software","depth":2,"text":"Citing software"}]}},"_type":"markdown","_id":"local_fs:modules:citation:introduction.md","_source":"local_fs","_file":"modules/citation/introduction.md","_extension":"md"},{"_path":"/modules/citation/principles","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"The principles","description":"","type":"reading","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"the-force11-working-group-published-the-software-citation-principles"},"children":[{"type":"text","value":"The FORCE11 working group published the "},{"type":"element","tag":"a","props":{"href":"https://force11.org/info/software-citation-principles-published-2016/","rel":["nofollow"]},"children":[{"type":"text","value":"Software Citation Principles"}]}]},{"type":"element","tag":"h3","props":{"id":"the-principles"},"children":[{"type":"text","value":"The principles"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Importance"}]},{"type":"text","value":": Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Credit and Attribution"}]},{"type":"text","value":": Software citations should facilitate giving scholarly credit and normative, legal attribution to all contributors to the software, recognizing that a single style or mechanism of attribution may not be applicable to all software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Unique Identification"}]},{"type":"text","value":": A software citation should include a method for identification that is machine actionable, globally unique, interoperable, and recognized by at least a community of the corresponding domain experts, and preferably by general public researchers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Persistence"}]},{"type":"text","value":": Unique identifiers and metadata describing the software and its disposition should persist – even beyond the lifespan of the software they describe."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Accessibility"}]},{"type":"text","value":": Software citations should facilitate access to the software itself and to its associated metadata, documentation, data, and other materials necessary for both humans and machines to make informed use of the referenced software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Specificity"}]},{"type":"text","value":": Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-force11-working-group-published-the-software-citation-principles","depth":2,"text":"The FORCE11 working group published the Software Citation Principles","children":[{"id":"the-principles","depth":3,"text":"The principles"}]}]}},"_type":"markdown","_id":"local_fs:modules:citation:principles.md","_source":"local_fs","_file":"modules/citation/principles.md","_extension":"md"},{"_path":"/modules/citation/slides-citation","_dir":"citation","_draft":false,"_partial":false,"_locale":"","title":"Software Citation","description":"","type":"slides","order":1,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h1","props":{"id":"software-citation"},"children":[{"type":"text","value":"Software Citation"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"why-would-you-cite-software"},"children":[{"type":"text","value":"Why would you cite software?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Understanding Research Fields"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Credit for the researcher"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Recognition of the software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Discovering Software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reproducibility"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Understanding Research Fields"}]},{"type":"text","value":": Software is a product of research, and by not citing it, we leave holes in the record of research of progress in those fields."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Credit"}]},{"type":"text","value":": Academic researchers at all levels, including students, postdocs, faculty, and staff, should be credited for the software products they develop and contribute to, particularly when those products enable or further research done by others. Non-academic researchers should also be credited for their software work, though the specific forms of credit are different than for academic researchers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Discovering Software"}]},{"type":"text","value":": Citations enable the specific software used in a research product to be found. Additional researchers can then use the same software for different purposes, leading to credit for those responsible for the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Reproducibility"}]},{"type":"text","value":": Citation of specific software used is necessary for reproducibility, although not sufficient. Additional information such as configurations and platform issues are also needed."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"the-software-citation-principles"},"children":[{"type":"text","value":"The software citation principles"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Importance"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Credit and attribution"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Unique Identification"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Persistence"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Accessibility"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Specificity"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Importance"}]},{"type":"text","value":": Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Credit and Attribution"}]},{"type":"text","value":": Software citations should facilitate giving scholarly credit and normative, legal attribution to all contributors to the software, recognizing that a single style or mechanism of attribution may not be applicable to all software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Unique Identification"}]},{"type":"text","value":": A software citation should include a method for identification that is machine actionable, globally unique, interoperable, and recognized by at least a community of the corresponding domain experts, and preferably by general public researchers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Persistence"}]},{"type":"text","value":": Unique identifiers and metadata describing the software and its disposition should persist – even beyond the lifespan of the software they describe."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Accessibility"}]},{"type":"text","value":": Software citations should facilitate access to the software itself and to its associated metadata, documentation, data, and other materials necessary for both humans and machines to make informed use of the referenced software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Specificity"}]},{"type":"text","value":": Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"what-software-to-cite"},"children":[{"type":"text","value":"What software to cite?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"\"\"...the software itself should be cited on the same basis as any other research product; authors should cite the appropriate set of software products.\""}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Which software would you cite?"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"how-to-make-your-software-citable"},"children":[{"type":"text","value":"How to make your software citable?"}]},{"type":"element","tag":"h2","props":{"id":""},"children":[]},{"type":"element","tag":"h2","props":{"id":"citationcff"},"children":[{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"CITATION.cff"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"pre","props":{"code":"cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n - family-names: Druskat\n given-names: Stephan\n orcid: https://orcid.org/1234-5678-9101-1121\ntitle: \"My Research Software\"\nversion: 2.0.4\nidentifiers:\n - type: doi\n value: 10.5281/zenodo.1234\ndate-released: 2021-08-11\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n - family-names: Druskat\n given-names: Stephan\n orcid: https://orcid.org/1234-5678-9101-1121\ntitle: \"My Research Software\"\nversion: 2.0.4\nidentifiers:\n - type: doi\n value: 10.5281/zenodo.1234\ndate-released: 2021-08-11\n"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"why-would-you-cite-software","depth":2,"text":"Why would you cite software?"},{"id":"the-software-citation-principles","depth":2,"text":"The software citation principles"},{"id":"what-software-to-cite","depth":2,"text":"What software to cite?"},{"id":"how-to-make-your-software-citable","depth":2,"text":"How to make your software citable?"},{"id":"","depth":2,"text":""},{"id":"citationcff","depth":2,"text":"CITATION.cff"}]}},"_type":"markdown","_id":"local_fs:modules:citation:slides-citation.pmd","_source":"local_fs","_file":"modules/citation/slides-citation.pmd","_extension":"pmd"},{"_path":"/modules/documentation","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software documentation","description":"","id":1,"trl":"medium","category":"Upcoming (under construction)","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"documentation"},"children":[{"type":"text","value":"Documentation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"documentation","depth":2,"text":"Documentation"}]}},"_type":"markdown","_id":"local_fs:modules:documentation:index.md","_source":"local_fs","_file":"modules/documentation/index.md","_extension":"md"},{"_path":"/modules/documentation/info","_dir":"documentation","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:documentation:info.md","_source":"local_fs","_file":"modules/documentation/info.md","_extension":"md"},{"_path":"/modules/environments","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Environments & Containers","description":"","id":2,"trl":"medium","category":"Upcoming (under construction)","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"environments-containers"},"children":[{"type":"text","value":"Environments & Containers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"environments-containers","depth":2,"text":"Environments & Containers"}]}},"_type":"markdown","_id":"local_fs:modules:environments:index.md","_source":"local_fs","_file":"modules/environments/index.md","_extension":"md"},{"_path":"/modules/environments/info","_dir":"environments","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:environments:info.md","_source":"local_fs","_file":"modules/environments/info.md","_extension":"md"},{"_path":"/modules/fairsoftware/exercise1","_dir":"fairsoftware","_draft":false,"_partial":false,"_locale":"","title":"What is FAIR?","description":"","type":"exercise","order":2,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-1"},"children":[{"type":"text","value":"Exercise 1"}]},{"type":"element","tag":"h2","props":{"id":"what-is-fair"},"children":[{"type":"text","value":"What is FAIR?"}]},{"type":"element","tag":"h3","props":{"id":"fair-principles-15-minutes"},"children":[{"type":"text","value":"FAIR principles (15 minutes)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The FAIR principles are:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"F"}]},{"type":"text","value":"indable"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"A"}]},{"type":"text","value":"ccessible"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"I"}]},{"type":"text","value":"nteroperable"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"R"}]},{"type":"text","value":"eusable"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"They were originally introduced in "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.1038/sdata.2016.18","rel":["nofollow"]},"children":[{"type":"text","value":"this paper by Wilkinson et al."}]},{"type":"text","value":".\nThis paper is a good starting point to learn more about FAIR, but if you are already familiar with the concept, a quick skim of the paper should do.\nThe most important take-away from this particular paper is the point that FAIR, while originally a data-specific concept, was designed with other digital objects in mind as well."}]},{"type":"element","tag":"h3","props":{"id":"fair-software-10-minutes"},"children":[{"type":"text","value":"FAIR software (10 minutes)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To extend the FAIR principles to software, the "},{"type":"element","tag":"a","props":{"href":"https://force11.org/groups/fair-4-research-software-fair4rs-working-group/","rel":["nofollow"]},"children":[{"type":"text","value":"FAIR 4 Research Software working group"}]},{"type":"text","value":" was formed.\nTheir paper "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.1038/s41597-022-01710-x","rel":["nofollow"]},"children":[{"type":"text","value":"Introducing the FAIR principles for research software"}]},{"type":"text","value":" describes in more practical terms how FAIR can be applied to software."}]},{"type":"element","tag":"h4","props":{"id":"you-should-now-be-able-to"},"children":[{"type":"text","value":"You should now be able to"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Understand the different facets of FAIR"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Be aware of the machine-actionable nature of FAIR"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Get a feeling for additional challenges that software poses to FAIR"}]}]},{"type":"element","tag":"h3","props":{"id":"fair-software-20-minutes-optional"},"children":[{"type":"text","value":"FAIR software (20 minutes, optional)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"While the intepretation of the FAIR4RS working group has been the dominant set of principles since its publication, it was not the first attempt to apply FAIR to software.\n"},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.3233/ds-190026","rel":["nofollow"]},"children":[{"type":"text","value":"This paper by Anna Lena Lamprecht et al."}]},{"type":"text","value":" was published a few years earlier, and also described an extension of the FAIR principles for software.\nThe paper is a more elaborate in its descriptions of software, the different aspects of software, and how they are or are not addressed by FAIR.\nIt is a good read if you want to get a deeper understanding of software and its relation to the FAIR principles."}]},{"type":"element","tag":"h3","props":{"id":"discussion"},"children":[{"type":"text","value":"Discussion"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What are the differences between FAIR principles for data and software?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What challenges do you see in making software FAIR?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Why is FAIR software important?"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"what-is-fair","depth":2,"text":"What is FAIR?","children":[{"id":"fair-principles-15-minutes","depth":3,"text":"FAIR principles (15 minutes)"},{"id":"fair-software-10-minutes","depth":3,"text":"FAIR software (10 minutes)"},{"id":"fair-software-20-minutes-optional","depth":3,"text":"FAIR software (20 minutes, optional)"},{"id":"discussion","depth":3,"text":"Discussion"}]}]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:exercise1.md","_source":"local_fs","_file":"modules/fairsoftware/exercise1.md","_extension":"md"},{"_path":"/modules/fairsoftware/exercise2","_dir":"fairsoftware","_draft":false,"_partial":false,"_locale":"","title":"Mapping the principles","description":"","type":"exercise","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-2"},"children":[{"type":"text","value":"Exercise 2"}]},{"type":"element","tag":"h2","props":{"id":"mapping-the-principles"},"children":[{"type":"text","value":"Mapping the principles"}]},{"type":"element","tag":"h3","props":{"id":"the-fair4rs-principles-are"},"children":[{"type":"text","value":"The FAIR4RS Principles are:"}]},{"type":"element","tag":"h4","props":{"id":"f-software-and-its-associated-metadata-is-easy-for-both-humans-and-machines-to-find"},"children":[{"type":"text","value":"F: Software, and its associated metadata, is easy for both humans and machines to find."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"F1. Software is assigned a globally unique and persistent identifier.\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"F1.1. Components of the software representing levels of granularity are assigned distinct identifiers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"F1.2. Different versions of the software are assigned distinct identifiers."}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"F2. Software is described with rich metadata."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"F3. Metadata clearly and explicitly include the identifier of the software they describe."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"F4. Metadata are FAIR, searchable and indexable."}]}]},{"type":"element","tag":"h4","props":{"id":"a-software-and-its-metadata-is-retrievable-via-standardised-protocols"},"children":[{"type":"text","value":"A: Software, and its metadata, is retrievable via standardised protocols."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A1. Software is retrievable by its identifier using a standardised communications protocol.\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A1.1. The protocol is open, free, and universally implementable."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A1.2. The protocol allows for an authentication and authorization procedure, where necessary."}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A2. Metadata are accessible, even when the software is no longer available."}]}]},{"type":"element","tag":"h4","props":{"id":"i-software-interoperates-with-other-software-by-exchanging-data-andor-metadata-andor-through-interaction-via-application-programming-interfaces-apis-described-through-standards"},"children":[{"type":"text","value":"I: Software interoperates with other software by exchanging data and/or metadata, and/or through interaction via application programming interfaces (APIs), described through standards."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I1. Software reads, writes and exchanges data in a way that meets domain-relevant community standards."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I2. Software includes qualified references to other objects."}]}]},{"type":"element","tag":"h4","props":{"id":"r-software-is-both-usable-can-be-executed-and-reusable-can-be-understood-modified-built-upon-or-incorporated-into-other-software"},"children":[{"type":"text","value":"R: Software is both usable (can be executed) and reusable (can be understood, modified, built upon, or incorporated into other software)."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"R1. Software is described with a plurality of accurate and relevant attributes.\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"R1.1. Software is given a clear and accessible license."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"R1.2. Software is associated with detailed provenance."}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"R2. Software includes qualified references to other software."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"R3. Software meets domain-relevant community standards."}]}]},{"type":"element","tag":"h3","props":{"id":"three-examples"},"children":[{"type":"text","value":"Three examples"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The following three examples of software have been described with statements that can be mapped to the FAIR4RS Principles. With each statement, identify the principle(s) it maps to, and the (sub)facet(s) of the principle(s) it addresses. A single statement may map to multiple (sub)facets."}]},{"type":"element","tag":"h4","props":{"id":"example-1-comet"},"children":[{"type":"text","value":"Example 1: "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.1002/pmic.201200439","rel":["nofollow"]},"children":[{"type":"text","value":"Comet"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Comet is a command-line tool and desktop application for tandem mass spectrometry sequence database search6."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Comet is licensed under the Apache 2.0 open source licence."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Comet is registered in the bio.tools catalogue of bioinformatics tools, where it has a globally unique and persistent identifier, and rich metadata that includes the identifier and is searchable and indexable."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The metadata in bio.tools is independent from the Comet repository, and will stay accessible should the software itself become inaccessible."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The publicly accessible project repository on GitHub includes detailed information about the development of Comet."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The code includes dependencies to external software packages, such as Thermo Scientific’s MSFileReader library."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Comet can be downloaded via the browser following the links provided in the metadata using https."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Comet uses standard data types from the proteomics domain for its input and output data that are documented in the metadata as functional annotations."}]}]},{"type":"element","tag":"h4","props":{"id":"example-2-puregome"},"children":[{"type":"text","value":"Example 2: "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5281/zenodo.4337242","rel":["nofollow"]},"children":[{"type":"text","value":"PureGoMe"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"PuReGoMe is a project aimed at understanding Dutch public sentiment during the COVID-19 outbreak period by analysing real-time Twitter data. It provides a collection of Python scripts and Jupyter notebooks for this purpose."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PureGoMe can be downloaded from the project repository, while metadata is accessible independently from the registry."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PuReGoMe's GitHub repository has detailed records of the development history."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The code includes dependencies to other software, such as various Python libraries."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PuReGoMe has a (versioned) DOI from Zenodo."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PuReGoMe uses the Apache 2.0 open source licence."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PuReGoMe uses standard file formats (e.g., CSV files) for data exchange."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PuReGoMe refers to other objects such as websites."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"PureGoMe is registered in the Research Software Directory that captures the most relevant metadata, including the identifier, in searchable and indexable form."}]}]},{"type":"element","tag":"h4","props":{"id":"example-3-gammashiny"},"children":[{"type":"text","value":"Example 3: "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5281/zenodo.4139005","rel":["nofollow"]},"children":[{"type":"text","value":"gammaShiny"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"gammaShiny is an application that provides enhanced graphical user interfaces for the R gamma package8. It is used to process in-situ gamma-ray spectrometry measurements for luminescence dating."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"gammaShiny has been deposited in the HAL French national archive and it has a persistent globally unique identifier, with the HAL identifier of the metadata record and a SWHID, identifying specifically the software artefact on the Software Heritage universal software source code archive."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Thanks to the HAL platform, where a licence is mandatory, gammaShiny is under a GNU General Public Licence v3.0."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The archived versions of gammaShiny’s source code in Software Heritage include a codemeta.json file, identifiable with a SWHID, where other metadata is available including dependencies named in CodeMeta (\"softwareRequirements\")."}]}]},{"type":"element","tag":"h3","props":{"id":"do-you-agree"},"children":[{"type":"text","value":"Do you agree?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The examples were taken from "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.1038/s41597-022-01710-x","rel":["nofollow"]},"children":[{"type":"text","value":"this paper"}]},{"type":"text","value":".\nIn the Results section of the paper you will find the authors' analysis of the software, which contains the statements above, mapped to the FAIR4RS Principles."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Do you agree with their assessment?"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"mapping-the-principles","depth":2,"text":"Mapping the principles","children":[{"id":"the-fair4rs-principles-are","depth":3,"text":"The FAIR4RS Principles are:"},{"id":"three-examples","depth":3,"text":"Three examples"},{"id":"do-you-agree","depth":3,"text":"Do you agree?"}]}]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:exercise2.md","_source":"local_fs","_file":"modules/fairsoftware/exercise2.md","_extension":"md"},{"_path":"/modules/fairsoftware/exercise3","_dir":"fairsoftware","_draft":false,"_partial":false,"_locale":"","title":"FAIR in practice","description":"","type":"exercise","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-3"},"children":[{"type":"text","value":"Exercise 3"}]},{"type":"element","tag":"h2","props":{"id":"fair-in-practice"},"children":[{"type":"text","value":"FAIR in practice"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Role playing exercise:\nOne person presents the software, the other person gives feedback."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tasks for presenter:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What is the software about?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Who will use it?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What is the expected lifecycle of the software?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What potential users or applications are untapped?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tasks for reviewer:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Which FAIR principles are addressed?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How can the software be made more FAIR?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What would be the next step (low-hanging fruit)?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Together:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Define the next steps for the software"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Goals:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Frame an assessment positively: always start with assessing the things that have been done that contribute to good management and FAIR software. This is crucial, as well as motivating."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"fair-in-practice","depth":2,"text":"FAIR in practice"}]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:exercise3.md","_source":"local_fs","_file":"modules/fairsoftware/exercise3.md","_extension":"md"},{"_path":"/modules/fairsoftware","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"FAIR software","description":"thumbnail-fair-software","id":3,"trl":"medium","category":"Getting started","author":"eScience Center","thumbnail":"thumbnail-fair-software.jpg","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/three-men-sitting-while-using-laptops-and-watching-man-beside-whiteboard-wD1LRb9OeEo?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-fair-software"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@austindistel?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Austin Distel"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/three-men-sitting-while-using-laptops-and-watching-man-beside-whiteboard-wD1LRb9OeEo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:index.md","_source":"local_fs","_file":"modules/fairsoftware/index.md","_extension":"md"},{"_path":"/modules/fairsoftware/info","_dir":"fairsoftware","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:info.md","_source":"local_fs","_file":"modules/fairsoftware/info.md","_extension":"md"},{"_path":"/modules/fairsoftware/reading","_dir":"fairsoftware","_draft":false,"_partial":false,"_locale":"","title":"Reading material","description":"","type":"reading","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"reading-material"},"children":[{"type":"text","value":"Reading material"}]},{"type":"element","tag":"h2","props":{"id":"fair-software"},"children":[{"type":"text","value":"FAIR software"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Follow the links below to read about other resources related to FAIR research software."}]},{"type":"element","tag":"h3","props":{"id":"fair-research-software-principles-adoption"},"children":[{"type":"text","value":"FAIR Research Software Principles adoption"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The FAIR4RS Principles were "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.15497/RDA00068","rel":["nofollow"]},"children":[{"type":"text","value":"released in 2022"}]},{"type":"text","value":", and since then there have been many efforts for adopting them.\nThe blog post "},{"type":"element","tag":"a","props":{"href":"https://www.researchsoft.org/blog/2024-03/","rel":["nofollow"]},"children":[{"type":"text","value":"The FAIR for Research Software Principles after two years: an adoption update"}]},{"type":"text","value":" contains a summary of these efforts."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"fair-software","depth":2,"text":"FAIR software","children":[{"id":"fair-research-software-principles-adoption","depth":3,"text":"FAIR Research Software Principles adoption"}]}]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:reading.md","_source":"local_fs","_file":"modules/fairsoftware/reading.md","_extension":"md"},{"_path":"/modules/fairsoftware/slides-fairsoftware","_dir":"fairsoftware","_draft":false,"_partial":false,"_locale":"","title":"FAIR software","description":"","type":"slides","order":1,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h1","props":{"id":"fair-software"},"children":[{"type":"text","value":"FAIR software"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"ceci-nest-pas-une-photo"},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Ceci n'est pas une photo"}]}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Black_hole_-_Messier_87_crop_max_res.jpg/1280px-Black_hole_-_Messier_87_crop_max_res.jpg","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://doi.org/10.3847/2041-8213/ab0ec7","rel":["nofollow"]},"children":[{"type":"text","value":"The Event Horizon Telescope Collaboration et al. 2019"}]},{"type":"text","value":" (CC BY 3.0)"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software plays an important role in science. A first thought may be its role in data collection and analysis. Further, it may play a role in designing experiments, based on models generated. It may "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"be"}]},{"type":"text","value":" the experiment itself, simulate a research outcome based on data or ideas entered; it may also be the \"brain\" behind controlling crucial instrumentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What scientific software can you think of?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What role does it play?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An example here: the Event Horizon Telescope, which took a \"picture\" of a black hole.\nThe \"telescope\" is not a single tool, but complex: a \"planet-scale array of eight ground-based radio telescopes\" (wikipedia).\nThe separate telescopes collect data that is synchronized with atomic clocks, and the data is combined at highly specialised supercomputers.\nThe data can be converted into an image using custom software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/definition.png","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":"definition of Research Software from the FAIR4RS working group"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A definition of research software, from the FAIR4RS working group.\nIt is important that not all software that is used in research is research software.\nFor example, a text editor that is used to write a paper is not research software.\nNor is powerpoint, a web browser, or the software used to guide the telescope.\nEven tools like R or Python are not necessarily research software.\nThe code written in R or Python for an analysis would be research software, however.\nJust like a custom-made Excel macro that is used to analyse data.\nOr a custom-made web application that is used to collect data."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/unescoopenscience.png","width":"50%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://creativecommons.org/2021/12/02/unesco-recommendation-on-open-science-ratified/","rel":["nofollow"]},"children":[{"type":"text","value":"UNESCO Recommendation on Open Science, 2021"}]},{"type":"text","value":" (CC BY IGO 3.0)"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nOpen Science encompasses many aspects of science.\nIt is a movement that aims to make science — which includes software — more open, transparent, and accessible.\nThis is supported by many organisations, including UNESCO."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"the-fair-principles"},"children":[{"type":"text","value":"The FAIR principles"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/fair.png","width":"60%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nthe FAIR principles standardize values that help openness, transparency, and accessibility."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"screenshot Wilkinson 2016","src":"media/fairwilkinson.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nFAIR principles were originally designed for data, but are also applicable to software.\nDesigned also with other digital objects in mind, though actual description was data-specific.\nThis has been extended meanwhile."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-is-not-data"},"children":[{"type":"text","value":"Software is not data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is..."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"complex"}]},{"type":"text","value":": code is creatively generated, interconnected and multi-layered"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"interdependent"}]},{"type":"text","value":": it builds upon and therefore depends on other software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"executable"}]},{"type":"text","value":": it is not static, but can be run"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"dynamic"}]},{"type":"text","value":": it can break over time, and versioning is common"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nWhile technically, software is a special kind of data (in that it is representation of information in a digital state), they are in essence quite different."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software and data both are digital objects, sharing certain characteristics: they can be assigned a DOI, and they can have a license."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is quite different from data, however. Consider:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Complexity; it is not a single file, but a collection of files that are interconnected and multi-layered, and do not necessarily stand on their own. Software is also the result of a creative process that provides a tool to do something, and not the result of a measurement or observation."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interdependence; software is often built using other software, and rarely built completely from scratch. This makes it dependent on other existing applications, which themselves may also change over time."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Executability; software is in its dryest form a set of instructions that can be an archive of a procedure. However, the main goal of software is that these instructions can be executed. Data, by contrast, stand on their own."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Dynamic vs static; its interdependence and context-dependency drives software to require maintenance to retain its value, and this maintenance is not straightforward. Maintenance is also counter to academic culture; it does not fit in existing structures (both in terms of reward/recognition, but also in terms of funding and understanding of what is needed). Versioning of software is very common, while data is often static (though versions may happen)."}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-opportunities"},"children":[{"type":"text","value":"Software opportunities"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is a "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"living thing"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Creative process allows for "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"early adoption"}]},{"type":"text","value":" of good practices"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Openness and transparency are "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"inherent"}]},{"type":"text","value":" to software"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe different nature of software also provides opportunities.\nSoftware is a living thing, and therefore it is easier to adopt good practices early on.\nCrucially, there is a community driven openness in software that long predates the open science movement.\nThis is not to say that software is inherently open, but that there is a broad open culture, which also comes with existing tools and pathways to facilitate openness and transparency.\nConsider GitHub (and other code hosting platforms), which are designed for this purpose.\nConsider also version control software, a good software development practice that builds in provenance."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"FAIR for Research Software paper","src":"media/fair4rs_paper.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Fair 4 Research Software (FAIR4RS) working group (2022)\n"},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.1038/s41597-022-01710-x","rel":["nofollow"]},"children":[{"type":"text","value":"doi:10.1038/s41597-022-01710-x"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Contributing Organizations","src":"media/fair4rs_logos.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nIn 2022, the results of extensive community consultation were published in the FAIR for Research Software paper.\nThe group behind this was a collaboration between the Research Software Alliance, the Research Data Alliance, and FORCE11."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"FAIR for Research Software principles","src":"media/fair4rs_principles.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThese are the interpretations given to the FAIR principles for software by the working group.\nIn many cases these are rephrased to better fit software, but in some cases they are also extended."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"findability"},"children":[{"type":"text","value":"Findability"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"FAIR4RS Findability","src":"media/fair4rs_F.png"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Archive on Zenodo for DOI and persistence"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" Note that persistence on GitHub is not guaranteed!"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Use (semantic) versioning with updates"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" Zenodo assigns a DOI to each version "}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Include metadata, explicitly containing the DOI"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" but also license, version, dependencies, etc. "}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Register the software in a community registry"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" such as PyPI or CRAN, depending on the language/domain "}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nFor software findability, a few things need to work together:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The software needs to be archived on a platform that provides a DOI and persistence. GitHub is not guaranteed to provide this, and while it is a useful tool is not a suitable archive for software.\nGitHub does work well together with Zenodo, which provides both.\nTogether they also provide functionality for versioning: when releasing a new version on GitHub, and using the Zenodo integration, Zenodo will update the entry and assign a new DOI to the new version."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For software-specific findability, though, Zenodo is insufficient. Here, you can think of more specific registries, such as PyPI, CRAN, or Bioconductor; depending on the language and domain of the software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"accessibility"},"children":[{"type":"text","value":"Accessibility"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"FAIR4RS Accessibility","src":"media/fair4rs_A.png"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Community registries provide standard download protocols"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" e.g. "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"pip install my_software"}]},{"type":"text","value":" "}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Metadata on Zenodo is part of the persistent archive"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nA lot of accessibility is covered by the findability principles, but there are a few additional things to consider.\nSpecifically, software may still be FAIR as long as its metadata is accessible.\nThe code of the software itself, not the actual functional engine, could be considered metadata."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"interoperability"},"children":[{"type":"text","value":"Interoperability"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"FAIR4RS Interoperability","src":"media/fair4rs_I.png"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Input and output both needs to meet community standards"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" e.g. file formats, data models, ontologies "}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"References to external objects should be unambiguous"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" use URLs, DOIs, version numbers etc. "}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nAs with data, interoperability refers partly to formats and standards (in this case: inputs, outputs, or other objects used). For example CSV, JSON, and XML are interoperable formats, while PDF is not.\nThese standards may also be domain-specific, such as the use of ontologies in the life sciences."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The second sub-principle refers to the use of unambiguous references to external objects, such as libraries, data, or models. A clear link allows the right object to be used by the software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"reusability"},"children":[{"type":"text","value":"Reusability"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"FAIR4RS Reusability","src":"media/fair4rs_R.png"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Include a software-specific license"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":"as a file called "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"LICENSE"}]},{"type":"text","value":" in the project's root"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Many Open Source software licenses exist"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" see "},{"type":"element","tag":"a","props":{"href":"https://choosealicense.com/","rel":["nofollow"]},"children":[{"type":"text","value":"choosealicense.com"}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"License choice is not always straightforward"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" confirm with dependencies, copyright holder(s), and specialists "}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Use version control (e.g. Git) with a public host (e.g. GitHub)"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" history and provenance is a public part of the repository "}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Dependencies should be listed, and unambiguous"},{"type":"element","tag":"br","props":{},"children":[]},{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" use a standardized file/protocol, and version numbers"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nLicenses are an important part of reusability.\nWithout a license, copyright disallows reuse.\nIn an open science context especially, Open Source licenses are the default choice.\nThey are numerous, but the choice is not always straightforward.\nIt is advised to learn about the different licenses, about important considerations (e.g. dependencies and the role and identity of copyright holders) and to consult with specialists when in doubt."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"fair-is-not-a-quality-checklist"},"children":[{"type":"text","value":"FAIR is not a quality checklist"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software quality is addressed insofar as it affects:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"usability, an aspect of interoperability"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"maintainability, an important element of reuse"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Quality aspects "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" part of FAIR:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"computational efficiency                                             "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"functional correctness"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"security"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"..."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe FAIR principles are limited in scope when it comes to software.\nIt is important to realize that their primary goal is not to address software quality itself.\nFAIR software can be of poor quality, and good quality software may not be FAIR."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Some quality aspects are addressed by FAIR, in particular usability and maintainability.\nBecause software is dynamic and interdependent, its reusability requires that it is maintained to continue to work (or that a conserved context is provided, such as a virtual machine with required dependencies)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Secondary to maintainability are quality aspects like tests, modularized architecture, developer documentation, and so on."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Interoperable software is usable by others, and therefore it is important that it is well documented and that it is easy to install and run.\nThis ties into quality aspects like user documentation, installation instructions, and so on."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note though, that there is no mention of correctness, nor of efficiency or security.\nSoftware may adhere perfectly to FAIR, yet produce the wrong results, in a painfully slow and inefficient process, while leaking personal information."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"fair-is-a-spectrum"},"children":[{"type":"text","value":"FAIR is a spectrum"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/spectrum.png","width":"60%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"FAIR is not a checklist, but a set of principles.\nAs such, it informs a spectrum of software sustainability, and not a binary \"FAIR or not FAIR\"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"FAIR is not a perfect metric, but it is helpful, and tailored to specific values of open science."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"take-home-messages"},"children":[{"type":"text","value":"Take home messages"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is an important part of research"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"FAIR4RS principles guide towards accessibility and openness of research software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"FAIR is not a quality checklist"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software places unique demands on FAIR, and provides unique opportunities"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"FAIRness is a spectrum"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"ceci-nest-pas-une-photo","depth":2,"text":"Ceci n'est pas une photo"},{"id":"the-fair-principles","depth":2,"text":"The FAIR principles"},{"id":"software-is-not-data","depth":2,"text":"Software is not data"},{"id":"software-opportunities","depth":2,"text":"Software opportunities"},{"id":"findability","depth":2,"text":"Findability"},{"id":"accessibility","depth":2,"text":"Accessibility"},{"id":"interoperability","depth":2,"text":"Interoperability"},{"id":"reusability","depth":2,"text":"Reusability","children":[{"id":"fair-is-not-a-quality-checklist","depth":3,"text":"FAIR is not a quality checklist"}]},{"id":"fair-is-a-spectrum","depth":2,"text":"FAIR is a spectrum"},{"id":"take-home-messages","depth":2,"text":"Take home messages"}]}},"_type":"markdown","_id":"local_fs:modules:fairsoftware:slides-fairsoftware.pmd","_source":"local_fs","_file":"modules/fairsoftware/slides-fairsoftware.pmd","_extension":"pmd"},{"_path":"/modules/hpc","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"High Performance Computing (HPC)","description":"","id":4,"trl":"medium","category":"Upcoming (under construction)","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"high-performance-cluster-hpc"},"children":[{"type":"text","value":"High Performance Cluster (HPC)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"high-performance-cluster-hpc","depth":2,"text":"High Performance Cluster (HPC)"}]}},"_type":"markdown","_id":"local_fs:modules:hpc:index.md","_source":"local_fs","_file":"modules/hpc/index.md","_extension":"md"},{"_path":"/modules/hpc/info","_dir":"hpc","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:hpc:info.md","_source":"local_fs","_file":"modules/hpc/info.md","_extension":"md"},{"_path":"/modules/licenses/copyright","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"Copyright and software","description":"","type":"reading","order":2,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"copyright-and-software"},"children":[{"type":"text","value":"Copyright and software"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Creative works, like books, paintings and music, but also scientific articles and software, are covered by copyright. Copyright is a legal construct that gives the owner of the copyright on a work the exclusive right to reproduce, modify, publicly perform and distribute the work. As a result, anyone who is not the copyright holder needs to have permission from the copyright holder to also be able to do so."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Newly created works are automatically covered by copyright. This copyright is owned by the creator of the work, unless they were employed and created the work as part of their employment, in which case their employer owns the work. If multiple persons or organisations contribute to a work, then they each own a share of the copyright, and all need to give permission for others to be able to do any of the things protected by copyright. This permission is called a "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"license"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Creative works can depend on each other. Books for example can be translated, or turned into a stage play or a TV series. This creates a new work, which is known as a derivative work. A derivative work has its own copyright, because creating a translation or adaptation is itself a creative process. Like in a collaborative work, both the owner of the original copyright and the owner of the copyright on the derived adaptation need to give permission to reproduce and distribute the derived work."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is a bit different from books or films or even databases because software is not only a collection of words and symbols, but also a machine that is used for something. As a result, working processes around software are quite different from those around books or films. Although it's bad practice, researchers quite often take a script from a colleague and modify it a bit so that it does what they want. A film director would be surprised indeed if you suggested they take a script from an existing film, change the dialog in the third act a bit, and then shoot it, but in software that's common. No novelist downloads ready-made paragraphs and chapters from the Internet and glues them together into a novel, but this is essentially how all modern software is developed."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As a result, software and copyright is a bit of a specialist topic, but one that cannot be avoided because of the automatic nature of copyright and the fact that science is a collaborative enterprise. Universities therefore need a policy to govern what their employees should do and can't do with respect to the software they develop and use, and that policy needs to include something specifically about licensing software."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"copyright-and-software","depth":2,"text":"Copyright and software"}]}},"_type":"markdown","_id":"local_fs:modules:licenses:copyright.md","_source":"local_fs","_file":"modules/licenses/copyright.md","_extension":"md"},{"_path":"/modules/licenses/ex_choose_a_license","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"Choose a license for or using your policy","description":"","type":"exercise","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"exercise-1-choose-a-license-for-or-using-your-policy-10-minutes"},"children":[{"type":"text","value":"Exercise 1: Choose a license for or using your policy (10 minutes)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One of the concerns typically addressed in a software policy is licensing of software developed at the institution. Policies can choose a single license, or offer a range of options."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Try to find out whether your university has a license policy. What does it say about which license(s) to use? If you don't have a policy yet, which license(s) would you choose for your policy? Why?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Go to "},{"type":"element","tag":"a","props":{"href":"https://choosealicense.com","rel":["nofollow"]},"children":[{"type":"text","value":"Choosealicense.com"}]},{"type":"text","value":" and play around with the options to help you choose."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"exercise-1-choose-a-license-for-or-using-your-policy-10-minutes","depth":2,"text":"Exercise 1: Choose a license for or using your policy (10 minutes)"}]}},"_type":"markdown","_id":"local_fs:modules:licenses:ex_choose_a_license.md","_source":"local_fs","_file":"modules/licenses/ex_choose_a_license.md","_extension":"md"},{"_path":"/modules/licenses/ex_have_licensing_policy","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"Does your university have a software licensing policy?","description":"","type":"exercise","order":6,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"exercise-2-does-your-university-have-a-software-licensing-policy"},"children":[{"type":"text","value":"Exercise 2: Does your university have a software licensing policy?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Try and find out whether your university has a software (licensing) policy. If you can find it, compare it with the ones from "},{"type":"element","tag":"a","props":{"href":"https://zenodo.org/record/4629662","rel":["nofollow"]},"children":[{"type":"text","value":"TU Delft"}]},{"type":"text","value":", "},{"type":"element","tag":"a","props":{"href":"https://zenodo.org/records/7307162","rel":["nofollow"]},"children":[{"type":"text","value":"ASTRON"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"https://www.esciencecenter.nl/wp-content/uploads/2020/05/nlesc_ip_policy_2017.pdf","rel":["nofollow"]},"children":[{"type":"text","value":"the Netherlands eScience Center"}]},{"type":"text","value":". What elements are commonly found? Which differences do you see, and what is their respective motivation?"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"exercise-2-does-your-university-have-a-software-licensing-policy","depth":2,"text":"Exercise 2: Does your university have a software licensing policy?"}]}},"_type":"markdown","_id":"local_fs:modules:licenses:ex_have_licensing_policy.md","_source":"local_fs","_file":"modules/licenses/ex_have_licensing_policy.md","_extension":"md"},{"_path":"/modules/licenses/ex_licenses_in_use","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"What licenses do researchers at your university use?","description":"","type":"exercise","order":7,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"exercise-3-what-licenses-do-researchers-at-your-university-use"},"children":[{"type":"text","value":"Exercise 3: What licenses do researchers at your university use?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Search on "},{"type":"element","tag":"a","props":{"href":"https://github.com/","rel":["nofollow"]},"children":[{"type":"text","value":"GitHub"}]},{"type":"text","value":" or other software repositories for software created by researchers at your university. What licenses do they use? Do they adhere to a policy (if there is one?)"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"exercise-3-what-licenses-do-researchers-at-your-university-use","depth":2,"text":"Exercise 3: What licenses do researchers at your university use?"}]}},"_type":"markdown","_id":"local_fs:modules:licenses:ex_licenses_in_use.md","_source":"local_fs","_file":"modules/licenses/ex_licenses_in_use.md","_extension":"md"},{"_path":"/modules/licenses","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software licenses","description":"thumbnail-licenses","id":5,"trl":"high","category":"Reusability","author":"eScience Center","thumbnail":"thumbnail-licenses.jpg","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/laptop-compute-displaying-command-prompt-vII7qKAk-9A?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-licenses"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@disruptxn?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Desola Lanre-Ologun"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/laptop-compute-displaying-command-prompt-vII7qKAk-9A?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:licenses:index.md","_source":"local_fs","_file":"modules/licenses/index.md","_extension":"md"},{"_path":"/modules/licenses/info","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the Software Licenses module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the Software Licenses module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:licenses:info.md","_source":"local_fs","_file":"modules/licenses/info.md","_extension":"md"},{"_path":"/modules/licenses/licenses","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"Software licenses","description":"","type":"reading","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"software-licenses"},"children":[{"type":"text","value":"Software licenses"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software licenses are legal statements that give permission to use, modify and/or distribute software. By copyright law, only the copyright owner(s) can give this permission, so the license must be granted by those owners."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are different kinds of software licenses, with different underlying business models. Some software producers sell copies or seats, where the user has to pay for each computer that the software is used on or person the software is used by, and where the user does not have permission to modify or distribute the software. In this case, licenses are given to individual users or companies as part of a sales contract."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It is also possible to make a general statement that anyone can use, modify and/or distribute a software package under certain conditions. In this case, there is no contract, and no specific counterparty. Instead, the owners of the copyright give the same permissions to everyone, usually in a document included with the software as it is put on the Internet. Software distributed like this can usually be downloaded without paying, although there may still be significant limitations on what you can do with it."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Some software is distributed with a license that gives very broad permissions to anyone who obtains a copy. Such software is known as Free Software and/or Open Source Software. Before we look at what that is exactly, it helps to understand a bit better what software actually is, and how it's made."}]},{"type":"element","tag":"h3","props":{"id":"what-is-software"},"children":[{"type":"text","value":"What is software?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To non-programmers, software can appear to be a somewhat magical thing. It is in our computers and phones and it makes them work, or sometimes not work. It's made by specialist people who we call programmers, and who must be very smart to be able to make all this work, or perhaps very dumb given how often software doesn't work. In short, it seems to be mysterious."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Of course, programmers are perfectly ordinary people. They make the software that makes our phones and computers work, and sometimes programmers make mistakes, and then the software doesn't work as intended. Computer programs are made by typing text into the computer, just like you do when writing an email or a letter. Computer programs consist of one or more files with instructions for the computer. These files can be modified to change what the software does, they can be combined together into a larger, more complex program, and they can be shared with others and reused. For the computer to be able to run the software, the files need to be translated from the human-readable text form (the "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"source code"}]},{"type":"text","value":") into a sequence of numbers encoding the same commands (a "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"binary"}]},{"type":"text","value":"). This is done mechanically by a special program called a compiler or an interpreter."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are different ways of making software collaboratively. One is to work closely together (even sharing a computer!) on the same source code, which can help reduce mistakes as two see more than one, or it can be useful as a teaching exercise. Looser ways of collaborating include copying someone else's code and then independently modifying it to do something a bit different, and reusing a software component made by someone else in your own program, usually in its original form but possibly with changes as well."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The looser forms of collaboration rely on software being distributed from its maker to its user, who then modifies it or integrates it. This requires permission from the copyright owners because there's distribution and the creation of a derivative work, which means that there needs to be a license. A reliable and easy way to do this is to make all the software Free and Open Source."}]},{"type":"element","tag":"h3","props":{"id":"free-and-open-source-software"},"children":[{"type":"text","value":"Free and Open Source Software"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The Free Software Foundation lists four freedoms that users need to be given by the copyright owner(s) for a program to be considered Free Software:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The freedom to run the program as you wish, for any purpose."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The freedom to study how the program works, and change it, so it does your computing as you wish. Access to the source code is a precondition for this."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The freedom to redistribute copies so you can help others."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. Access to the source code a precondition for this."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note that the word \"free\" here refers to freedom to do things, not to what the software costs. You're allowed to sell copies of Free Software!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open Source Software has an official definition too, which is quite a bit longer but boils down to the same thing. Because of that, the terms are often combined into Free and Open Source Software, or FOSS, but the term Open Source is also popular. We will use them here interchangeably."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can make a software package that you own the copyright to Open Source by distributing it (usually on the Internet) under an Open Source license, i.e. one that gives everyone the above freedoms. In practice, that means that the software is distributed in source code form, with a license document stating that the copyright owners give everyone the freedom to do the above things, subject to certain conditions. There exist a small number of standard Open Source licenses that you can use. All of these are open source, but there are some difference as well that are good to know about."}]},{"type":"element","tag":"h3","props":{"id":"license-categories"},"children":[{"type":"text","value":"License categories"}]},{"type":"element","tag":"table","props":{},"children":[{"type":"text","value":"\n "},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{"align":"center"},"children":[{"type":"text","value":"\n "},{"type":"element","tag":"th","props":{"colSpan":"3"},"children":[{"type":"text","value":"Free and Open Source"}]},{"type":"text","value":"\n "},{"type":"element","tag":"th","props":{"rowSpan":3,"vAlign":"top"},"children":[{"type":"text","value":"Proprietary"}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "},{"type":"element","tag":"tr","props":{"align":"center"},"children":[{"type":"text","value":"\n "},{"type":"element","tag":"th","props":{"colSpan":"2"},"children":[{"type":"text","value":"Copyleft"}]},{"type":"text","value":"\n "},{"type":"element","tag":"th","props":{"rowSpan":2},"children":[{"type":"text","value":"Permissive"}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "},{"type":"element","tag":"tr","props":{"align":"center"},"children":[{"type":"text","value":"\n "},{"type":"element","tag":"th","props":{},"children":[{"type":"text","value":"Strong"}]},{"type":"text","value":"\n "},{"type":"element","tag":"th","props":{},"children":[{"type":"text","value":"Weak"}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "},{"type":"element","tag":"tr","props":{"align":"center"},"children":[{"type":"text","value":"\n "},{"type":"element","tag":"td","props":{},"children":[{"type":"text","value":"GPL"},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" AGPL"},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"2"}]}]},{"type":"text","value":"\n "},{"type":"element","tag":"td","props":{},"children":[{"type":"text","value":"LGPL"},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":" MPL"},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"4"}]}]},{"type":"text","value":"\n "},{"type":"element","tag":"td","props":{},"children":[{"type":"text","value":"BSD"},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" MIT"},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":" Apache"}]},{"type":"text","value":"\n "},{"type":"element","tag":"td","props":{},"children":[{"type":"text","value":"Research Only: No copying, No modification"}]},{"type":"text","value":"\n "}]}]}]},{"type":"element","tag":"div","props":{"className":["footnote"]},"children":[{"type":"text","value":"\n "},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"GPL: GNU General Public License "},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"AGPL: Affero General Public License "},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"LGPL: GNU Lesser General Public License "},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":" MPL: Mozilla Public License "},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" BSD: Berkeley Software Distribution "},{"type":"element","tag":"sup","props":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":" MIT: Massachusetts Institute of Technology\n"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The table above shows five of the most common FOSS licenses. They're organised in a hierarchystarting with the distinction between Free and Open Source on the one and, and proprietary software on the other. Proprietary software is software that isn't FOSS, which is to say that it has restrictions on use or modification or distribution. It's called proprietary because there is a proprietor or (copyright) owner, who has exclusive control over the software. For Open Source this is not the case: there is a copyright and it's owned by someone, but the license gives everyone else the same permissions they have and so they don't have exclusive control."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Within the category of Open Source licenses, we can distinguish Copyleft licenses and Permissive licenses. Permissive licenses give everyone permission to use, modify and distribute with no further restrictions other than perhaps requiring an acknowledgement that the software was used. In particular, permissive licenses allow the software to be used as a part of non-Open Source software, and for it to be redistributed without the source code, so that it cannot be inspected or modified anymore."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Copyleft licenses try to ensure that the software remains FOSS. You are free to distribute Open Source software that has a copyleft license, but you have to include the complete source code and distribute the modified or extended software under that same license. As a result, everyone who gets a copy of a version of the software and anything it's used in will be free to use, modify and distribute that product. Note that distribution isn't required, all common open source licenses allow making private modifications and not sharing them with anyone."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Weak copyleft licenses are intended for use with libraries, software components that are intended to be used by other programmers to build larger programs. A weak copyleft license applies copyleft to the library itself, but not to the larger program using the library. As a result, programmers using the library can distribute their part of the program without source code or the right to make modifications, as long as they do distribute the source for the library, including any modifications. Strong copyleft licenses require the entire program to be under the same strong copyleft license."}]},{"type":"element","tag":"h3","props":{"id":"license-politics"},"children":[{"type":"text","value":"License politics"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Besides the legal differences, there's a bit of a political difference between Free Software and Open Source, and between copyleft and permissive licenses, that is good to understand. Free Software adherents see everyone as a potential programmer, and believe that your computer isn't truly yours until you fully control what it does, which requires the ability to inspect and modify the software. They envision a world in which computer users collaboratively develop the software they use, sharing their improvements with each other. They therefore prefer copyleft licenses, because those ensure that as many software packages (and therefore, users) as possible are free."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open Source takes a more pragmatic approach in assuming that most software is made by a small cadre of software developers, often employed by companies, and that there are a potentially large number of end users that have neither the skills nor the inclination to change what their computer does. For these end users, having the source code is not useful, but the developers can often save some effort by working together on software that everyone needs. A permissive Open Source license makes that possible with a minimal amount of legal complexity. It also makes it easy to build commercial, proprietary products on top of the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"From the perspective of science, there's something to be said for each of these approaches. On the one hand, Free Software and copyleft matches the ideals of Open Science quite well. On the other hand, science and scientific software development is funded by society using public funds in the hopes that something useful will come out of it, and scientific papers are useless to most citizens. They want a product, which will be produced commercially, and that is a good match for the Open Source and permissive licensing model."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-licenses","depth":2,"text":"Software licenses","children":[{"id":"what-is-software","depth":3,"text":"What is software?"},{"id":"free-and-open-source-software","depth":3,"text":"Free and Open Source Software"},{"id":"license-categories","depth":3,"text":"License categories"},{"id":"license-politics","depth":3,"text":"License politics"}]}]}},"_type":"markdown","_id":"local_fs:modules:licenses:licenses.md","_source":"local_fs","_file":"modules/licenses/licenses.md","_extension":"md"},{"_path":"/modules/licenses/slides","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"Software Licensing","description":"","type":"slides","order":1,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-licensing"},"children":[{"type":"text","value":"Software Licensing"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"about-copyright"},"children":[{"type":"text","value":"About copyright"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Berne convention"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Owned by author or employer?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Can be licensed"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By the Berne convention, software is automatically protected by copyright when it is made. Depending on the country, protection lasts 50 years or more. The owner of the copyright is the only one who can copy, publish, and modify the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you make software as part of a job for an employer, then your employer owns the copyright. Otherwise, you are the owner (unless there's a contract somewhere that says otherwise)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The owner of the copyright on a work can give permission to others to do things they would otherwise not be allowed to do, like copying, publishing and modifying the work. A document that describes what they can do is called a copyright license. These licenses can be given to a specific party, usually as part of a contract, or they can be offered to the general public."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"using-others-software"},"children":[{"type":"text","value":"Using others' software"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You need a license"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Open Source makes that easy"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Different Open Source licenses available"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To use software that was made by someone else, you need to (at least) get a copy of it, and that requires permission from the copyright owner, i.e. a license. If the software has an Open Source license, then you have permission to get a copy and run it for any purpose, including commercially, and/or use it in your own software. There will be some conditions attached, which depend on the particular license used."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are a handful of Open Source licenses available, with different terms. Those differences are especially important when you use a package or library in your own software. There are websites available that explain all the standard Open Source licenses in ordinary language, so that you can easily decide whether you can use a certain software package. You don't need to be (or have) a lawyer to use Open Source software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"who-owns-a-work"},"children":[{"type":"text","value":"Who owns a work?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Work for hire"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Consortium agreements"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"University policy"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In most countries, including The Netherlands, any work you do as part of your tasks as an employee of an organisation belongs to your employer, not to you. After all, they're paying you to do the work. This means that the copyright on any software written by a university employee is owned by to the university. And that means that anyone not working at that university (which may include said employee in the future!) needs permission from the owner to work with the code."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Some limited permission is often granted in the Consortium Agreements typically governing scientific project(s), but these are only valid within the project. To make the software available outside of the project it was developed in, broader permissions must be given. Some universities have a policy on how and under which conditions this can be done; details can typically be had from the library or legal department."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"why-license-your-software"},"children":[{"type":"text","value":"Why license your software?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Public funding"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Academic freedom of employees"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Save work by collaborating"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Increase impact"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If a scientist working at a university, in the course of doing their job, creates software, then that software is owned by the university. By default then, it can only be used by that university and its employees. This is an undesirable situation for several reasons."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"First, the software was most likely funded with public money, and should therefore be available to the public, just like papers are published Open Access."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Second, researchers frequently change jobs, moving from university to university. Without permission from their previous employers, they would have to start rebuilding their software from scratch every time they move to a new university, which would be very inefficient."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Third, many of the most pressing problems that scientist work on involve complex, multifaceted systems that can only be properly studied in collaboration. Where software is involved, which is to say almost everywhere in academic research, researchers need to be able to exchange software and collaborate on its development, including across projects."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Finally, doing so will allow them to achieve better results, and continue to build on those results, thus achieving higher impact."}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"open-sourcing-scientific-software"},"children":[{"type":"text","value":"Open Sourcing scientific software"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Free, Open Source Software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Technology Transfer"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Free, Open Source Software (or FOSS, as it's sometimes abbreviated) is software that you are free to 0) use for any purpose, 1) modify to suit your needs, 2) share with others, and 3) share with changes you made, so you can work on it together. That's actually the Free Software definition, but Open Source really just says the same thing in more words, which is why they're usually mentioned together. These are exactly the permissions scientists need to be able to do science together using the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open Source licenses also allow commercial use, which means that they are a very effective means of technology transfer. Since the license terms are the same for everyone, there are no issues with state aid regulations, nor does a market-rate value for the software need to be determined. The standard Open Source licenses are now well understood and trusted by commercial parties, removing the need for complex negotiations on the exact terms. Of course, no payment will be received either. Given that commercial sale of academic software is very rare, it seems that the benefits obtained from the academic collaboration enabled by Open Source far outweigh the potential income loss due to not commercially licensing the software. And note that it is still perfectly possible to launch a spin-off or start-up that offers commercial services related to the software, including support and continued development."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-licensing","depth":2,"text":"Software Licensing"},{"id":"about-copyright","depth":2,"text":"About copyright"},{"id":"using-others-software","depth":2,"text":"Using others' software"},{"id":"who-owns-a-work","depth":2,"text":"Who owns a work?"},{"id":"why-license-your-software","depth":2,"text":"Why license your software?"},{"id":"open-sourcing-scientific-software","depth":2,"text":"Open Sourcing scientific software"}]}},"_type":"markdown","_id":"local_fs:modules:licenses:slides.pmd","_source":"local_fs","_file":"modules/licenses/slides.pmd","_extension":"pmd"},{"_path":"/modules/licenses/university_policy","_dir":"licenses","_draft":false,"_partial":false,"_locale":"","title":"University software policies","description":"","type":"reading","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"university-software-policies"},"children":[{"type":"text","value":"University software policies"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Universities employ researchers, who often create and use software in the course of doing research. That means that they create and use copyrighted works, activities governed by copyright law. Works created by employees as part of their work are normally owned by their employer. This is the default legally in many places, and is almost always stated in the employment contract as well. So, the university owns the software created by its employees, and because the employees also act on behalf of their employer, is responsible for any violations of copyright by their employees."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In practice, for example when submitting a paper to a journal, it is often assumed that scientists can transfer copyright ownership or otherwise give permission to the publisher to publish their work on behalf of the university, but strictly speaking there is usually no legal basis for this. Likewise, if scientists produce software as part of their scientific work, then that software is owned by the university, and publishing it as Open Source software, while often done, does not sit on solid legal footing."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sharing scientific software offers great possibilities for collaboration, sharing of resources, and increased impact of the scientific work as well as of the software itself. Universities are increasingly aware of this, and have created or are creating policies to guide how they create and use research software. In this module we'll look into the why, how and what of university software policies."}]},{"type":"element","tag":"h3","props":{"id":"why"},"children":[{"type":"text","value":"Why?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Ensure scientific software is properly licensed\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Including the software your employees use!"}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Increase collaboration"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Increase impact"}]}]},{"type":"element","tag":"h3","props":{"id":"how"},"children":[{"type":"text","value":"How?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Still in development"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"TU Delft"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Astron"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"NLeSC"}]}]},{"type":"element","tag":"h3","props":{"id":"what"},"children":[{"type":"text","value":"What?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software quality"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software development processes and tooling"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Adhering to others' licenses"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How to publish as Open Source"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Acceptable licenses"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Registering output"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Education of researchers in software development"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Acknowledge funding"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"university-software-policies","depth":2,"text":"University software policies","children":[{"id":"why","depth":3,"text":"Why?"},{"id":"how","depth":3,"text":"How?"},{"id":"what","depth":3,"text":"What?"}]}]}},"_type":"markdown","_id":"local_fs:modules:licenses:university_policy.md","_source":"local_fs","_file":"modules/licenses/university_policy.md","_extension":"md"},{"_path":"/modules/multimedia","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Multimedia","description":"","id":0,"trl":"medium","category":"Examples","author":"eScience Center","thumbnail":"multimedia_image.avif","visibility":"hidden","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"image-example"},"children":[{"type":"text","value":"Image example"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is the original image example. Which can be generated using the following chapter heading:"}]},{"type":"element","tag":"pre","props":{"className":["language-markdown"],"code":":::Chapter{headline=\"Image\" image=\"multimedia_image.avif\"}\n","language":"markdown","meta":""},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":":::Chapter{headline=\"Image\" image=\"multimedia_image.avif\"}\n"}]}]}]},{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"video-example"},"children":[{"type":"text","value":"Video example"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is a video hosted on youtube. You have to specify the youtube ID in the chapter header."}]},{"type":"element","tag":"pre","props":{"className":["language-markdown"],"code":":::Chapter{headline=\"Citation\" video=\"IuWVAv0AxXY\"}\n","language":"markdown","meta":""},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":":::Chapter{headline=\"Citation\" video=\"IuWVAv0AxXY\"}\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The youtube video ID can be found in the url of your youtube video, after the url tag \"v=\" (e.g. w"},{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"ww."}]},{"type":"text","value":"youtube.com/watch?v="},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"IuWVAv0AxXY"}]},{"type":"text","value":"). Note that any following ampersand (&) symbols mark the end of the ID."}]}]},{"type":"element","tag":"div","props":{},"children":[]},{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"website-example"},"children":[{"type":"text","value":"Website example"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can also embed a website... software support inception..."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It can be done by adding the website prop with the url to the chapter heading:"}]},{"type":"element","tag":"pre","props":{"className":["language-markdown"],"code":":::Chapter{headline=\"Website\" website=\"https://esciencecenter-digital-skills.github.io/software-support-essentials/\"}\n","language":"markdown","meta":""},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":":::Chapter{headline=\"Website\" website=\"https://esciencecenter-digital-skills.github.io/software-support-essentials/\"}\n"}]}]}]},{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"wide-markdown"},"children":[{"type":"text","value":"Wide Markdown"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This type of chapter is used for all markdown. The small left text panel becomes screen wide and there is no media panel. It can be done by adding the "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"widemd"}]},{"type":"text","value":" prop:"}]},{"type":"element","tag":"pre","props":{"className":["language-markdown"],"code":":::Chapter{headline=\"Wide Markdown\" widemd=1}\n","language":"markdown","meta":""},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":":::Chapter{headline=\"Wide Markdown\" widemd=1}\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Something has to be added in the widemd prop, 1 is generally a safe value. Note that 0 will not turn it off; the only way to disable "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"widemd"}]},{"type":"text","value":" is simply to remove the prop entirely."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An image can also be added here of course, as in any markdown. But do note that the path needs to be relative to the "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"static"}]},{"type":"text","value":" directory that lives in root of this project.\nBecause the image lives in "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"static/stories/_multimedia"}]},{"type":"text","value":", the path to the image on this page should read "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"stories/_multimedia/multimedia_image.avif"}]},{"type":"text","value":".\n"},{"type":"element","tag":"img","props":{"alt":"This is the same image as in the image chapter.","src":"stories/_multimedia/multimedia_image.avif"},"children":[]}]}]},{"type":"element","tag":"div","props":{},"children":[]},{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"wall-of-text"},"children":[{"type":"text","value":"Wall of Text"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel.\nThis is a chapter with a lot of text. It is used to test the scroll functionality of the text panel."}]}]},{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"no-chapter-type"},"children":[{"type":"text","value":"No Chapter Type"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When no chapter type (or a wrong one) is given in the header, the media panel shows an error message."}]},{"type":"element","tag":"pre","props":{"className":["language-markdown"],"code":":::Chapter{headline=\"Typeless\"}\n","language":"markdown","meta":""},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":":::Chapter{headline=\"Typeless\"}\n"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"image-example","depth":2,"text":"Image example"},{"id":"video-example","depth":2,"text":"Video example"},{"id":"website-example","depth":2,"text":"Website example"},{"id":"wide-markdown","depth":2,"text":"Wide Markdown"},{"id":"wall-of-text","depth":2,"text":"Wall of Text"},{"id":"no-chapter-type","depth":2,"text":"No Chapter Type"}]}},"_type":"markdown","_id":"local_fs:modules:multimedia:index.md","_source":"local_fs","_file":"modules/multimedia/index.md","_extension":"md"},{"_path":"/modules/multimedia/info","_dir":"multimedia","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:multimedia:info.md","_source":"local_fs","_file":"modules/multimedia/info.md","_extension":"md"},{"_path":"/modules/multimedia/media/presentation","_dir":"media","_draft":false,"_partial":false,"_locale":"","title":"First presentation, markdown demo","description":"Note: Here are some notes that should appear at the side.","body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"first-presentation-markdown-demo"},"children":[{"type":"text","value":"First presentation, markdown demo"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note: Here are some notes that should appear at the side."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"a-slide"},"children":[{"type":"text","value":"A slide"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Lorem ipsum dolor sit amet"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"consectetur adipiscing elit"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note: This will only appear in the speaker notes window."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"an-image"},"children":[{"type":"text","value":"An image"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"External Image","src":"https://s3.amazonaws.com/static.slid.es/logo/v2/slides-symbol-512x512.png"},"children":[]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"some-math"},"children":[{"type":"text","value":"Some math"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"\\[ J(\\theta_0,\\theta_1) = \\sum_{i=0} \\]"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note: Look at this great equation"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]},{"type":"element","tag":"hr","props":{},"children":[]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"a-slide","depth":2,"text":"A slide"},{"id":"an-image","depth":2,"text":"An image"},{"id":"some-math","depth":2,"text":"Some math"}]}},"_type":"markdown","_id":"local_fs:modules:multimedia:media:presentation.md","_source":"local_fs","_file":"modules/multimedia/media/presentation.md","_extension":"md"},{"_path":"/modules/notebooks","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Notebooks","description":"","id":6,"trl":"medium","category":"Upcoming (under construction)","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"notebooks"},"children":[{"type":"text","value":"Notebooks"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"notebooks","depth":2,"text":"Notebooks"}]}},"_type":"markdown","_id":"local_fs:modules:notebooks:index.md","_source":"local_fs","_file":"modules/notebooks/index.md","_extension":"md"},{"_path":"/modules/notebooks/info","_dir":"notebooks","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:notebooks:info.md","_source":"local_fs","_file":"modules/notebooks/info.md","_extension":"md"},{"_path":"/modules/organization","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software project organization","description":"","id":7,"trl":"high","category":"Upcoming (under construction)","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"software-project-organization"},"children":[{"type":"text","value":"Software project organization"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-project-organization","depth":2,"text":"Software project organization"}]}},"_type":"markdown","_id":"local_fs:modules:organization:index.md","_source":"local_fs","_file":"modules/organization/index.md","_extension":"md"},{"_path":"/modules/organization/info","_dir":"organization","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:organization:info.md","_source":"local_fs","_file":"modules/organization/info.md","_extension":"md"},{"_path":"/modules/publication/automating_software_publication","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Automating software publication","description":"Most of the steps in the modern software publishing pipeline can be automated.","type":"exercise","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"automating-software-publication"},"children":[{"type":"text","value":"Automating software publication"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Most of the steps in the modern software publishing pipeline can be automated."}]},{"type":"element","tag":"h3","props":{"id":"an-example-with-github-zenodo-integration"},"children":[{"type":"text","value":"An example with github-zenodo integration"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Choose a software repository on github that you own (either existing, or create a new one)."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Navigate to "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Log in with your zenodo account (create a new one if necessary)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Navigate to the \"GitHub\" tab, located in a drop-down menu under your username"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Follow the instructions there to link your GitHub account with Zenodo (if not already done)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Look through the list of repositories listed until you find the one you wanted to archive"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Flip the toggle on the right to \"ON\""}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Go back to your repository on github.com and make a new release. Zenodo will automatically archive this release."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Add the zenodo badge for your repository to the README file."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"an-example-with-github-zenodo-integration","depth":3,"text":"An example with github-zenodo integration"}]}},"_type":"markdown","_id":"local_fs:modules:publication:automating_software_publication.md","_source":"local_fs","_file":"modules/publication/automating_software_publication.md","_extension":"md"},{"_path":"/modules/publication/discussion","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Discussion","description":"","type":"reading","order":1,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"discussion"},"children":[{"type":"text","value":"Discussion"}]},{"type":"element","tag":"h2","props":{"id":"before-we-dive-in"},"children":[{"type":"text","value":"Before we dive in..."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What do you already know about software publication?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Discuss how you would publish a piece of software."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"before-we-dive-in","depth":2,"text":"Before we dive in..."}]}},"_type":"markdown","_id":"local_fs:modules:publication:discussion.md","_source":"local_fs","_file":"modules/publication/discussion.md","_extension":"md"},{"_path":"/modules/publication/ex_registries","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Find your registry","description":"Software registries are an important player in the findability of research software.\nA collection of software registries can be found here: Research Software Registries Awesome List","type":"exercise","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-find-your-registry"},"children":[{"type":"text","value":"Exercise: Find your registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software registries are an important player in the findability of research software.\nA collection of software registries can be found here: "},{"type":"element","tag":"a","props":{"href":"https://github.com/NLeSC/awesome-research-software-registries","rel":["nofollow"]},"children":[{"type":"text","value":"Research Software Registries Awesome List"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Choose a piece of research software that you know, or pick one of the packages in this list:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/xenon","rel":["nofollow"]},"children":[{"type":"text","value":"Xenon"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/esmvaltool","rel":["nofollow"]},"children":[{"type":"text","value":"ESMValTool"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/projects/rs-dat","rel":["nofollow"]},"children":[{"type":"text","value":"RS-DAT"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/haddock3","rel":["nofollow"]},"children":[{"type":"text","value":"Haddock"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://cjvanlissa.github.io/worcs/index.html","rel":["nofollow"]},"children":[{"type":"text","value":"worcs"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In teams:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Find out what the software is about if you don't already know."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Look by yourself (without looking at your team mates) in the "},{"type":"element","tag":"a","props":{"href":"https://github.com/NLeSC/awesome-research-software-registries","rel":["nofollow"]},"children":[{"type":"text","value":"Research Software Registries Awesome List"}]},{"type":"text","value":" for a registry that is suitable for your chosen piece of software."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Discuss with your partner(s) why you chose that registry."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Investigate the requirements for your chosen registry. What should the software and its documentation adhere to, to be added to the registry?"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:publication:ex_registries.md","_source":"local_fs","_file":"modules/publication/ex_registries.md","_extension":"md"},{"_path":"/modules/publication","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software publication","description":"thumbnail-publication\nPhoto by ThisisEngineering on Unsplash","id":8,"trl":"medium","category":"Publishing & Citing","author":"eScience Center","thumbnail":"thumbnail-publication.jpg","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/man-in-blue-and-white-checkered-button-up-shirt-sitting-beside-man-in-yellow-shirt-t4qI2IDcL5s?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-publication"}]},{"type":"text","value":"\nPhoto by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@thisisengineering?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"ThisisEngineering"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/man-in-blue-and-white-checkered-button-up-shirt-sitting-beside-man-in-yellow-shirt-t4qI2IDcL5s?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:publication:index.md","_source":"local_fs","_file":"modules/publication/index.md","_extension":"md"},{"_path":"/modules/publication/info","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the Software Publication module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the Software Publication module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:publication:info.md","_source":"local_fs","_file":"modules/publication/info.md","_extension":"md"},{"_path":"/modules/publication/reading","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Reading material","description":"Follow the links below to read more about software publication.","type":"reading","order":6,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"reading-material"},"children":[{"type":"text","value":"Reading material"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Follow the links below to read more about software publication."}]},{"type":"element","tag":"h3","props":{"id":"the-turing-way"},"children":[{"type":"text","value":"The Turing Way"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in the Turing Way about "},{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/communication/citable","rel":["nofollow"]},"children":[{"type":"text","value":"Making Research Objects Citable"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"code-refinery"},"children":[{"type":"text","value":"Code Refinery"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in CodeRefinery about "},{"type":"element","tag":"a","props":{"href":"https://coderefinery.github.io/social-coding/software-citation/","rel":["nofollow"]},"children":[{"type":"text","value":"Social coding and open software"}]}]},{"type":"element","tag":"h3","props":{"id":"peerj-computer-science"},"children":[{"type":"text","value":"PeerJ Computer Science"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read this interesting article about "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.7717/peerj-cs.86","rel":["nofollow"]},"children":[{"type":"text","value":"Software citation principles"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-turing-way","depth":3,"text":"The Turing Way"},{"id":"code-refinery","depth":3,"text":"Code Refinery"},{"id":"peerj-computer-science","depth":3,"text":"PeerJ Computer Science"}]}},"_type":"markdown","_id":"local_fs:modules:publication:reading.md","_source":"local_fs","_file":"modules/publication/reading.md","_extension":"md"},{"_path":"/modules/publication/slides-publication","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Publishing Software","description":"","type":"slides","order":2,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h1","props":{"id":"publishing-software"},"children":[{"type":"text","value":"Publishing Software"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"what-do-we-mean-by-publishing"},"children":[{"type":"text","value":"What do we mean by publishing?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Publishing the "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"software itself"}]},{"type":"text","value":" (not just publishing an article "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"about"}]},{"type":"text","value":" it)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"There are many ways to do this"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This generally means the source code itself, ideally including instructions on how to use it, what dependencies it has on other software, etc."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The goal is to allow others to find and use your code, if they so wish, without extreme levels of difficulty."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"why-publish"},"children":[{"type":"text","value":"Why Publish?"}]},{"type":"element","tag":"h3","props":{"id":"major-scientific-considerations"},"children":[{"type":"text","value":"Major scientific considerations"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Citability"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reproducibility"}]}]},{"type":"element","tag":"h3","props":{"id":"fairness"},"children":[{"type":"text","value":"FAIRness"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"/modules/fairsoftware/media/fair.png","width":"40%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Citability - Allows the software authors to get credit for their work\nReproducibility - If software is not published anywhere then few people will successfully reproduce analyses, simulations or other research results that were performed by other researchers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Additionally, publishing is essential for meeting the FAIR principles:\nFindability - if software lives on someone's harddrive then it cannot be easily found by anyone\nAccessibility - the software can e.g. be downloaded and installed using a standard protocol (authentication is still a possibility)\nInteroperability - publishing the dependencies (e.g. software libraries) and input/output formats and versions is necessary for interoperability\nReusability - it's only reusable if it's available, and if people know what they are allowed to do with it (based on its software license)"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"traditional-publishing-pipeline"},"children":[{"type":"text","value":"Traditional publishing pipeline"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Write some code and leave it on your harddrive"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Generate scientific results with it"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Write a paper about those results"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Possibly not even mentioning the software at all"}]}]},{"type":"element","tag":"h3","props":{"id":"consequences"},"children":[{"type":"text","value":"Consequences"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The software itself is not citable"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Methods are not easily reproduced or even analysed"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Nobody else can build on top of your research"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"modern-publishing-pipeline"},"children":[{"type":"text","value":"Modern publishing pipeline"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software repository"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Tag/semantic versioning"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Get a persistent identifier"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Registries"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software Paper"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"software-repository"},"children":[{"type":"text","value":"Software repository"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Put all source files in a public version-controlled repository\ne.g. github, gitlab"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is immediately Findable"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Naturally contains a log of all development history"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Include a software license, and a citation.cff file"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"See license, citation and software management chapters"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"software-repository-1"},"children":[{"type":"text","value":"Software repository"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Which one?\n"},{"type":"element","tag":"img","props":{"src":"media/repository_logos.png","width":"80%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Anything is better than nothing. Gitlab and Github are the mainstream, used by many and with lots of features. You might run into projects using other repositories."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"tagsemantic-versioning"},"children":[{"type":"text","value":"Tag/semantic versioning"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It is important to communicate the actual version of the software used for a particular piece of research"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your software is used as a dependency of another software/workflow then specific versions can be referenced"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Ideally, use \"semantic versioning\" in the form MAJOR.MINOR.PATCH (e.g. v2.1.5)"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"get-a-persistent-identifier"},"children":[{"type":"text","value":"Get a Persistent Identifier"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Specific versions of the software should be published to an archiving service that provides persistent identifiers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, Zenodo is a long term archiving service for scientific data and software.\nZenodo will assign a DOI to the published data, making it citable"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"See Citation story"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"registries"},"children":[{"type":"text","value":"Registries"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Add a link to your software on a relevant public registry"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"For example, the eScience Center maintains the Research Software Directory"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Can also be domain specific software registries"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Or even list it on awesomelist"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This aids greatly in Findability by relevant researchers"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"software-paper"},"children":[{"type":"text","value":"Software Paper"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Publish a journal article about the software specifically"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Journal of Research Software (JORS)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Journal of Open Source Software (JOSS)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"SoftwareX"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"CRAN"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Some journals perform peer review of the software in question"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"automate-as-many-steps-as-possible"},"children":[{"type":"text","value":"Automate as many steps as possible!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you can automate archiving on Zenodo by linking it to your github account"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"See instructions in the \"Automating software publication\" tab of this story"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"what-do-we-mean-by-publishing","depth":2,"text":"What do we mean by publishing?"},{"id":"why-publish","depth":2,"text":"Why Publish?","children":[{"id":"major-scientific-considerations","depth":3,"text":"Major scientific considerations"},{"id":"fairness","depth":3,"text":"FAIRness"}]},{"id":"traditional-publishing-pipeline","depth":2,"text":"Traditional publishing pipeline","children":[{"id":"consequences","depth":3,"text":"Consequences"}]},{"id":"modern-publishing-pipeline","depth":2,"text":"Modern publishing pipeline","children":[{"id":"software-repository","depth":3,"text":"Software repository"},{"id":"software-repository-1","depth":3,"text":"Software repository"},{"id":"tagsemantic-versioning","depth":3,"text":"Tag/semantic versioning"},{"id":"get-a-persistent-identifier","depth":3,"text":"Get a Persistent Identifier"},{"id":"registries","depth":3,"text":"Registries"},{"id":"software-paper","depth":3,"text":"Software Paper"}]},{"id":"automate-as-many-steps-as-possible","depth":2,"text":"Automate as many steps as possible!"}]}},"_type":"markdown","_id":"local_fs:modules:publication:slides-publication.pmd","_source":"local_fs","_file":"modules/publication/slides-publication.pmd","_extension":"pmd"},{"_path":"/modules/publication/software_publication_pipeline","_dir":"publication","_draft":false,"_partial":false,"_locale":"","title":"Software publication pipeline","description":"","type":"reading","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"software-publication-pipeline"},"children":[{"type":"text","value":"Software publication pipeline"}]},{"type":"element","tag":"h2","props":{"id":"steps"},"children":[{"type":"text","value":"Steps"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It is recommended that all steps in the pipeline are followed, but they are not dependent on each other. In this pipeline we provide resources to achieve the whole pipeline using GitHub or GitLab for hosting the source code"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software repository"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Tag/semantic versioning"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Get a persistent identifier"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Registries"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software Paper"}]}]},{"type":"element","tag":"h2","props":{"id":"software-repository"},"children":[{"type":"text","value":"Software repository"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If possible, during the development of Research Software, changes should be tracked using dedicated version control software like "},{"type":"element","tag":"a","props":{"href":"https://git-scm.com/","rel":["nofollow"]},"children":[{"type":"text","value":"git"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Put all source files in a public version-controlled repository, preferably GitHub or GitLab. Both GitHub and Gitlab provide online repositories for hosting source code. As can be inferred from their names, they were designed to be used together with Git version control. The nice thing about using git together with GitHub and GitLab is that it stores the complete history of changes to the source code, rather than just a single version ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A quickstart tutorial for..."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://docs.github.com/en/get-started/quickstart/create-a-repo","rel":["nofollow"]},"children":[{"type":"text","value":"GitHub"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://docs.gitlab.com/ee/user/project/index.html","rel":["nofollow"]},"children":[{"type":"text","value":"GitLab"}]}]}]},{"type":"element","tag":"h2","props":{"id":"versions-tags-and-releases"},"children":[{"type":"text","value":"Versions, tags and releases"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Every time software changes, and that history is stored, that can be considered a new "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"version"}]},{"type":"text","value":" of the software. It is useful to add special identifiers, called "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"tags"}]},{"type":"text","value":" to new versions that mark significant changes, so that specific versions of your software can be cited or referenced as dependency by other software. If you use git for version control, you can "},{"type":"element","tag":"a","props":{"href":"https://git-scm.com/book/en/v2/Git-Basics-Tagging","rel":["nofollow"]},"children":[{"type":"text","value":"create tags in git"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It is good practice to use "},{"type":"element","tag":"strong","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://semver.org/","rel":["nofollow"]},"children":[{"type":"text","value":"semantic versioning"}]}]},{"type":"text","value":" to tag the software. In this way, information about the impact of the change from one version to the next is stored in the tag. Usually, tagged versions of the software are opened up to the public in a "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"software release"}]},{"type":"text","value":", together with updated documentation and a documentation of the changes since the previous release in a so called "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"changelog"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The documentation of creating releases..."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://docs.github.com/en/repositories/releasing-projects-on-github","rel":["nofollow"]},"children":[{"type":"text","value":"on GitHub"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://docs.gitlab.com/ee/user/project/releases/","rel":["nofollow"]},"children":[{"type":"text","value":"on GitLab"}]}]}]},{"type":"element","tag":"h2","props":{"id":"get-a-persistent-identifier"},"children":[{"type":"text","value":"Get a persistent identifier"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Specific versions of the software should be published to an archiving service that provides persistent identifiers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, "},{"type":"element","tag":"a","props":{"href":"https://zenodo.org/","rel":["nofollow"]},"children":[{"type":"text","value":"Zenodo"}]},{"type":"text","value":" is a long term archiving service for scientific data and software.\nZenodo will assign a DOI to the published data, making it citable."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Documentation on how to integrate Zenodo with your repository..."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://docs.github.com/en/repositories/archiving-a-github-repository/referencing-and-citing-content","rel":["nofollow"]},"children":[{"type":"text","value":"on GitHub"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://gitlab.com/sbeniamine/gitlab2zenodo","rel":["nofollow"]},"children":[{"type":"text","value":"on Gitlab"}]}]}]},{"type":"element","tag":"h2","props":{"id":"registries"},"children":[{"type":"text","value":"Registries"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To improve findability of the software, it should be shared in "},{"type":"element","tag":"a","props":{"href":"https://github.com/NLeSC/awesome-research-software-registries","rel":["nofollow"]},"children":[{"type":"text","value":"existing software registries"}]},{"type":"text","value":". Preferably, software is added to a registry specific to the domain and/or programming language. Software can be shared in multiple registries if they are relevant to the software."}]},{"type":"element","tag":"h2","props":{"id":"software-paper"},"children":[{"type":"text","value":"Software Paper"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A major, but also optional step is to publish a journal article about the software specifically in a dedicated software journal. Some examples are:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://openresearchsoftware.metajnl.com/","rel":["nofollow"]},"children":[{"type":"text","value":"Journal of Open Research Software (JORS)"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://joss.theoj.org/","rel":["nofollow"]},"children":[{"type":"text","value":"Journal of Open Source Software (JOSS)"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://www.softxjournal.com/","rel":["nofollow"]},"children":[{"type":"text","value":"SoftwareX"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://www.software.ac.uk/top-tip/which-journals-should-i-publish-my-software","rel":["nofollow"]},"children":[{"type":"text","value":"Check this extensive list of software journals"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note that this is different than other scientific journal publications in that the publication should be focussing on the software and its features and not on any particular research results. However, research projects in which the software plays a crucial role can of course be mentioned as use cases."}]},{"type":"element","tag":"h2","props":{"id":"communication-and-outreach"},"children":[{"type":"text","value":"Communication and outreach"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Once software is released, it is often a good idea to spend some time on communication and outreach to potential users of the software. In this way the world will get to know your software. This can be in many forms:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Blogposts"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Organisational/institutional newsletters"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Conference presentations/posters"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Etc."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"steps","depth":2,"text":"Steps"},{"id":"software-repository","depth":2,"text":"Software repository"},{"id":"versions-tags-and-releases","depth":2,"text":"Versions, tags and releases"},{"id":"get-a-persistent-identifier","depth":2,"text":"Get a persistent identifier"},{"id":"registries","depth":2,"text":"Registries"},{"id":"software-paper","depth":2,"text":"Software Paper"},{"id":"communication-and-outreach","depth":2,"text":"Communication and outreach"}]}},"_type":"markdown","_id":"local_fs:modules:publication:software_publication_pipeline.md","_source":"local_fs","_file":"modules/publication/software_publication_pipeline.md","_extension":"md"},{"_path":"/modules/researchsoftware/exercise-is-it-research-software","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"Is it research software?","description":"","type":"exercise","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"exercise-is-it-research-software"},"children":[{"type":"text","value":"Exercise: Is it research software?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Using the definition of research software from the FAIR4RS working group, try to classify the following as \"research software\" or \"software in research\""}]},{"type":"element","tag":"h3","props":{"id":"example-software-tools"},"children":[{"type":"text","value":"Example software tools"}]},{"type":"element","tag":"h4","props":{"id":"shape-preserving-local-histogram-modification-algorithm"},"children":[{"type":"text","value":"Shape Preserving Local Histogram Modification Algorithm"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5201/ipol.2018.236","rel":["nofollow"]},"children":[{"type":"text","value":"An Analysis and Implementation of the Shape Preserving Local Histogram Modification Algorithm"}]},{"type":"text","value":" is a published article on "},{"type":"element","tag":"a","props":{"href":"https://www.ipol.im/","rel":["nofollow"]},"children":[{"type":"text","value":"IPOL"}]},{"type":"text","value":". The source code implementing the algorithm is available for download."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Is this \"research software\" or \"software in research\"?"}]},{"type":"element","tag":"h4","props":{"id":"scipy"},"children":[{"type":"text","value":"SciPy"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://zbmath.org/software/6293","rel":["nofollow"]},"children":[{"type":"text","value":"SciPy"}]},{"type":"text","value":" is open-source software for mathematics, science, and engineering.\nIt is also the name of a very popular conference on scientific programming with Python. The SciPy library depends on NumPy, which provides convenient and fast N-dimensional array manipulation.\nThe SciPy library is built to work with NumPy arrays, and provides many user-friendly and efficient numerical routines such as routines for numerical integration and optimization.\nTogether, they run on all popular operating systems, are quick to install, and are free of charge.\nNumPy and SciPy are easy to use, but powerful enough to be depended upon by some of the world’s leading scientists and engineers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Is this \"research software\" or \"software in research\"?"}]},{"type":"element","tag":"h3","props":{"id":"other-software-tools"},"children":[{"type":"text","value":"Other software tools"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"How about other software tools you are familiar with?\nCan you provide an example of software you are familiar with, and then classify it as \"research software\" or \"software in research\"?"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"exercise-is-it-research-software","depth":2,"text":"Exercise: Is it research software?","children":[{"id":"example-software-tools","depth":3,"text":"Example software tools"},{"id":"other-software-tools","depth":3,"text":"Other software tools"}]}]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:exercise-is-it-research-software.md","_source":"local_fs","_file":"modules/researchsoftware/exercise-is-it-research-software.md","_extension":"md"},{"_path":"/modules/researchsoftware/exercise-research-life-cycle","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"Where does software fit in the research life cycle?","description":"","type":"exercise","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"exercise-where-does-software-fit-in-the-research-life-cycle"},"children":[{"type":"text","value":"Exercise: Where does software fit in the research life cycle?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Take a look at the research life cycle below."}]},{"type":"element","tag":"img","props":{"src":"stories/_fairsoftware/researchcycle.png","alt":"The Research Life Cycle","width":400},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Think of a piece of research software you have used or developed."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Where does it fit in the research life cycle?"}]},{"type":"element","tag":"h3","props":{"id":"existing-software"},"children":[{"type":"text","value":"Existing software"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The following research software can also be used as examples:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/xenon","rel":["nofollow"]},"children":[{"type":"text","value":"Xenon"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/esmvaltool","rel":["nofollow"]},"children":[{"type":"text","value":"ESMValTool"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/projects/rs-dat","rel":["nofollow"]},"children":[{"type":"text","value":"RS-DAT"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/haddock3","rel":["nofollow"]},"children":[{"type":"text","value":"Haddock"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://cjvanlissa.github.io/worcs/index.html","rel":["nofollow"]},"children":[{"type":"text","value":"worcs"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"exercise-where-does-software-fit-in-the-research-life-cycle","depth":2,"text":"Exercise: Where does software fit in the research life cycle?","children":[{"id":"existing-software","depth":3,"text":"Existing software"}]}]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:exercise-research-life-cycle.md","_source":"local_fs","_file":"modules/researchsoftware/exercise-research-life-cycle.md","_extension":"md"},{"_path":"/modules/researchsoftware","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Research software","description":"thumbnail-research-software","id":0,"trl":"medium","category":"Getting started","author":"eScience Center","thumbnail":"thumbnail-research-software.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/colorful-software-or-web-code-on-a-computer-monitor-Skf7HxARcoc?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-research-software"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@markusspiske?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Markus Spiske"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/colorful-software-or-web-code-on-a-computer-monitor-Skf7HxARcoc?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:index.md","_source":"local_fs","_file":"modules/researchsoftware/index.md","_extension":"md"},{"_path":"/modules/researchsoftware/info","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the Research Software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the Research Software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:info.md","_source":"local_fs","_file":"modules/researchsoftware/info.md","_extension":"md"},{"_path":"/modules/researchsoftware/research-software","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"The role of research software","description":"","type":"reading","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"the-role-of-research-software-10-minutes"},"children":[{"type":"text","value":"The role of research software (10 minutes)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The following piece was written after a workshop called \"The Future of Research Software\", held in the Netherlands in 2022."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It explores the different roles for research software in the research life cycle, strengthening the case for sustainable software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://upstream.force11.org/defining-the-roles-of-research-software/","rel":["nofollow"]},"children":[{"type":"text","value":"Defining the Roles of Research Software"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After reading the piece, discuss the following questions:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What are the different roles of research software?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What are the challenges for each of these roles?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How can we address these challenges?"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-role-of-research-software-10-minutes","depth":2,"text":"The role of research software (10 minutes)"}]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:research-software.md","_source":"local_fs","_file":"modules/researchsoftware/research-software.md","_extension":"md"},{"_path":"/modules/researchsoftware/slides-researchsoftware","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"Research Software","description":"","type":"slides","order":2,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"research-software"},"children":[{"type":"text","value":"Research software"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"ceci-nest-pas-une-photo"},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Ceci n'est pas une photo"}]}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Black_hole_-_Messier_87_crop_max_res.jpg/1280px-Black_hole_-_Messier_87_crop_max_res.jpg","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://doi.org/10.3847/2041-8213/ab0ec7","rel":["nofollow"]},"children":[{"type":"text","value":"The Event Horizon Telescope Collaboration et al. 2019"}]},{"type":"text","value":" (CC BY 3.0)"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software plays an important role in science. A first thought may be its role in data collection and analysis. Further, it may play a role in designing experiments, based on models generated. It may "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"be"}]},{"type":"text","value":" the experiment itself, simulate a research outcome based on data or ideas entered; it may also be the \"brain\" behind controlling crucial instrumentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What scientific software can you think of?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What role does it play?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An example here: the Event Horizon Telescope, which took a \"picture\" of a black hole.\nThe \"telescope\" is not a single tool, but complex: a \"planet-scale array of eight ground-based radio telescopes\" (wikipedia).\nThe separate telescopes collect data that is synchronized with atomic clocks, and the data is combined at highly specialised supercomputers.\nThe data can be converted into an image using custom software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"the-research-lifecycle"},"children":[{"type":"text","value":"The research lifecycle"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"stories/_fairsoftware/researchcycle.png","alt":"The Research Life Cycle","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":"Software is used all across the research lifecycle"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is used all across the research life cycle."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"stories/_fairsoftware/definition.png","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":"definition of Research Software from the FAIR4RS working group"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A definition of research software, from the FAIR4RS working group.\nIt is important that not all software that is used in research is research software.\nFor example, a text editor that is used to write a paper is not research software.\nNor is powerpoint, a web browser, or the software used to guide the telescope.\nEven tools like R or Python are not necessarily research software.\nThe code written in R or Python for an analysis would be research software, however.\nJust like a custom-made Excel macro that is used to analyse data.\nOr a custom-made web application that is used to collect data."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"why-the-distinction"},"children":[{"type":"text","value":"Why the distinction?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Research software is an important asset and output of research"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enable proper attribution"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Increase Findability and Reuse"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The distinction is important"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"take-home-messages"},"children":[{"type":"text","value":"Take home messages"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is an important part of research"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Not all software used in research is research software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"It is important to regard research software in the whole research lifecycle"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"ceci-nest-pas-une-photo","depth":2,"text":"Ceci n'est pas une photo"},{"id":"the-research-lifecycle","depth":2,"text":"The research lifecycle"},{"id":"why-the-distinction","depth":2,"text":"Why the distinction?"},{"id":"take-home-messages","depth":2,"text":"Take home messages"}]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:slides-researchsoftware.pmd","_source":"local_fs","_file":"modules/researchsoftware/slides-researchsoftware.pmd","_extension":"pmd"},{"_path":"/modules/researchsoftware/slides-software","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"What is software?","description":"","type":"slides","order":1,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h1","props":{"id":"what-is-software"},"children":[{"type":"text","value":"What is software?"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-is-data"},"children":[{"type":"text","value":"Software is data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Computer scientist: "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"\"Software is just data\""}]}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"stories/_researchsoftware/bits_heart.jpg","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@swimstaralex?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Alexander Sinn"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/a-heart-is-shown-on-a-computer-screen-KgLtFCgfC28?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nInside the computer, software is just some type of data."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-is-data-1"},"children":[{"type":"text","value":"Software is data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is ..."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"stored as bits"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"read, loaded and processed"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"can be input, and can be output"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"... just like all other data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nSoftware is stored as bits and read from disk, loaded into memory and processed in exactly the same way as other data. Software can be input, and software can be output."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-is-not-data"},"children":[{"type":"text","value":"Software is "},{"type":"element","tag":"u","props":{},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Everyone but computer scientists: "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"\"Software is not data\""}]}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"stories/_researchsoftware/tools.jpg","width":"55%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@barnimages?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Barn Images"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/assorted-handheld-tools-in-tool-rack-t5YUoHW6zRo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}]},{"type":"element","tag":"small","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nFor all other practical purposes it is often helpful to make a distinction between software and other data.\nSoftware is a tool, while data is the material that you use the tool on."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-is-not-data-1"},"children":[{"type":"text","value":"Software is "},{"type":"element","tag":"u","props":{},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is..."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"complex"}]},{"type":"text","value":": code is creatively generated, interconnected and multi-layered"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"interdependent"}]},{"type":"text","value":": it builds upon and therefore depends on other software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"executable"}]},{"type":"text","value":": it is not static, but can be run (to process data)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"dynamic"}]},{"type":"text","value":": it can (and will) break soon, needs to be updated"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nWhile technically, software is a special kind of data (in that it is representation of information in a digital state), they are in essence quite different."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software and data both are digital objects, sharing certain characteristics: they can be assigned a DOI, and they can have a license."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software is quite different from data, however. Consider:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Complexity; it is not a single file, but a collection of files that are interconnected and multi-layered, and do not necessarily stand on their own. Software is also the result of a creative process that provides a tool to do something, and not the result of a measurement or observation."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interdependence; software is often built using other software, and rarely built completely from scratch. This makes it dependent on other existing applications, which themselves may also change over time."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Executability; software is in its dryest form a set of instructions that can be an archive of a procedure. However, the main goal of software is that these instructions can be executed. Data, by contrast, stand on their own."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Dynamic vs static; its interdependence and context-dependency drives software to require maintenance to retain its value, and this maintenance is not straightforward. Maintenance is also counter to academic culture; it does not fit in existing structures (both in terms of reward/recognition, but also in terms of funding and understanding of what is needed). Versioning of software is very common, while data is often static (though versions may happen)."}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-vs-data-management"},"children":[{"type":"text","value":"Software vs data management"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is a "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"living thing"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Some FAIR data management practices apply to software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Many FAIR principles do not apply easily to software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Good data management will not ensure good software management"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe different nature of software also provides opportunities but also requires extra thought on its management.\nSoftware is a living thing, and therefore it is easier to adopt good practices early on.\nCrucially, there is a community driven openness in software that long predates the open science movement.\nThis is not to say that software is inherently open, but that there is a broad open culture, which also comes with existing tools and pathways to facilitate openness and transparency.\nConsider GitHub (and other code hosting platforms), which are designed for this purpose.\nConsider also version control software, a good software development practice that builds in provenance."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"take-home-messages"},"children":[{"type":"text","value":"Take home messages"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is a special kind of data"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Some FAIR data management"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Wee need extra and different techniques for software management"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-is-data","depth":2,"text":"Software is data"},{"id":"software-is-data-1","depth":2,"text":"Software is data"},{"id":"software-is-not-data","depth":2,"text":"Software is not data"},{"id":"software-is-not-data-1","depth":2,"text":"Software is not data"},{"id":"software-vs-data-management","depth":2,"text":"Software vs data management"},{"id":"take-home-messages","depth":2,"text":"Take home messages"}]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:slides-software.pmd","_source":"local_fs","_file":"modules/researchsoftware/slides-software.pmd","_extension":"pmd"},{"_path":"/modules/researchsoftware/software-and-data","_dir":"researchsoftware","_draft":false,"_partial":false,"_locale":"","title":"Software is data","description":"","type":"reading","order":6,"body":{"type":"root","children":[{"type":"element","tag":"h3","props":{"id":"software-is-data-10-minutes-optional"},"children":[{"type":"text","value":"Software is data (10 minutes, optional)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In computer science, the fact that software is data is considered one of the fundamental concepts of computing. The fact that the thing that operates the machine (software) is the same kind of thing as the thing it operates on (data) is definitely one of the strengths of current computersystems and one of the main reasons why we can do such complex and powerful things with the combination of hardware and software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read the following blogpost about why this concept is so powerful:\n"},{"type":"element","tag":"a","props":{"href":"https://www.blackliszt.com/2014/04/fundamental-concepts-of-computing-software-is-data.html","rel":["nofollow"]},"children":[{"type":"text","value":"https://www.blackliszt.com/2014/04/fundamental-concepts-of-computing-software-is-data.html"}]}]},{"type":"element","tag":"h3","props":{"id":"software-is-a-special-type-of-data"},"children":[{"type":"text","value":"Software is a special type of data ()"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However for most practical purposes in most domains of scientific research (except maybe the domain of computer science) it is useful to make a distinction between the data that is software and other data. From now on, when we use the word data, we mean the kind fo data which is not software and which we use to store more static information."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is executable, data is not."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Data provides information or evidence, software provides a tool to do work on the data."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is a creative work, scientific data are facts or observations."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The lifetime of software is generally not as long as that of data."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/danielskatz/software-vs-data","rel":["nofollow"]},"children":[{"type":"text","value":"https://github.com/danielskatz/software-vs-data"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://doi.org/10.7287/peerj.preprints.2630v1","rel":["nofollow"]},"children":[{"type":"text","value":"https://doi.org/10.7287/peerj.preprints.2630v1"}]}]},{"type":"element","tag":"h3","props":{"id":"discussion"},"children":[{"type":"text","value":"Discussion"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Can you think of examples where the line between software and data becomes fuzzy?"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-is-data-10-minutes-optional","depth":3,"text":"Software is data (10 minutes, optional)"},{"id":"software-is-a-special-type-of-data","depth":3,"text":"Software is a special type of data ()"},{"id":"discussion","depth":3,"text":"Discussion"}]}},"_type":"markdown","_id":"local_fs:modules:researchsoftware:software-and-data.md","_source":"local_fs","_file":"modules/researchsoftware/software-and-data.md","_extension":"md"},{"_path":"/modules/smp/exercise1","_dir":"smp","_draft":false,"_partial":false,"_locale":"","title":"Exercise 1","description":"","type":"exercise","order":2,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-1"},"children":[{"type":"text","value":"Exercise 1"}]},{"type":"element","tag":"h2","props":{"id":"software-management-plans-10-minutes"},"children":[{"type":"text","value":"Software Management Plans (10 minutes)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Research software plays a crucial role in academic research and has become a key output of many research projects. A software management plan helps to implement best practices during software development and ensures that software is accessible and reusable in the short and longer term. It also contributes to the reproducibility of results and stimulates collaborative work on open-source software for research."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In practice, a software management plan helps:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Assess whether developing new software is necessary"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Plan to make the research software reusable and sustainable"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Plan for necessary resources"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Allow for verification of work that went into implementation"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the Practical Guide to Software Management plans, this is described in more detail:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://zenodo.org/record/7589725","rel":["nofollow"]},"children":[{"type":"text","value":"A practical guide to software management plans"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After reading this guide, you should:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Be aware of different types of research software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Understand different demands placed on these types of software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Know about various aspects of software management"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Be able to explain the importance of a software management plan for software sustainability."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-management-plans-10-minutes","depth":2,"text":"Software Management Plans (10 minutes)"}]}},"_type":"markdown","_id":"local_fs:modules:smp:exercise1.md","_source":"local_fs","_file":"modules/smp/exercise1.md","_extension":"md"},{"_path":"/modules/smp/exercise2","_dir":"smp","_draft":false,"_partial":false,"_locale":"","title":"Exercise 2","description":"In a live setting, this exercise is done in groups.\nEach group will be assigned a software project.\nThe group will then create an SMP for this project.","type":"exercise","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-2"},"children":[{"type":"text","value":"Exercise 2"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"In a live setting, this exercise is done in groups.\nEach group will be assigned a software project.\nThe group will then create an SMP for this project."}]}]},{"type":"element","tag":"h2","props":{"id":"step-1-choose-a-software-project"},"children":[{"type":"text","value":"Step 1: Choose a software project"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Choose a software project for this exercise, preferably one you are familiar with."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you don't have a project in mind, you can use one of the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/xenon","rel":["nofollow"]},"children":[{"type":"text","value":"Xenon"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/esmvaltool","rel":["nofollow"]},"children":[{"type":"text","value":"ESMValTool"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/projects/rs-dat","rel":["nofollow"]},"children":[{"type":"text","value":"RS-DAT"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://research-software-directory.org/software/haddock3","rel":["nofollow"]},"children":[{"type":"text","value":"Haddock"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://cjvanlissa.github.io/worcs/index.html","rel":["nofollow"]},"children":[{"type":"text","value":"worcs"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Find the Practical Guide at "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5281/zenodo.7589725","rel":["nofollow"]},"children":[{"type":"text","value":"tinyurl.com/SMP-guide"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"step-2-assess-the-management-level-needed"},"children":[{"type":"text","value":"Step 2: Assess the management level needed"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Look at the software repository or page in the Research Software Directory"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Assess what level of management the software needs: low, medium, or high."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For this, use the following considerations (section 5 in "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5281/zenodo.7589725","rel":["nofollow"]},"children":[{"type":"text","value":"the guide"}]},{"type":"text","value":"):"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Purpose"}]},{"type":"text","value":". What is the current reason or expected end-use for developing the software?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Reliability"}]},{"type":"text","value":". The effect of software failure and/or non-maintenance on:\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Risk of harm to self or others. This includes injury, privacy violation, bias, and inappropriate content."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reputation. For example to self, institution or other."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Research, either your own or of others. This effect could be due to an obvious software failure (\"crash\") or a hidden one, for example, returning inconsistent numerical results on different operating systems."}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Maintenance"}]},{"type":"text","value":". The long-term effort needed to maintain the software as long as it might be used as a standalone tool or dependency. This includes maintenance functions that can extend beyond the lifespan of the original development project and includes fixing bugs, dependency management, operating system compatibility, and security issues."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This may not be a clear-cut decision, but that is fine.\nThe goal is to get a sense of the level of management needed.\nDiscuss with your group and come to a consensus."}]},{"type":"element","tag":"h2","props":{"id":"step-3-fill-in-the-smp-template"},"children":[{"type":"text","value":"Step 3: Fill in the SMP template"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"From the assessment made in Step 1, get the requirements that match the level of management needed."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Copy a template, and fill it in for your software project."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"step-1-choose-a-software-project","depth":2,"text":"Step 1: Choose a software project"},{"id":"step-2-assess-the-management-level-needed","depth":2,"text":"Step 2: Assess the management level needed"},{"id":"step-3-fill-in-the-smp-template","depth":2,"text":"Step 3: Fill in the SMP template"}]}},"_type":"markdown","_id":"local_fs:modules:smp:exercise2.md","_source":"local_fs","_file":"modules/smp/exercise2.md","_extension":"md"},{"_path":"/modules/smp/exercise3","_dir":"smp","_draft":false,"_partial":false,"_locale":"","title":"Exercise 3","description":"","type":"exercise","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-3"},"children":[{"type":"text","value":"Exercise 3"}]},{"type":"element","tag":"h2","props":{"id":"smp-vs-fair"},"children":[{"type":"text","value":"SMP vs FAIR"}]},{"type":"element","tag":"h3","props":{"id":"why-do-we-care"},"children":[{"type":"text","value":"Why do we care?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When thinking of the importance of good software stewardship, management, and development practice, many reasons and motivations come to mind.\nYou may think of:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Accuracy of results"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reproducibility of results"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reusability of software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"User friendliness of software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software quality"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Recognition and rewards for software developers"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Scholarly archive"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software sustainability"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What are the reasons and motivations that come to mind for you?"}]},{"type":"element","tag":"h3","props":{"id":"mapping-motivations"},"children":[{"type":"text","value":"Mapping motivations"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"("},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"NB:"}]},{"type":"text","value":" If you are not yet familiar with the FAIR principles for research software, "},{"type":"element","tag":"a","props":{"href":"/modules/fairsoftware.md"},"children":[{"type":"text","value":"take a look at the chapter on FAIR software"}]},{"type":"text","value":" before doing the following exercise.)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The motivations we listed above were important considerations for the development of Software Management Plans as well as the FAIR principles for research software.\nThey do not match completely, however.\nEach has its own focus and emphasis."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the following exercise, we will map the motivations we listed above to the ultimate goals of SMPs and the FAIR principles."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Draw a Venn diagram with two circles: SMP and FAIR:"}]},{"type":"element","tag":"img","props":{"src":"/modules/smp/media/venn_fairsmp.png","width":400,"style":{"aspectRatio":"2124/1362"}},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Map the motivations listed above to the Venn diagram."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Which motivations are covered by SMPs, which by FAIR, and which by both?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you find any motivations that are not covered by either?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What does this tell you about the relationship between SMPs and FAIR?"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"smp-vs-fair","depth":2,"text":"SMP vs FAIR","children":[{"id":"why-do-we-care","depth":3,"text":"Why do we care?"},{"id":"mapping-motivations","depth":3,"text":"Mapping motivations"}]}]}},"_type":"markdown","_id":"local_fs:modules:smp:exercise3.md","_source":"local_fs","_file":"modules/smp/exercise3.md","_extension":"md"},{"_path":"/modules/smp","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software Management Plans","description":"thumbnail-smp","id":1,"trl":"medium","category":"Reusability","author":"eScience Center","thumbnail":"thumbnail-smp.jpg","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/person-holding-pencil-near-laptop-computer-5fNmWej4tAA?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-smp"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Photo by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@homajob?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Scott Graham"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/person-holding-pencil-near-laptop-computer-5fNmWej4tAA?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:smp:index.md","_source":"local_fs","_file":"modules/smp/index.md","_extension":"md"},{"_path":"/modules/smp/info","_dir":"smp","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the Software Management Plans module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the Software Management Plans module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:smp:info.md","_source":"local_fs","_file":"modules/smp/info.md","_extension":"md"},{"_path":"/modules/smp/reading","_dir":"smp","_draft":false,"_partial":false,"_locale":"","title":"Reading material","description":"","type":"reading","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"reading-material"},"children":[{"type":"text","value":"Reading material"}]},{"type":"element","tag":"h2","props":{"id":"software-management-plans"},"children":[{"type":"text","value":"Software Management Plans"}]},{"type":"element","tag":"h3","props":{"id":"zenodo"},"children":[{"type":"text","value":"Zenodo"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in Zenodo about "},{"type":"element","tag":"a","props":{"href":"https://zenodo.org/records/7589725","rel":["nofollow"]},"children":[{"type":"text","value":"Practical guide to Software Management Plans"}]}]},{"type":"element","tag":"h3","props":{"id":"software-sustainability-institute"},"children":[{"type":"text","value":"Software Sustainability Institute"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in SSI Resources Hub about "},{"type":"element","tag":"a","props":{"href":"https://www.software.ac.uk/guide/writing-and-using-software-management-plan","rel":["nofollow"]},"children":[{"type":"text","value":"Writing and using a software management plan"}]}]},{"type":"element","tag":"h2","props":{"id":"overview-of-practical-guides"},"children":[{"type":"text","value":"Overview of practical guides"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are various practical guides online to the different aspects of software management."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here is an (incomplete) list:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/vcs.html","rel":["nofollow"]},"children":[{"type":"text","value":"Version control"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/testing/testing-guidance.html","rel":["nofollow"]},"children":[{"type":"text","value":"Testing"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/renv/renv-package.html","rel":["nofollow"]},"children":[{"type":"text","value":"Packaging"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://guide.esciencecenter.nl/#/best_practices/documentation","rel":["nofollow"]},"children":[{"type":"text","value":"Documentation"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"User"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Deployment"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developer"}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/communication/citable/citable-cff.html#cm-citable-cff","rel":["nofollow"]},"children":[{"type":"text","value":"Citation"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/licensing/licensing-software.html","rel":["nofollow"]},"children":[{"type":"text","value":"Software licensing"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/licensing/licensing-compatibility.html","rel":["nofollow"]},"children":[{"type":"text","value":"compatibility"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-management-plans","depth":2,"text":"Software Management Plans","children":[{"id":"zenodo","depth":3,"text":"Zenodo"},{"id":"software-sustainability-institute","depth":3,"text":"Software Sustainability Institute"}]},{"id":"overview-of-practical-guides","depth":2,"text":"Overview of practical guides"}]}},"_type":"markdown","_id":"local_fs:modules:smp:reading.md","_source":"local_fs","_file":"modules/smp/reading.md","_extension":"md"},{"_path":"/modules/smp/slides-smp","_dir":"smp","_draft":false,"_partial":false,"_locale":"","title":"Software Management Plans","description":"","type":"slides","order":1,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h1","props":{"id":"software-management-plans"},"children":[{"type":"text","value":"Software Management Plans"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"mapping-the-via-appia"},"children":[{"type":"text","value":"Mapping the Via Appia"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Mapping the Via Appia","src":"media/viaappia.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe Via Appia was the most important road in the Roman Empire, connecting Rome to Brindisi in the south of Italy, spanning a distance of 540km.\nIt was used for military purposes, but also for trade and travel.\nThe Via Appia was built in 312 BC, and used for 600 years, until the fall of the Roman Empire."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The eScience Center participated in a project to map the Via Appia. Using a combination of satellite imagery and ground-based measurements, the project created a 3D model of the road. The model was used to study the road and its surroundings."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In this project, research software was used to process the satellite imagery and the ground-based measurements, and combine them into a 3D model of the Via Appia."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"the-research-life-cycle"},"children":[{"type":"text","value":"The research life cycle"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/researchcycle.png","width":"60%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nAll over the research life cycle we can find examples of software created for research.\nSome are more straightforward than others:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Planning: to design experiments"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Collecting: to collect data, to control instruments, to run simulations"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Analysing: to analyse data, to generate models"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"reuse-reproduce"},"children":[{"type":"text","value":"Reuse & reproduce"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Both reusability and reproducibility are important values in research software:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Reproducibility"}]},{"type":"text","value":" is an integral part of the research process"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"reusability"}]},{"type":"text","value":" allows building upon existing software"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For both, we need to be able to "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"find"}]},{"type":"text","value":", "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"access"}]},{"type":"text","value":", "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"use"}]},{"type":"text","value":", and "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"understand"}]},{"type":"text","value":" software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nReproducibility of research allows validation of its findings, and is therefore vital in building a solid foundation for scientific progress.\nWe can only truly build upon existing research if we can reproduce its results."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When software has been used in research, this has enormous potential to facilitate the research reproducibility.\nHowever, it also comes with its own particular challenges: software reproducibility is not always straightforward."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An additional feature of software, is that it may be a product on its own, and can be reused by others.\nThis is a great opportunity to build on our collective knowledge and tools, and to avoid reinventing the wheel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Ensuring that the software is findable, accessible, usable and understandable is key to both reproducibility and reusability."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Software Needs Maintenance","src":"media/maintenance.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nSoftware and code have some unique features.\nOne particular feature is that they depend on other software, and on the environment in which they are run.\nThis means that it requires maintenance and updates to keep it functional, as the environments around it change.\nThis is called software sustainability."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"overview"},"children":[{"type":"text","value":"Overview"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software Management Plan: what and why?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Aspects of software management"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Different needs for different software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"SMP template examples"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThis presentation will introduce you to the concept of software management plans, as a first step towards better software stewardship and sustainability.\nWe will look at different aspects of good software managements, as well as different needs for different types of software.\nFinally, we will take a look at some concrete examples of software management plans."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"software-management-plan-smp"},"children":[{"type":"text","value":"Software Management Plan (SMP)"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Building on the success of Data Management Plans (DMPs)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A document detailing how research software will be managed\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What does it do?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Who is it for?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What resources does it need?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Who is responsible?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How long will it be available?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"..."}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Can be part of a project proposal, or generated in the early phases"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nSoftware management plans (SMPs) are inspired by the earlier adopted data management plans.\nIn these documents, often created at or before the start of a project, plans and explicit decisions are made about various aspects around the management of these digital objects.\nThey are increasingly required by funders and institutions."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In an SMP it is explicitly stated what the software aims to do, who its target audience is, and what resources it is expected to need.\nIt also addresses the intended lifespan, and allocates responsibility: who makes releases? Who maintains the software at the end of the project, and if so for how long?"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"why-use-an-smp"},"children":[{"type":"text","value":"Why use an SMP?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Make technical choices explicit"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Plan for necessary resources"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Assess whether new software is really needed"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Clarity early on helps to avoid problems later"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"..."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nWith an SMP, you make explicit plans and decisions in an early stage.\nThe SMP provides the team with structured, relevant questions early on, with the aim to maximize the accessibility, reusability, and impact of the software in question.\nThis supports good software management practices, and it makes sure they are known to the researchers involved."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"More specifically, in an SMP you:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Make explicit technical choices. For example, what programming language will be used? What operating system will be supported?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Plan for necessary resources; be they financial, human, infrastructure or other."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Assess whether new software is really needed; explore whether existing software can be reused, and to what extent;"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"These are issues that arise during software development anyway, but all too often are not explicitly dealt with.\nBy tackling them early, a conscious decision can be made rather than needing to deal with consequences of implicit choices.\nResource planning moreover is vital for the sustainability of the software.\nFinally, the SMP will allow later verification of plans in a publicly funded project."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/smpguide.png","width":"50%"},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5281/zenodo.7038280","rel":["nofollow"]},"children":[{"type":"text","value":"doi:10.5281/zenodo.7038280"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nTo get started on creating a Software Management Plan, this practical guide has been created by NWO and the Netherlands eScience Center.\nIts first version was released in August of 2022, but it has since been, and will continue to be, updated.\nAll past versions and the latest release are available on Zenodo via this DOI."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/groupedrequirements.png","width":"60%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nIn the practical guide, the core requirements for an SMP are listed, and grouped into four categories."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Focusing on the "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"engineering"}]},{"type":"text","value":", the guide asks about version control, packaging, testing, and software quality."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Focusing on "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":", the guide discusses documentation needs for users, developers, and for deployment specifically."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Focusing on "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"project management"}]},{"type":"text","value":", the guide addresses licensing, maintenance, resources, the project repository, and a risk analysis."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Finally, the guide asks about the "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"purpose"}]},{"type":"text","value":" of the software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/purpose.png","width":"40%"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What problem does it solve?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Who is the intended audience?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What are its advantages and limitations?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe software's purpose is a central question in the SMP."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It is important to be clear about the problem it addresses, and who the software is aimed at.\nAddressing the limitations of the software, as well as the advantages it will provide, help determine its scope.\nThis will help the developers focus on the specific needs of the software."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/engineering.png","width":"30%"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What version control will you use?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How will you test the software?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How will the project be organized or packaged?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How will you manage code quality?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nOn the engineering focus, several specific areas are addressed."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Version control"}]},{"type":"text","value":" has a myriad of benefits: it allows keeping track of history and provenance, can support experimentation and collaboration, and is crucial for the identification of specific versions of the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Testing"}]},{"type":"text","value":" ensures that software continues to work as intended.\nThere are many different approaches to this: units of code can be tested in unit tests; entire workflows can be verified in integration tests; acceptance tests can be created to ensure specific requirements are met; regression testing can be done to ensure new changes do not break existing functionality; and so on.\nDeciding whether and if so what testing will be implemented is an important element of the SMP."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Packaging"}]},{"type":"text","value":" is important for the distribution of software.\nThe format in which the software will be distributed is an important decision that should be made early on."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Code quality"}]},{"type":"text","value":" should be addressed: what standards will be adhered to, and how will they be measured and supported?\nThere are many tools that can help with this, and it is important to choose them early on to maintain consistent code quality throughout the project."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/documentation.png","width":"30%"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What documentation will you provide\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"for users?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"for developers?"}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How will you manage system requirements (e.g. dependencies)?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nDocumentation is an important component of software, and should be tailored to different audiences."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"user documentation"}]},{"type":"text","value":", the software's function should be explained, and instructions on how to use it should be provided."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"developer documentation"}]},{"type":"text","value":", instructions on how to modify the software, and how to contribute to the project should be provided."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Deployment documentation"}]},{"type":"text","value":" explains any system requirements (such as dependencies) for deploying the software, and installation and testing instructions."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/projectmanagement.png","width":"30%"},"children":[]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What license will you use?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How will the software be maintained? For how long?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"How should the software be cited?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What repository(ies) will you use?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What resources will you need?\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"e.g. infrastructure, personnel, training, hardware..."}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What risks and challenges do you foresee?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe project management focus is broad, and addresses various conditions for the software's long-term sustainability and re-use."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Any reusable software should have an appropriate "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"license"}]},{"type":"text","value":", which is an important early decision."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"maintenance"}]},{"type":"text","value":" of the software should be addressed in an SMP: who will maintain it, and for how long?\nHow and when will it be retired?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Plan the "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"citation"}]},{"type":"text","value":" of the software: how will you collect information about its use? What DOI will you use for this?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"repository"}]},{"type":"text","value":" where the software will be deposited is preferably publicly accessible, and should allow users to obtain a functional copy of the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"resources"}]},{"type":"text","value":" — human, infrastructure, financial - will be needed, and when?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Finally, a "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"risk analysis"}]},{"type":"text","value":" should be performed: for instance, are there privacy or security concerns? Is there potential for vendor lock, or other considerations for future reliability and reuse?"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"smp-template"},"children":[{"type":"text","value":"SMP template"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Should be provided by the institution"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Include guidance:\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Instructions on how to fill it out"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Resources for information and support"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Institution-specific regulations"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Institution-specific resources available"}]}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Include an assessment rubric (e.g. with (un)acceptable answers)"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nThe Software Management Plan template is a duty of the institution.\nA good SMP includes guidance on how to fill it out, including institution-specific regulations and resources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An assessment rubric should accompany the template, indicating per question or focus what conditions need to be met, and which answers are (un)acceptable."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"not-all-software-is-equal"},"children":[{"type":"text","value":"Not all software is equal"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"","src":"media/softwarespectrum.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nIt is important to realize when making an SMP, that research software comes in many shapes and sizes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An ad-hoc R script written by a PhD student to analyse data from a specific machine, is research software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It can also be a multinational collaboration to develop a tool that is used by thousands of researchers worldwide."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Different software has different needs, but there are common principles in managing them and ensuring their sustainability."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The diversity of research software does mean that not all requirements apply to every type of software.\nTo address this, we can subset the core requirements to create different SMP templates tailored to software with different management needs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The SMP Guide distinguishes software with low, medium, and high management needs."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"smp-level-low"},"children":[{"type":"text","value":"SMP level: low"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Single purpose scripts"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developer is the primary user"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Performs limited function:\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Analyses a single experiment or dataset"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Automates a routine task"}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nSoftware with low management requirements is defined by its limited function: it performs a single analysis or automates a routine task.\nIts "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"purpose"}]},{"type":"text","value":" is typically limited to a specific experiment, and the developer is the primary user."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"reliability"}]},{"type":"text","value":" of this type of software is usually easy to assess: the output can be visually inspected, or tested with a limited set of inputs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"maintenance"}]},{"type":"text","value":" of this type of software is usually limited to the duration of the project in which it was developed.\nIt is not intended to be used by others, and therefore its influence beyond the scope for which it was intended is likely small."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Best practices during development (e.g. version control), as well as measures to enable its reuse (documentation, versioning, archiving) are appropriate and recommended.\nThey are however not requirements, nor is long term maintenance planning necessary."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"smp-level-medium"},"children":[{"type":"text","value":"SMP level: medium"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Primary or secondary output of a research project"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Adds a library or module to existing tool, or even works standalone"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Unique functionality that will be reused\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Implements a new or higher performance algorithm"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simulation software implementing a new model or method"}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nSoftware requiring "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"medium"}]},{"type":"text","value":" management, is defined as software that is the primary or secondary output of a research project."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Its original "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"purpose"}]},{"type":"text","value":" is typically limited to a single research project, but incorporates functionality that may be of use to others, either as a standalone tool, library, or module in an existing tool."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"reliability"}]},{"type":"text","value":" is more difficult to assess due to its increased complexity, but it is also also more important: this software likely has an effect on other research outside of the original project.\nGood software practices such as version control and user/technical documentation are therefore essential here.\nMore advanced requirements, such as code auditing, automated testing, software packaging, and distribution also need to be considered."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This software's longer term "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"maintenance"}]},{"type":"text","value":" is relevant as it will have a lifespan longer than the project in which it was developed.\nSoftware management planning should include providing information on archiving and citation as well as strategies for post-project maintenance and support."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"smp-level-high"},"children":[{"type":"text","value":"SMP level: high"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Mission critical software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"High standards required for reliability"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Absence or replacement of the software would threaten research"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software that is continually in use:\n"},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Preprocessing data coming from a telescope"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Controlling a medical device"}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\n"},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"High"}]},{"type":"text","value":" management software is defined as mission critical software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Its "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"purpose"}]},{"type":"text","value":" is to perform a critical function, and its absence or replacement would threaten the research."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"reliability"}]},{"type":"text","value":" of this software is of utmost importance, and all possible actions should be taken to ensure it."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Its "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"maintenance"}]},{"type":"text","value":" is not limited to the duration of the project in which it was developed, but should be maintained as long as it is in use.\nThus, maintenance strategies, including funding and/or community development plans, should be in place."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"making-that-call"},"children":[{"type":"text","value":"Making that call"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Purpose"}]},{"type":"text","value":": what is the reason or expected end-use for the software?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Reliability"}]},{"type":"text","value":": what is the effect of software failure and/or non-maintenance?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Maintenance"}]},{"type":"text","value":": what is the long-term effort needed to maintain the software?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check the Practical Guide: "},{"type":"element","tag":"a","props":{"href":"https://doi.org/10.5281/zenodo.7038280","rel":["nofollow"]},"children":[{"type":"text","value":"doi:10.5281/zenodo.7038280"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nDeciding what level of management, and therefore which SMP template, is appropriate for a specific software project, is not always straightforward.\nThe practical guide provides some guidance on how to make this decision.\nAddressing what purpose the software serves, how reliable it needs to be, and what efforts will be required for its longer term maintenance, will help determine the appropriate level of management."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/threelevels.png","width":"60%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nWith a specific level of management in mind, the core requirements that are relevant for this software's management can be determined.\nThe practical guide provides a clear overview of this."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"take-home-messages"},"children":[{"type":"text","value":"Take home messages"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software is found in all stages of the research cycle"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Research software comes in many shapes and sizes"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software stewardship starts with a good plan"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Good software management leads to better science"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:\nSoftware is found in all stages of the research cycle, and is used for many different purposes.\nIt comes in many shapes and sizes, and has different needs.\nSoftware stewardship starts with a good plan, and is an important scientific step: good software management leads to better science."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"020 - 460 47 70"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"mapping-the-via-appia","depth":2,"text":"Mapping the Via Appia"},{"id":"the-research-life-cycle","depth":2,"text":"The research life cycle"},{"id":"reuse-reproduce","depth":2,"text":"Reuse & reproduce"},{"id":"overview","depth":2,"text":"Overview","children":[{"id":"software-management-plan-smp","depth":3,"text":"Software Management Plan (SMP)"}]},{"id":"why-use-an-smp","depth":2,"text":"Why use an SMP?"},{"id":"smp-template","depth":2,"text":"SMP template"},{"id":"not-all-software-is-equal","depth":2,"text":"Not all software is equal"},{"id":"smp-level-low","depth":2,"text":"SMP level: low"},{"id":"smp-level-medium","depth":2,"text":"SMP level: medium"},{"id":"smp-level-high","depth":2,"text":"SMP level: high"},{"id":"making-that-call","depth":2,"text":"Making that call"},{"id":"take-home-messages","depth":2,"text":"Take home messages"}]}},"_type":"markdown","_id":"local_fs:modules:smp:slides-smp.pmd","_source":"local_fs","_file":"modules/smp/slides-smp.pmd","_extension":"pmd"},{"_path":"/modules/testing/exercise1","_dir":"testing","_draft":false,"_partial":false,"_locale":"","title":"Exercise 1","description":"Choose an alternative that correctly answers the following questions:","type":"exercise","order":2,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-1"},"children":[{"type":"text","value":"Exercise 1"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Choose an alternative that correctly answers the following questions:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"1.1 What is software testing?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"a) A method for evaluating a software's compatibility with different operating systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"b) The process of releasing updates and patches for software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"c) The process of verifying and validating that a software meets the required specifications and works as intended."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"d) A step in the software lifecycle focused on community engagement and feedback."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"e) The practice of documenting software functionalities."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"1.2 Why is software testing important?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"a) To build and maintain the community's trust by demonstrating commitment to quality."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"b) To identify and fix bugs, ensure the software meets required standards, and assess its reliability and reproducibility."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"c) To design the software's user interface and graphics."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"d) To accelerate the overall software development process."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"e) To facilitate easier collaboration among developers."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"answers:"}]},{"type":"text","value":"\n1.1 c)\n1.2 The most obvious answer is b), but in fact all answers except c) are correct\n"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:testing:exercise1.md","_source":"local_fs","_file":"modules/testing/exercise1.md","_extension":"md"},{"_path":"/modules/testing/exercise2","_dir":"testing","_draft":false,"_partial":false,"_locale":"","title":"Exercise 2","description":"","type":"exercise","order":3,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-2"},"children":[{"type":"text","value":"Exercise 2"}]},{"type":"element","tag":"h2","props":{"id":"instructions"},"children":[{"type":"text","value":"Instructions"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Match the items in Column A with their corresponding items in Column B."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Write the letter of the correct match next to each item in Column A."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Have fun and learn!"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"column-a"},"children":[{"type":"text","value":"Column A"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Smoke Test"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Unit Test"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Integration Test"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"System Test"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Regression Test"}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h3","props":{"id":"column-b"},"children":[{"type":"text","value":"Column B"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A. Style of testing that focuses on retesting after changes are made. The results of tests after the changes are compared to the results before, and errors are raised if these are different. The purpose of this test is to ensure that changes (enhancements or defect fixes) to the software have not adversely affected it."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"B. A level of the software testing process where the complete, integrated system is tested. The purpose of this test is to evaluate whether the system as a whole gives the correct outputs for given inputs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"C. Very brief initial checks that ensure the basic units required to run the software can be initialized. If these fail there is no point proceeding to additional levels of testing until they are fixed."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"D. A level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"E. A level of the software testing process where individual units of a software are tested. The purpose is to ensure that each unit of the software works as expected."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"answers"},"children":[{"type":"text","value":"Answers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"(Leave this blank for now, you can fill in the answers after completing the activity)"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[]},{"type":"element","tag":"li","props":{},"children":[]},{"type":"element","tag":"li","props":{},"children":[]},{"type":"element","tag":"li","props":{},"children":[]},{"type":"element","tag":"li","props":{},"children":[]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"hint"},"children":[{"type":"text","value":"Hint"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here’s an analogy: during the process of manufacturing a ballpoint pen, the cap, the body, the tail, the ink cartridge and the ballpoint are produced separately and unit tested separately. When two or more units are ready, they are assembled and integration testing is performed, for example a test to check the cap fits on the body. When the complete pen is integrated, system testing is performed to check it can be used to write like any pen should."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" correct answers: 1.C., 2.E., 3.D., 4.B., and 5.A "}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"instructions","depth":2,"text":"Instructions","children":[{"id":"column-a","depth":3,"text":"Column A"},{"id":"column-b","depth":3,"text":"Column B"}]},{"id":"answers","depth":2,"text":"Answers"},{"id":"hint","depth":2,"text":"Hint"}]}},"_type":"markdown","_id":"local_fs:modules:testing:exercise2.md","_source":"local_fs","_file":"modules/testing/exercise2.md","_extension":"md"},{"_path":"/modules/testing/exercise3","_dir":"testing","_draft":false,"_partial":false,"_locale":"","title":"Exercise 3","description":"","type":"exercise","order":4,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"exercise-3"},"children":[{"type":"text","value":"Exercise 3"}]},{"type":"element","tag":"h2","props":{"id":"scenario"},"children":[{"type":"text","value":"Scenario"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You are part of a research team working on a complex simulation software that models climate change. The software is developed collaboratively by a diverse group of scientists, each contributing to different modules (e.g., ocean temperature modeling, atmospheric chemistry, etc.). The team has faced issues with code integration, where new contributions occasionally break existing functionalities or cause unexpected results, leading to delays in their research. You are considering the adoption of "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Continuous Integration"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"question"},"children":[{"type":"text","value":"Question"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Which of the following best describes Continuous Integration and its benefits for this project?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"a) Continuous Integration is a practice where team members work in isolation to ensure their code is perfect before integrating it once at the end of the project, helping to avoid conflicts and errors."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"b) Continuous Integration involves the use of specialized software to automatically translate code into multiple programming languages, making it more versatile and reducing workload."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"c) Continuous Integration is a development practice where team members frequently integrate their work, often several times a day, to detect and fix integration issues early, thereby improving collaboration and code quality."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"d) Continuous Integration is a method where team members manually review each other's code at the end of each day, ensuring that the code meets quality standards and is ready for client presentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"e) Continuous Integration refers to the continuous updating of software to incorporate user feedback and new features, ensuring the software evolves to meet user needs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" correct answer: c) "}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"scenario","depth":2,"text":"Scenario"},{"id":"question","depth":2,"text":"Question"}]}},"_type":"markdown","_id":"local_fs:modules:testing:exercise3.md","_source":"local_fs","_file":"modules/testing/exercise3.md","_extension":"md"},{"_path":"/modules/testing","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software testing","description":"thumbnail-testing\nPhoto by Christina @ wocintechchat.com on Unsplash","id":9,"trl":"medium","category":"Development","abstract":"Local testing of your software and using Continuous Integration and Continuous Deployment (CI/CD)","author":"eScience Center","thumbnail":"thumbnail-testing.jpg","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/macbook-pro-2JDDn7iSGH8?utm_content=creditShareLink&utm_medium=referral&utm_source=unsplash","rel":["nofollow"]},"children":[{"type":"text","value":"thumbnail-testing"}]},{"type":"text","value":"\nPhoto by "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/@wocintechchat?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Christina @ wocintechchat.com"}]},{"type":"text","value":" on "},{"type":"element","tag":"a","props":{"href":"https://unsplash.com/photos/macbook-pro-2JDDn7iSGH8?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash"},"children":[{"type":"text","value":"Unsplash"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:testing:index.md","_source":"local_fs","_file":"modules/testing/index.md","_extension":"md"},{"_path":"/modules/testing/info","_dir":"testing","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Appreciate the importance of testing software"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Understand the various benefits of testing"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Understand the types of tests and what info they convey"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Get familiar with the idea of continuous integration and its importance"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:testing:info.md","_source":"local_fs","_file":"modules/testing/info.md","_extension":"md"},{"_path":"/modules/testing/presentation","_dir":"testing","_draft":false,"_partial":false,"_locale":"","title":"Software Testing","description":"","type":"slides","order":1,"body":{"type":"root","children":[{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"software-testing"},"children":[{"type":"text","value":"Software Testing"}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"what-is-software-testing"},"children":[{"type":"text","value":"What is software testing?"}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"“Software testing is the process of evaluating and verifying that a software product or application does what it’s supposed to do. The benefits of good testing include preventing bugs and improving performance.”"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://www.ibm.com/topics/software-testing","rel":["nofollow"]},"children":[{"type":"text","value":"From IBM Featured Topics"}]},{"type":"text","value":" "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What is software testing?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software testing is the process of evaluating and verifying that a software and its components meet specified requirements and work as expected. Its primary purpose is to identify defects, errors, flaws, or bugs early in the development process."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Software testing can be done manually, where a human actively uses the software to observe for defects, or automatically, where test scripts or tools are used to execute tests."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Untested software can be compared to uncalibrated experimental devices."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"consequences-of-not-testing-your-research-software"},"children":[{"type":"text","value":"Consequences of not testing your (research) software"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/testing-motivation1.png","width":"30%"},"children":[]},{"type":"element","tag":"img","props":{"src":"media/testing-motivation2.png","width":"30%"},"children":[]},{"type":"element","tag":"img","props":{"src":"media/testing-motivation3.png","width":"30%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"small","props":{},"children":[{"type":"text","value":" Find the complete articles "},{"type":"element","tag":"a","props":{"href":"https://www.science.org/doi/full/10.1126/science.314.5807.1856","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":", "},{"type":"element","tag":"a","props":{"href":"https://arstechnica.com/information-technology/2019/10/chemists-discover-cross-platform-python-scripts-not-so-cross-platform/","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":", and "},{"type":"element","tag":"a","props":{"href":"https://www.wired.com/2010/11/1110mars-climate-observer-report/","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":" "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are several examples in which the lack of proper software testings resulted in serious consequences."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first article from 2006 reports about a software flaw (a plus sign in place of a minus sign) that lead to a retraction of 5 scientific articles."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the second from 2019, researchers found that a programming error in a set of Python scripts commonly used for computational analysis of chemistry data returned varying results based on which operating system they were run on—throwing doubt on the results of more than 150 published chemistry studies."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The loss of the Mars Climate Orbiter in 1999 is another prominent example of a catastrophe caused by a software error, specifically a unit conversion mistake."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There is also the case of the Ariane flight V88, an European Space Agency rocket which was destroyed just 40 seconds after its launch due to a software bug; see "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Ariane_flight_V88","rel":["nofollow"]},"children":[{"type":"text","value":"https://en.wikipedia.org/wiki/Ariane_flight_V88"}]},{"type":"text","value":"."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"why-testing-your-software"},"children":[{"type":"text","value":"Why testing your software ?"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Ensure software reliability, validity, and reproducibility."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Confirm correct installation and demonstrate use."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Boost developer confidence for contributions and modifications."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Maintain expected software functionality."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simplify and manage code complexity."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Why testing your software is so crucial?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Specifically for research software, tests are vital for ensuring the reliability, validity, and reproducibility of your scientific results."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"They help users by enabling them confirm that the software is installed correctly, providing usage examples."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tests also help other developers modify and contribute to your software. A good test suite gives collaborators confidence to make modifications without breaking existing functionalities.\nThey preserve the expected functionality of the software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Manage complexity: Code that is easy to test is often easier to understand and maintain."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"types-of-testing"},"children":[{"type":"text","value":"Types of testing"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Unit tests"}]},{"type":"text","value":": Assess individual components for correctness."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Integration tests"}]},{"type":"text","value":": Verify interactions between different parts of the software."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"System tests"}]},{"type":"text","value":": Evaluate the complete and integrated software system."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Regression tests"}]},{"type":"text","value":": Ensure new changes don’t disrupt existing functionality."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are several types of software testing, each of which with its own purpose."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In unit tests each individual unit of a software is tested separately. The purpose is to ensure that each component of the software works as expected."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Integration tests are a level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The complete, integrated system is checked via the so-called system tests. The purpose here is to evaluate whether the software as a whole gives the correct outputs for given inputs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Finally, regression tests check for unexpected side-effects in existing features after changes."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"continuous-integration-and-continuous-deployment-cicd"},"children":[{"type":"text","value":"Continuous Integration and Continuous Deployment (CI/CD)"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/cicd_scheme.png","width":"80%"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note:"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Continuous Integration (CI) is a practice in software development where team members regularly integrate their individual code changes, often several times a day, into a shared remote repository. After every integration, a working version of the project is build and the software's test suite is run automatically, making it possible to identify defects, errors, flaws, or bugs introduced by changes early in the development process. This helps keep the code up-to-date and reduces the chances of major issues when combining everyone's work."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Continuous deployment (CD) is the next step after CI in the CI/CD pipeline shown in the figure. CD is the practice of automatically deploying every working version of the project that passes the automated testing phase to its end-users."}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"benefits-of-continuous-integration"},"children":[{"type":"text","value":"Benefits of continuous integration"}]},{"type":"element","tag":"center","props":{},"children":[{"type":"element","tag":"img","props":{"src":"media/benefits_of_ci.png","width":"80%"},"children":[]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"h2","props":{"id":"take-home-messages"},"children":[{"type":"text","value":"Take home messages"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Software testing is key for quality, reliability, and reproducibility"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Unit tests verify individual components, integration tests check component interactions"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"CI/CD streamline development and enhance deployment efficiency."}]}]},{"type":"element","tag":"hr","props":{},"children":[]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"http://www.esciencecenter.nl","rel":["nofollow"]},"children":[{"type":"text","value":"www.esciencecenter.nl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"mailto:info@esciencecenter.nl"},"children":[{"type":"text","value":"info@esciencecenter.nl"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"software-testing","depth":2,"text":"Software Testing"},{"id":"what-is-software-testing","depth":2,"text":"What is software testing?"},{"id":"consequences-of-not-testing-your-research-software","depth":2,"text":"Consequences of not testing your (research) software"},{"id":"why-testing-your-software","depth":2,"text":"Why testing your software ?"},{"id":"types-of-testing","depth":2,"text":"Types of testing"},{"id":"continuous-integration-and-continuous-deployment-cicd","depth":2,"text":"Continuous Integration and Continuous Deployment (CI/CD)"},{"id":"benefits-of-continuous-integration","depth":2,"text":"Benefits of continuous integration"},{"id":"take-home-messages","depth":2,"text":"Take home messages"}]}},"_type":"markdown","_id":"local_fs:modules:testing:presentation.pmd","_source":"local_fs","_file":"modules/testing/presentation.pmd","_extension":"pmd"},{"_path":"/modules/testing/reading","_dir":"testing","_draft":false,"_partial":false,"_locale":"","title":"Reading material","description":"","type":"reading","order":5,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"reading-material"},"children":[{"type":"text","value":"Reading material"}]},{"type":"element","tag":"h2","props":{"id":"testing"},"children":[{"type":"text","value":"Testing"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Follow the links below to read more about software testing."}]},{"type":"element","tag":"h3","props":{"id":"the-turing-way"},"children":[{"type":"text","value":"The Turing Way"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in the Turing Way about "},{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/testing","rel":["nofollow"]},"children":[{"type":"text","value":"Code Testing"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"code-refinery"},"children":[{"type":"text","value":"Code Refinery"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in CodeRefinery about "},{"type":"element","tag":"a","props":{"href":"https://coderefinery.github.io/testing/motivation/","rel":["nofollow"]},"children":[{"type":"text","value":"Automated testing"}]}]},{"type":"element","tag":"h3","props":{"id":"ibm"},"children":[{"type":"text","value":"IBM"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Link to an "},{"type":"element","tag":"a","props":{"href":"https://www.ibm.com/topics/software-testing","rel":["nofollow"]},"children":[{"type":"text","value":"IBM article"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"arxiv"},"children":[{"type":"text","value":"arXiv"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read this interesting article about "},{"type":"element","tag":"a","props":{"href":"https://arxiv.org/abs/2205.15982","rel":["nofollow"]},"children":[{"type":"text","value":"Testing Research Software"}]}]},{"type":"element","tag":"h2","props":{"id":"cicd"},"children":[{"type":"text","value":"CI/CD"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Follow the links below to read more about CI/CD."}]},{"type":"element","tag":"h3","props":{"id":"the-turing-way-1"},"children":[{"type":"text","value":"The Turing Way"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in the Turing Way about "},{"type":"element","tag":"a","props":{"href":"https://the-turing-way.netlify.app/reproducible-research/ci","rel":["nofollow"]},"children":[{"type":"text","value":"Continuous Integration"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"code-refinery-1"},"children":[{"type":"text","value":"Code Refinery"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in CodeRefinery about "},{"type":"element","tag":"a","props":{"href":"https://coderefinery.github.io/testing/continuous-integration/","rel":["nofollow"]},"children":[{"type":"text","value":"Continuous integration"}]}]},{"type":"element","tag":"h3","props":{"id":"bytebytego-newsletter"},"children":[{"type":"text","value":"ByteByteGo Newsletter"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Read in ByteByteGo newsletter about "},{"type":"element","tag":"a","props":{"href":"https://blog.bytebytego.com/p/a-crash-course-in-cicd","rel":["nofollow"]},"children":[{"type":"text","value":"A Crash Course in CI/CD"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"testing","depth":2,"text":"Testing","children":[{"id":"the-turing-way","depth":3,"text":"The Turing Way"},{"id":"code-refinery","depth":3,"text":"Code Refinery"},{"id":"ibm","depth":3,"text":"IBM"},{"id":"arxiv","depth":3,"text":"arXiv"}]},{"id":"cicd","depth":2,"text":"CI/CD","children":[{"id":"the-turing-way-1","depth":3,"text":"The Turing Way"},{"id":"code-refinery-1","depth":3,"text":"Code Refinery"},{"id":"bytebytego-newsletter","depth":3,"text":"ByteByteGo Newsletter"}]}]}},"_type":"markdown","_id":"local_fs:modules:testing:reading.md","_source":"local_fs","_file":"modules/testing/reading.md","_extension":"md"},{"_path":"/modules/version-control","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Software version control","description":"","id":10,"trl":"high","category":"Upcoming (under construction)","abstract":"Local version control and collaborative code development, for example using Git and GitHub","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"local-version-control"},"children":[{"type":"text","value":"Local version control"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]},{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"remote-repositories"},"children":[{"type":"text","value":"Remote repositories"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"local-version-control","depth":2,"text":"Local version control"},{"id":"remote-repositories","depth":2,"text":"Remote repositories"}]}},"_type":"markdown","_id":"local_fs:modules:version-control:index.md","_source":"local_fs","_file":"modules/version-control/index.md","_extension":"md"},{"_path":"/modules/version-control/info","_dir":"version-control","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:version-control:info.md","_source":"local_fs","_file":"modules/version-control/info.md","_extension":"md"},{"_path":"/modules/versioning","_dir":"modules","_draft":false,"_partial":false,"_locale":"","title":"Versioning & Changelog","description":"","id":3,"trl":"medium","category":"Upcoming (under construction)","author":"eScience Center","thumbnail":"nlesc-dummy.png","visibility":"visible","body":{"type":"root","children":[{"type":"element","tag":"div","props":{},"children":[{"type":"element","tag":"h2","props":{"id":"versioning"},"children":[{"type":"text","value":"Versioning"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This module is still under development"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"versioning","depth":2,"text":"Versioning"}]}},"_type":"markdown","_id":"local_fs:modules:versioning:index.md","_source":"local_fs","_file":"modules/versioning/index.md","_extension":"md"},{"_path":"/modules/versioning/info","_dir":"versioning","_draft":false,"_partial":false,"_locale":"","title":"Learning objectives","description":"Learning objectives for the FAIR software module","type":"info","order":0,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Learning objectives for the FAIR software module"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:modules:versioning:info.md","_source":"local_fs","_file":"modules/versioning/info.md","_extension":"md"},{"_path":"/readme","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Research Software Support","description":"This repository contains the contents for the Research Software Support platform.","body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"research-software-support"},"children":[{"type":"text","value":"Research Software Support"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This repository contains the contents for the Research Software Support platform."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This platform uses the "},{"type":"element","tag":"a","props":{"href":"https://github.com/esciencecenter-digital-skills/NEBULA","rel":["nofollow"]},"children":[{"type":"text","value":"NEBULA framework"}]},{"type":"text","value":"."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"local_fs:README.md","_source":"local_fs","_file":"README.md","_extension":"md"}],"navigation":[{"title":"Config","_path":"/config"},{"title":"Hello world","_path":"/"},{"title":"LICENSE","_path":"/license"},{"title":"Main","_path":"/main","children":[{"title":"About","_path":"/main/about"},{"title":"Contribute","_path":"/main/contribute"}]},{"title":"Modules","_path":"/modules","children":[{"title":"Software citation","_path":"/modules/citation","children":[{"title":"The `CITATION.cff` file","_path":"/modules/citation/citationcff"},{"title":"Using cffinit to create `CITATION.cff`","_path":"/modules/citation/create_citation_file"},{"title":"Which software should I cite?","_path":"/modules/citation/ex_when_to_cite"},{"title":"Reading material","_path":"/modules/citation/further_reading"},{"title":"Software citation","_path":"/modules/citation"},{"title":"Learning objectives","_path":"/modules/citation/info"},{"title":"Citing software","_path":"/modules/citation/introduction"},{"title":"The principles","_path":"/modules/citation/principles"},{"title":"Software Citation","_path":"/modules/citation/slides-citation"}]},{"title":"Software documentation","_path":"/modules/documentation","children":[{"title":"Software documentation","_path":"/modules/documentation"},{"title":"Learning objectives","_path":"/modules/documentation/info"}]},{"title":"Environments & Containers","_path":"/modules/environments","children":[{"title":"Environments & Containers","_path":"/modules/environments"},{"title":"Learning objectives","_path":"/modules/environments/info"}]},{"title":"FAIR software","_path":"/modules/fairsoftware","children":[{"title":"What is FAIR?","_path":"/modules/fairsoftware/exercise1"},{"title":"Mapping the principles","_path":"/modules/fairsoftware/exercise2"},{"title":"FAIR in practice","_path":"/modules/fairsoftware/exercise3"},{"title":"FAIR software","_path":"/modules/fairsoftware"},{"title":"Learning objectives","_path":"/modules/fairsoftware/info"},{"title":"Reading material","_path":"/modules/fairsoftware/reading"},{"title":"FAIR software","_path":"/modules/fairsoftware/slides-fairsoftware"}]},{"title":"High Performance Computing (HPC)","_path":"/modules/hpc","children":[{"title":"High Performance Computing (HPC)","_path":"/modules/hpc"},{"title":"Learning objectives","_path":"/modules/hpc/info"}]},{"title":"Software licenses","_path":"/modules/licenses","children":[{"title":"Copyright and software","_path":"/modules/licenses/copyright"},{"title":"Choose a license for or using your policy","_path":"/modules/licenses/ex_choose_a_license"},{"title":"Does your university have a software licensing policy?","_path":"/modules/licenses/ex_have_licensing_policy"},{"title":"What licenses do researchers at your university use?","_path":"/modules/licenses/ex_licenses_in_use"},{"title":"Software licenses","_path":"/modules/licenses"},{"title":"Learning objectives","_path":"/modules/licenses/info"},{"title":"Software licenses","_path":"/modules/licenses/licenses"},{"title":"Software Licensing","_path":"/modules/licenses/slides"},{"title":"University software policies","_path":"/modules/licenses/university_policy"}]},{"title":"Multimedia","_path":"/modules/multimedia","children":[{"title":"Multimedia","_path":"/modules/multimedia"},{"title":"Learning objectives","_path":"/modules/multimedia/info"},{"title":"Media","_path":"/modules/multimedia/media","children":[{"title":"First presentation, markdown demo","_path":"/modules/multimedia/media/presentation"}]}]},{"title":"Notebooks","_path":"/modules/notebooks","children":[{"title":"Notebooks","_path":"/modules/notebooks"},{"title":"Learning objectives","_path":"/modules/notebooks/info"}]},{"title":"Software project organization","_path":"/modules/organization","children":[{"title":"Software project organization","_path":"/modules/organization"},{"title":"Learning objectives","_path":"/modules/organization/info"}]},{"title":"Software publication","_path":"/modules/publication","children":[{"title":"Automating software publication","_path":"/modules/publication/automating_software_publication"},{"title":"Discussion","_path":"/modules/publication/discussion"},{"title":"Find your registry","_path":"/modules/publication/ex_registries"},{"title":"Software publication","_path":"/modules/publication"},{"title":"Learning objectives","_path":"/modules/publication/info"},{"title":"Reading material","_path":"/modules/publication/reading"},{"title":"Publishing Software","_path":"/modules/publication/slides-publication"},{"title":"Software publication pipeline","_path":"/modules/publication/software_publication_pipeline"}]},{"title":"Research software","_path":"/modules/researchsoftware","children":[{"title":"Is it research software?","_path":"/modules/researchsoftware/exercise-is-it-research-software"},{"title":"Where does software fit in the research life cycle?","_path":"/modules/researchsoftware/exercise-research-life-cycle"},{"title":"Research software","_path":"/modules/researchsoftware"},{"title":"Learning objectives","_path":"/modules/researchsoftware/info"},{"title":"The role of research software","_path":"/modules/researchsoftware/research-software"},{"title":"Research Software","_path":"/modules/researchsoftware/slides-researchsoftware"},{"title":"What is software?","_path":"/modules/researchsoftware/slides-software"},{"title":"Software is data","_path":"/modules/researchsoftware/software-and-data"}]},{"title":"Software Management Plans","_path":"/modules/smp","children":[{"title":"Exercise 1","_path":"/modules/smp/exercise1"},{"title":"Exercise 2","_path":"/modules/smp/exercise2"},{"title":"Exercise 3","_path":"/modules/smp/exercise3"},{"title":"Software Management Plans","_path":"/modules/smp"},{"title":"Learning objectives","_path":"/modules/smp/info"},{"title":"Reading material","_path":"/modules/smp/reading"},{"title":"Software Management Plans","_path":"/modules/smp/slides-smp"}]},{"title":"Software testing","_path":"/modules/testing","children":[{"title":"Exercise 1","_path":"/modules/testing/exercise1"},{"title":"Exercise 2","_path":"/modules/testing/exercise2"},{"title":"Exercise 3","_path":"/modules/testing/exercise3"},{"title":"Software testing","_path":"/modules/testing"},{"title":"Learning objectives","_path":"/modules/testing/info"},{"title":"Software Testing","_path":"/modules/testing/presentation"},{"title":"Reading material","_path":"/modules/testing/reading"}]},{"title":"Software version control","_path":"/modules/version-control","children":[{"title":"Software version control","_path":"/modules/version-control"},{"title":"Learning objectives","_path":"/modules/version-control/info"}]},{"title":"Versioning & Changelog","_path":"/modules/versioning","children":[{"title":"Versioning & Changelog","_path":"/modules/versioning"},{"title":"Learning objectives","_path":"/modules/versioning/info"}]}]},{"title":"Research Software Support","_path":"/readme"}]} \ No newline at end of file diff --git a/api/_content/navigation/u7BbTyuhiE.1715800925905.json b/api/_content/navigation/u7BbTyuhiE.1715801002288.json similarity index 100% rename from api/_content/navigation/u7BbTyuhiE.1715800925905.json rename to api/_content/navigation/u7BbTyuhiE.1715801002288.json diff --git a/api/_content/query/0BUs26NgAF.1715800925905.json b/api/_content/query/0BUs26NgAF.1715801002288.json similarity index 100% rename from api/_content/query/0BUs26NgAF.1715800925905.json rename to api/_content/query/0BUs26NgAF.1715801002288.json diff --git a/api/_content/query/0EWycIlxWh.1715800925905.json b/api/_content/query/0EWycIlxWh.1715801002288.json similarity index 100% rename from api/_content/query/0EWycIlxWh.1715800925905.json rename to api/_content/query/0EWycIlxWh.1715801002288.json diff --git a/api/_content/query/0HjwMJW4d0.1715800925905.json b/api/_content/query/0HjwMJW4d0.1715801002288.json similarity index 100% rename from api/_content/query/0HjwMJW4d0.1715800925905.json rename to api/_content/query/0HjwMJW4d0.1715801002288.json diff --git a/api/_content/query/0hrrEzlcDw.1715800925905.json b/api/_content/query/0hrrEzlcDw.1715801002288.json similarity index 100% rename from api/_content/query/0hrrEzlcDw.1715800925905.json rename to api/_content/query/0hrrEzlcDw.1715801002288.json diff --git a/api/_content/query/0qP0ch8uAr.1715800925905.json b/api/_content/query/0qP0ch8uAr.1715801002288.json similarity index 100% rename from api/_content/query/0qP0ch8uAr.1715800925905.json rename to api/_content/query/0qP0ch8uAr.1715801002288.json diff --git a/api/_content/query/1GL40JwfyF.1715800925905.json b/api/_content/query/1GL40JwfyF.1715801002288.json similarity index 100% rename from api/_content/query/1GL40JwfyF.1715800925905.json rename to api/_content/query/1GL40JwfyF.1715801002288.json diff --git a/api/_content/query/1m7OXQNmoY.1715800925905.json b/api/_content/query/1m7OXQNmoY.1715801002288.json similarity index 100% rename from api/_content/query/1m7OXQNmoY.1715800925905.json rename to api/_content/query/1m7OXQNmoY.1715801002288.json diff --git a/api/_content/query/24YjrsHa9t.1715800925905.json b/api/_content/query/24YjrsHa9t.1715801002288.json similarity index 100% rename from api/_content/query/24YjrsHa9t.1715800925905.json rename to api/_content/query/24YjrsHa9t.1715801002288.json diff --git a/api/_content/query/2KkSYQsxf6.1715800925905.json b/api/_content/query/2KkSYQsxf6.1715801002288.json similarity index 100% rename from api/_content/query/2KkSYQsxf6.1715800925905.json rename to api/_content/query/2KkSYQsxf6.1715801002288.json diff --git a/api/_content/query/2SCFXVO8j9.1715800925905.json b/api/_content/query/2SCFXVO8j9.1715801002288.json similarity index 100% rename from api/_content/query/2SCFXVO8j9.1715800925905.json rename to api/_content/query/2SCFXVO8j9.1715801002288.json diff --git a/api/_content/query/2izXrORLng.1715800925905.json b/api/_content/query/2izXrORLng.1715801002288.json similarity index 100% rename from api/_content/query/2izXrORLng.1715800925905.json rename to api/_content/query/2izXrORLng.1715801002288.json diff --git a/api/_content/query/2xGYH9Ov2R.1715800925905.json b/api/_content/query/2xGYH9Ov2R.1715801002288.json similarity index 100% rename from api/_content/query/2xGYH9Ov2R.1715800925905.json rename to api/_content/query/2xGYH9Ov2R.1715801002288.json diff --git a/api/_content/query/49pSceIuNo.1715800925905.json b/api/_content/query/49pSceIuNo.1715801002288.json similarity index 100% rename from api/_content/query/49pSceIuNo.1715800925905.json rename to api/_content/query/49pSceIuNo.1715801002288.json diff --git a/api/_content/query/4NsbWc7jdZ.1715800925905.json b/api/_content/query/4NsbWc7jdZ.1715801002288.json similarity index 100% rename from api/_content/query/4NsbWc7jdZ.1715800925905.json rename to api/_content/query/4NsbWc7jdZ.1715801002288.json diff --git a/api/_content/query/59HfAgOJPa.1715800925905.json b/api/_content/query/59HfAgOJPa.1715801002288.json similarity index 100% rename from api/_content/query/59HfAgOJPa.1715800925905.json rename to api/_content/query/59HfAgOJPa.1715801002288.json diff --git a/api/_content/query/5l1mFbcAm2.1715800925905.json b/api/_content/query/5l1mFbcAm2.1715801002288.json similarity index 100% rename from api/_content/query/5l1mFbcAm2.1715800925905.json rename to api/_content/query/5l1mFbcAm2.1715801002288.json diff --git a/api/_content/query/5sgJlxeHNJ.1715800925905.json b/api/_content/query/5sgJlxeHNJ.1715801002288.json similarity index 100% rename from api/_content/query/5sgJlxeHNJ.1715800925905.json rename to api/_content/query/5sgJlxeHNJ.1715801002288.json diff --git a/api/_content/query/5sqyO9GZ6Y.1715800925905.json b/api/_content/query/5sqyO9GZ6Y.1715801002288.json similarity index 100% rename from api/_content/query/5sqyO9GZ6Y.1715800925905.json rename to api/_content/query/5sqyO9GZ6Y.1715801002288.json diff --git a/api/_content/query/65UrFntLdy.1715800925905.json b/api/_content/query/65UrFntLdy.1715801002288.json similarity index 100% rename from api/_content/query/65UrFntLdy.1715800925905.json rename to api/_content/query/65UrFntLdy.1715801002288.json diff --git a/api/_content/query/67N470kG0L.1715800925905.json b/api/_content/query/67N470kG0L.1715801002288.json similarity index 100% rename from api/_content/query/67N470kG0L.1715800925905.json rename to api/_content/query/67N470kG0L.1715801002288.json diff --git a/api/_content/query/7UlQ1CXBrJ.1715800925905.json b/api/_content/query/7UlQ1CXBrJ.1715801002288.json similarity index 100% rename from api/_content/query/7UlQ1CXBrJ.1715800925905.json rename to api/_content/query/7UlQ1CXBrJ.1715801002288.json diff --git a/api/_content/query/7uTuzpgK7V.1715800925905.json b/api/_content/query/7uTuzpgK7V.1715801002288.json similarity index 100% rename from api/_content/query/7uTuzpgK7V.1715800925905.json rename to api/_content/query/7uTuzpgK7V.1715801002288.json diff --git a/api/_content/query/9EVWtFnUz6.1715800925905.json b/api/_content/query/9EVWtFnUz6.1715801002288.json similarity index 100% rename from api/_content/query/9EVWtFnUz6.1715800925905.json rename to api/_content/query/9EVWtFnUz6.1715801002288.json diff --git a/api/_content/query/9IlxAIw8oG.1715800925905.json b/api/_content/query/9IlxAIw8oG.1715801002288.json similarity index 100% rename from api/_content/query/9IlxAIw8oG.1715800925905.json rename to api/_content/query/9IlxAIw8oG.1715801002288.json diff --git a/api/_content/query/9UtYvdJ64s.1715800925905.json b/api/_content/query/9UtYvdJ64s.1715801002288.json similarity index 100% rename from api/_content/query/9UtYvdJ64s.1715800925905.json rename to api/_content/query/9UtYvdJ64s.1715801002288.json diff --git a/api/_content/query/A7ztcVpSq5.1715800925905.json b/api/_content/query/A7ztcVpSq5.1715801002288.json similarity index 100% rename from api/_content/query/A7ztcVpSq5.1715800925905.json rename to api/_content/query/A7ztcVpSq5.1715801002288.json diff --git a/api/_content/query/Ags4YjslXg.1715800925905.json b/api/_content/query/Ags4YjslXg.1715801002288.json similarity index 100% rename from api/_content/query/Ags4YjslXg.1715800925905.json rename to api/_content/query/Ags4YjslXg.1715801002288.json diff --git a/api/_content/query/CMdf9djKvQ.1715800925905.json b/api/_content/query/CMdf9djKvQ.1715801002288.json similarity index 100% rename from api/_content/query/CMdf9djKvQ.1715800925905.json rename to api/_content/query/CMdf9djKvQ.1715801002288.json diff --git a/api/_content/query/CdmTtfG7fv.1715800925905.json b/api/_content/query/CdmTtfG7fv.1715801002288.json similarity index 100% rename from api/_content/query/CdmTtfG7fv.1715800925905.json rename to api/_content/query/CdmTtfG7fv.1715801002288.json diff --git a/api/_content/query/D3pY15PNJT.1715800925905.json b/api/_content/query/D3pY15PNJT.1715801002288.json similarity index 100% rename from api/_content/query/D3pY15PNJT.1715800925905.json rename to api/_content/query/D3pY15PNJT.1715801002288.json diff --git a/api/_content/query/DUTZn4Lu0w.1715800925905.json b/api/_content/query/DUTZn4Lu0w.1715801002288.json similarity index 100% rename from api/_content/query/DUTZn4Lu0w.1715800925905.json rename to api/_content/query/DUTZn4Lu0w.1715801002288.json diff --git a/api/_content/query/Dx00z2t7m3.1715800925905.json b/api/_content/query/Dx00z2t7m3.1715801002288.json similarity index 100% rename from api/_content/query/Dx00z2t7m3.1715800925905.json rename to api/_content/query/Dx00z2t7m3.1715801002288.json diff --git a/api/_content/query/E475u0XARB.1715800925905.json b/api/_content/query/E475u0XARB.1715801002288.json similarity index 100% rename from api/_content/query/E475u0XARB.1715800925905.json rename to api/_content/query/E475u0XARB.1715801002288.json diff --git a/api/_content/query/ENQMv1AtpN.1715800925905.json b/api/_content/query/ENQMv1AtpN.1715801002288.json similarity index 100% rename from api/_content/query/ENQMv1AtpN.1715800925905.json rename to api/_content/query/ENQMv1AtpN.1715801002288.json diff --git a/api/_content/query/EPBoqyYT59.1715800925905.json b/api/_content/query/EPBoqyYT59.1715801002288.json similarity index 100% rename from api/_content/query/EPBoqyYT59.1715800925905.json rename to api/_content/query/EPBoqyYT59.1715801002288.json diff --git a/api/_content/query/F5Jr78dYky.1715800925905.json b/api/_content/query/F5Jr78dYky.1715801002288.json similarity index 100% rename from api/_content/query/F5Jr78dYky.1715800925905.json rename to api/_content/query/F5Jr78dYky.1715801002288.json diff --git a/api/_content/query/FCCgrKJYNZ.1715800925905.json b/api/_content/query/FCCgrKJYNZ.1715801002288.json similarity index 100% rename from api/_content/query/FCCgrKJYNZ.1715800925905.json rename to api/_content/query/FCCgrKJYNZ.1715801002288.json diff --git a/api/_content/query/FVemk5YJyi.1715800925905.json b/api/_content/query/FVemk5YJyi.1715801002288.json similarity index 100% rename from api/_content/query/FVemk5YJyi.1715800925905.json rename to api/_content/query/FVemk5YJyi.1715801002288.json diff --git a/api/_content/query/FneQurrqNP.1715800925905.json b/api/_content/query/FneQurrqNP.1715801002288.json similarity index 100% rename from api/_content/query/FneQurrqNP.1715800925905.json rename to api/_content/query/FneQurrqNP.1715801002288.json diff --git a/api/_content/query/FpigJXMUm6.1715800925905.json b/api/_content/query/FpigJXMUm6.1715801002288.json similarity index 100% rename from api/_content/query/FpigJXMUm6.1715800925905.json rename to api/_content/query/FpigJXMUm6.1715801002288.json diff --git a/api/_content/query/FtHxedN6fM.1715800925905.json b/api/_content/query/FtHxedN6fM.1715801002288.json similarity index 100% rename from api/_content/query/FtHxedN6fM.1715800925905.json rename to api/_content/query/FtHxedN6fM.1715801002288.json diff --git a/api/_content/query/G6vSZLhiIH.1715800925905.json b/api/_content/query/G6vSZLhiIH.1715801002288.json similarity index 100% rename from api/_content/query/G6vSZLhiIH.1715800925905.json rename to api/_content/query/G6vSZLhiIH.1715801002288.json diff --git a/api/_content/query/GBMesh9JKZ.1715800925905.json b/api/_content/query/GBMesh9JKZ.1715801002288.json similarity index 100% rename from api/_content/query/GBMesh9JKZ.1715800925905.json rename to api/_content/query/GBMesh9JKZ.1715801002288.json diff --git a/api/_content/query/HFU2W93p1s.1715800925905.json b/api/_content/query/HFU2W93p1s.1715801002288.json similarity index 100% rename from api/_content/query/HFU2W93p1s.1715800925905.json rename to api/_content/query/HFU2W93p1s.1715801002288.json diff --git a/api/_content/query/HzjQH0WzCN.1715800925905.json b/api/_content/query/HzjQH0WzCN.1715801002288.json similarity index 100% rename from api/_content/query/HzjQH0WzCN.1715800925905.json rename to api/_content/query/HzjQH0WzCN.1715801002288.json diff --git a/api/_content/query/IUHgNRlvgf.1715800925905.json b/api/_content/query/IUHgNRlvgf.1715801002288.json similarity index 100% rename from api/_content/query/IUHgNRlvgf.1715800925905.json rename to api/_content/query/IUHgNRlvgf.1715801002288.json diff --git a/api/_content/query/IiW7gk9AZd.1715800925905.json b/api/_content/query/IiW7gk9AZd.1715801002288.json similarity index 100% rename from api/_content/query/IiW7gk9AZd.1715800925905.json rename to api/_content/query/IiW7gk9AZd.1715801002288.json diff --git a/api/_content/query/KF8kzfX4bu.1715800925905.json b/api/_content/query/KF8kzfX4bu.1715801002288.json similarity index 100% rename from api/_content/query/KF8kzfX4bu.1715800925905.json rename to api/_content/query/KF8kzfX4bu.1715801002288.json diff --git a/api/_content/query/LDYr3kuasw.1715800925905.json b/api/_content/query/LDYr3kuasw.1715801002288.json similarity index 100% rename from api/_content/query/LDYr3kuasw.1715800925905.json rename to api/_content/query/LDYr3kuasw.1715801002288.json diff --git a/api/_content/query/LHUxiTAii6.1715800925905.json b/api/_content/query/LHUxiTAii6.1715801002288.json similarity index 100% rename from api/_content/query/LHUxiTAii6.1715800925905.json rename to api/_content/query/LHUxiTAii6.1715801002288.json diff --git a/api/_content/query/M1Le2iZMfG.1715800925905.json b/api/_content/query/M1Le2iZMfG.1715801002288.json similarity index 100% rename from api/_content/query/M1Le2iZMfG.1715800925905.json rename to api/_content/query/M1Le2iZMfG.1715801002288.json diff --git a/api/_content/query/MCvIlt2YdF.1715800925905.json b/api/_content/query/MCvIlt2YdF.1715801002288.json similarity index 100% rename from api/_content/query/MCvIlt2YdF.1715800925905.json rename to api/_content/query/MCvIlt2YdF.1715801002288.json diff --git a/api/_content/query/Ma5VnsuJgZ.1715800925905.json b/api/_content/query/Ma5VnsuJgZ.1715801002288.json similarity index 100% rename from api/_content/query/Ma5VnsuJgZ.1715800925905.json rename to api/_content/query/Ma5VnsuJgZ.1715801002288.json diff --git a/api/_content/query/Mb5sOxRWrz.1715800925905.json b/api/_content/query/Mb5sOxRWrz.1715801002288.json similarity index 100% rename from api/_content/query/Mb5sOxRWrz.1715800925905.json rename to api/_content/query/Mb5sOxRWrz.1715801002288.json diff --git a/api/_content/query/McSykdbpwc.1715800925905.json b/api/_content/query/McSykdbpwc.1715801002288.json similarity index 100% rename from api/_content/query/McSykdbpwc.1715800925905.json rename to api/_content/query/McSykdbpwc.1715801002288.json diff --git a/api/_content/query/N425GieETY.1715800925905.json b/api/_content/query/N425GieETY.1715801002288.json similarity index 100% rename from api/_content/query/N425GieETY.1715800925905.json rename to api/_content/query/N425GieETY.1715801002288.json diff --git a/api/_content/query/NidugB8bSI.1715800925905.json b/api/_content/query/NidugB8bSI.1715801002288.json similarity index 100% rename from api/_content/query/NidugB8bSI.1715800925905.json rename to api/_content/query/NidugB8bSI.1715801002288.json diff --git a/api/_content/query/Og8NbszSqn.1715800925905.json b/api/_content/query/Og8NbszSqn.1715801002288.json similarity index 100% rename from api/_content/query/Og8NbszSqn.1715800925905.json rename to api/_content/query/Og8NbszSqn.1715801002288.json diff --git a/api/_content/query/OgMZU4xAlM.1715800925905.json b/api/_content/query/OgMZU4xAlM.1715801002288.json similarity index 100% rename from api/_content/query/OgMZU4xAlM.1715800925905.json rename to api/_content/query/OgMZU4xAlM.1715801002288.json diff --git a/api/_content/query/PSkZ2l8iqS.1715800925905.json b/api/_content/query/PSkZ2l8iqS.1715801002288.json similarity index 100% rename from api/_content/query/PSkZ2l8iqS.1715800925905.json rename to api/_content/query/PSkZ2l8iqS.1715801002288.json diff --git a/api/_content/query/PaOBQkDcRe.1715800925905.json b/api/_content/query/PaOBQkDcRe.1715801002288.json similarity index 100% rename from api/_content/query/PaOBQkDcRe.1715800925905.json rename to api/_content/query/PaOBQkDcRe.1715801002288.json diff --git a/api/_content/query/PoLF9Aalo1.1715800925905.json b/api/_content/query/PoLF9Aalo1.1715801002288.json similarity index 100% rename from api/_content/query/PoLF9Aalo1.1715800925905.json rename to api/_content/query/PoLF9Aalo1.1715801002288.json diff --git a/api/_content/query/R84Zrakmrz.1715800925905.json b/api/_content/query/R84Zrakmrz.1715801002288.json similarity index 100% rename from api/_content/query/R84Zrakmrz.1715800925905.json rename to api/_content/query/R84Zrakmrz.1715801002288.json diff --git a/api/_content/query/RXhtJ3cRNd.1715800925905.json b/api/_content/query/RXhtJ3cRNd.1715801002288.json similarity index 100% rename from api/_content/query/RXhtJ3cRNd.1715800925905.json rename to api/_content/query/RXhtJ3cRNd.1715801002288.json diff --git a/api/_content/query/SJDrp5o86f.1715800925905.json b/api/_content/query/SJDrp5o86f.1715801002288.json similarity index 100% rename from api/_content/query/SJDrp5o86f.1715800925905.json rename to api/_content/query/SJDrp5o86f.1715801002288.json diff --git a/api/_content/query/TI4osxj03B.1715800925905.json b/api/_content/query/TI4osxj03B.1715801002288.json similarity index 100% rename from api/_content/query/TI4osxj03B.1715800925905.json rename to api/_content/query/TI4osxj03B.1715801002288.json diff --git a/api/_content/query/U2eYpA2w9A.1715800925905.json b/api/_content/query/U2eYpA2w9A.1715801002288.json similarity index 100% rename from api/_content/query/U2eYpA2w9A.1715800925905.json rename to api/_content/query/U2eYpA2w9A.1715801002288.json diff --git a/api/_content/query/U44Ttfox3e.1715800925905.json b/api/_content/query/U44Ttfox3e.1715801002288.json similarity index 100% rename from api/_content/query/U44Ttfox3e.1715800925905.json rename to api/_content/query/U44Ttfox3e.1715801002288.json diff --git a/api/_content/query/UUNoYOcbBe.1715800925905.json b/api/_content/query/UUNoYOcbBe.1715801002288.json similarity index 100% rename from api/_content/query/UUNoYOcbBe.1715800925905.json rename to api/_content/query/UUNoYOcbBe.1715801002288.json diff --git a/api/_content/query/Uy2R5IVGAr.1715800925905.json b/api/_content/query/Uy2R5IVGAr.1715801002288.json similarity index 100% rename from api/_content/query/Uy2R5IVGAr.1715800925905.json rename to api/_content/query/Uy2R5IVGAr.1715801002288.json diff --git a/api/_content/query/VhN2eS4iKS.1715800925905.json b/api/_content/query/VhN2eS4iKS.1715801002288.json similarity index 100% rename from api/_content/query/VhN2eS4iKS.1715800925905.json rename to api/_content/query/VhN2eS4iKS.1715801002288.json diff --git a/api/_content/query/WfoxB1qTtF.1715800925905.json b/api/_content/query/WfoxB1qTtF.1715801002288.json similarity index 100% rename from api/_content/query/WfoxB1qTtF.1715800925905.json rename to api/_content/query/WfoxB1qTtF.1715801002288.json diff --git a/api/_content/query/X6a0RYQ3Pr.1715800925905.json b/api/_content/query/X6a0RYQ3Pr.1715801002288.json similarity index 100% rename from api/_content/query/X6a0RYQ3Pr.1715800925905.json rename to api/_content/query/X6a0RYQ3Pr.1715801002288.json diff --git a/api/_content/query/XFRDaP0L6y.1715800925905.json b/api/_content/query/XFRDaP0L6y.1715801002288.json similarity index 100% rename from api/_content/query/XFRDaP0L6y.1715800925905.json rename to api/_content/query/XFRDaP0L6y.1715801002288.json diff --git a/api/_content/query/Xn1R94sufb.1715800925905.json b/api/_content/query/Xn1R94sufb.1715801002288.json similarity index 100% rename from api/_content/query/Xn1R94sufb.1715800925905.json rename to api/_content/query/Xn1R94sufb.1715801002288.json diff --git a/api/_content/query/YAhmZBIrMQ.1715800925905.json b/api/_content/query/YAhmZBIrMQ.1715801002288.json similarity index 100% rename from api/_content/query/YAhmZBIrMQ.1715800925905.json rename to api/_content/query/YAhmZBIrMQ.1715801002288.json diff --git a/api/_content/query/Z0FNrS0wCa.1715800925905.json b/api/_content/query/Z0FNrS0wCa.1715801002288.json similarity index 100% rename from api/_content/query/Z0FNrS0wCa.1715800925905.json rename to api/_content/query/Z0FNrS0wCa.1715801002288.json diff --git a/api/_content/query/ZyEAe4DPtd.1715800925905.json b/api/_content/query/ZyEAe4DPtd.1715801002288.json similarity index 100% rename from api/_content/query/ZyEAe4DPtd.1715800925905.json rename to api/_content/query/ZyEAe4DPtd.1715801002288.json diff --git a/api/_content/query/aWJWLXKrlK.1715800925905.json b/api/_content/query/aWJWLXKrlK.1715801002288.json similarity index 100% rename from api/_content/query/aWJWLXKrlK.1715800925905.json rename to api/_content/query/aWJWLXKrlK.1715801002288.json diff --git a/api/_content/query/b16b10SmIt.1715800925905.json b/api/_content/query/b16b10SmIt.1715801002288.json similarity index 100% rename from api/_content/query/b16b10SmIt.1715800925905.json rename to api/_content/query/b16b10SmIt.1715801002288.json diff --git a/api/_content/query/bPGhJYqxZg.1715800925905.json b/api/_content/query/bPGhJYqxZg.1715801002288.json similarity index 100% rename from api/_content/query/bPGhJYqxZg.1715800925905.json rename to api/_content/query/bPGhJYqxZg.1715801002288.json diff --git a/api/_content/query/brX4CwCJoQ.1715800925905.json b/api/_content/query/brX4CwCJoQ.1715801002288.json similarity index 100% rename from api/_content/query/brX4CwCJoQ.1715800925905.json rename to api/_content/query/brX4CwCJoQ.1715801002288.json diff --git a/api/_content/query/cbnAI1fLBf.1715800925905.json b/api/_content/query/cbnAI1fLBf.1715801002288.json similarity index 100% rename from api/_content/query/cbnAI1fLBf.1715800925905.json rename to api/_content/query/cbnAI1fLBf.1715801002288.json diff --git a/api/_content/query/cdxMJwM8KG.1715800925905.json b/api/_content/query/cdxMJwM8KG.1715801002288.json similarity index 100% rename from api/_content/query/cdxMJwM8KG.1715800925905.json rename to api/_content/query/cdxMJwM8KG.1715801002288.json diff --git a/api/_content/query/d7WPVDbI2M.1715800925905.json b/api/_content/query/d7WPVDbI2M.1715801002288.json similarity index 100% rename from api/_content/query/d7WPVDbI2M.1715800925905.json rename to api/_content/query/d7WPVDbI2M.1715801002288.json diff --git a/api/_content/query/deVQS4P680.1715800925905.json b/api/_content/query/deVQS4P680.1715801002288.json similarity index 100% rename from api/_content/query/deVQS4P680.1715800925905.json rename to api/_content/query/deVQS4P680.1715801002288.json diff --git a/api/_content/query/doFkMKriS5.1715800925905.json b/api/_content/query/doFkMKriS5.1715801002288.json similarity index 100% rename from api/_content/query/doFkMKriS5.1715800925905.json rename to api/_content/query/doFkMKriS5.1715801002288.json diff --git a/api/_content/query/emgPpI0Hod.1715800925905.json b/api/_content/query/emgPpI0Hod.1715801002288.json similarity index 100% rename from api/_content/query/emgPpI0Hod.1715800925905.json rename to api/_content/query/emgPpI0Hod.1715801002288.json diff --git a/api/_content/query/fCVgf7Kjmi.1715800925905.json b/api/_content/query/fCVgf7Kjmi.1715801002288.json similarity index 100% rename from api/_content/query/fCVgf7Kjmi.1715800925905.json rename to api/_content/query/fCVgf7Kjmi.1715801002288.json diff --git a/api/_content/query/fyx3KkwfxR.1715800925905.json b/api/_content/query/fyx3KkwfxR.1715801002288.json similarity index 100% rename from api/_content/query/fyx3KkwfxR.1715800925905.json rename to api/_content/query/fyx3KkwfxR.1715801002288.json diff --git a/api/_content/query/gOEFEBVe0C.1715800925905.json b/api/_content/query/gOEFEBVe0C.1715801002288.json similarity index 100% rename from api/_content/query/gOEFEBVe0C.1715800925905.json rename to api/_content/query/gOEFEBVe0C.1715801002288.json diff --git a/api/_content/query/gmMX06reNF.1715800925905.json b/api/_content/query/gmMX06reNF.1715801002288.json similarity index 100% rename from api/_content/query/gmMX06reNF.1715800925905.json rename to api/_content/query/gmMX06reNF.1715801002288.json diff --git a/api/_content/query/gvdRb9LEla.1715800925905.json b/api/_content/query/gvdRb9LEla.1715801002288.json similarity index 100% rename from api/_content/query/gvdRb9LEla.1715800925905.json rename to api/_content/query/gvdRb9LEla.1715801002288.json diff --git a/api/_content/query/hbZsrtycd2.1715800925905.json b/api/_content/query/hbZsrtycd2.1715801002288.json similarity index 100% rename from api/_content/query/hbZsrtycd2.1715800925905.json rename to api/_content/query/hbZsrtycd2.1715801002288.json diff --git a/api/_content/query/i8XJ4MRrmZ.1715800925905.json b/api/_content/query/i8XJ4MRrmZ.1715801002288.json similarity index 100% rename from api/_content/query/i8XJ4MRrmZ.1715800925905.json rename to api/_content/query/i8XJ4MRrmZ.1715801002288.json diff --git a/api/_content/query/ibDkr3kri6.1715800925905.json b/api/_content/query/ibDkr3kri6.1715801002288.json similarity index 100% rename from api/_content/query/ibDkr3kri6.1715800925905.json rename to api/_content/query/ibDkr3kri6.1715801002288.json diff --git a/api/_content/query/kCPlE6zFQh.1715800925905.json b/api/_content/query/kCPlE6zFQh.1715801002288.json similarity index 100% rename from api/_content/query/kCPlE6zFQh.1715800925905.json rename to api/_content/query/kCPlE6zFQh.1715801002288.json diff --git a/api/_content/query/lDVWwmzgdU.1715800925905.json b/api/_content/query/lDVWwmzgdU.1715801002288.json similarity index 100% rename from api/_content/query/lDVWwmzgdU.1715800925905.json rename to api/_content/query/lDVWwmzgdU.1715801002288.json diff --git a/api/_content/query/lDxLEmznlP.1715800925905.json b/api/_content/query/lDxLEmznlP.1715801002288.json similarity index 100% rename from api/_content/query/lDxLEmznlP.1715800925905.json rename to api/_content/query/lDxLEmznlP.1715801002288.json diff --git a/api/_content/query/ljXJZ7tNCA.1715800925905.json b/api/_content/query/ljXJZ7tNCA.1715801002288.json similarity index 100% rename from api/_content/query/ljXJZ7tNCA.1715800925905.json rename to api/_content/query/ljXJZ7tNCA.1715801002288.json diff --git a/api/_content/query/nv6RBXUftH.1715800925905.json b/api/_content/query/nv6RBXUftH.1715801002288.json similarity index 100% rename from api/_content/query/nv6RBXUftH.1715800925905.json rename to api/_content/query/nv6RBXUftH.1715801002288.json diff --git a/api/_content/query/nxYZJnqPwN.1715800925905.json b/api/_content/query/nxYZJnqPwN.1715801002288.json similarity index 100% rename from api/_content/query/nxYZJnqPwN.1715800925905.json rename to api/_content/query/nxYZJnqPwN.1715801002288.json diff --git a/api/_content/query/oYNFwAjVOb.1715800925905.json b/api/_content/query/oYNFwAjVOb.1715801002288.json similarity index 100% rename from api/_content/query/oYNFwAjVOb.1715800925905.json rename to api/_content/query/oYNFwAjVOb.1715801002288.json diff --git a/api/_content/query/pA5pAi187u.1715800925905.json b/api/_content/query/pA5pAi187u.1715801002288.json similarity index 100% rename from api/_content/query/pA5pAi187u.1715800925905.json rename to api/_content/query/pA5pAi187u.1715801002288.json diff --git a/api/_content/query/qCQgoVZiW7.1715800925905.json b/api/_content/query/qCQgoVZiW7.1715801002288.json similarity index 100% rename from api/_content/query/qCQgoVZiW7.1715800925905.json rename to api/_content/query/qCQgoVZiW7.1715801002288.json diff --git a/api/_content/query/qJzgWOnC1j.1715800925905.json b/api/_content/query/qJzgWOnC1j.1715801002288.json similarity index 100% rename from api/_content/query/qJzgWOnC1j.1715800925905.json rename to api/_content/query/qJzgWOnC1j.1715801002288.json diff --git a/api/_content/query/qKmjYMbYak.1715800925905.json b/api/_content/query/qKmjYMbYak.1715801002288.json similarity index 100% rename from api/_content/query/qKmjYMbYak.1715800925905.json rename to api/_content/query/qKmjYMbYak.1715801002288.json diff --git a/api/_content/query/qKtw80NFzN.1715800925905.json b/api/_content/query/qKtw80NFzN.1715801002288.json similarity index 100% rename from api/_content/query/qKtw80NFzN.1715800925905.json rename to api/_content/query/qKtw80NFzN.1715801002288.json diff --git a/api/_content/query/qyHzosBoWd.1715800925905.json b/api/_content/query/qyHzosBoWd.1715801002288.json similarity index 100% rename from api/_content/query/qyHzosBoWd.1715800925905.json rename to api/_content/query/qyHzosBoWd.1715801002288.json diff --git a/api/_content/query/rPsXY2r9F9.1715800925905.json b/api/_content/query/rPsXY2r9F9.1715801002288.json similarity index 100% rename from api/_content/query/rPsXY2r9F9.1715800925905.json rename to api/_content/query/rPsXY2r9F9.1715801002288.json diff --git a/api/_content/query/rR52nozbDq.1715800925905.json b/api/_content/query/rR52nozbDq.1715801002288.json similarity index 100% rename from api/_content/query/rR52nozbDq.1715800925905.json rename to api/_content/query/rR52nozbDq.1715801002288.json diff --git a/api/_content/query/rcWUO3hgUq.1715800925905.json b/api/_content/query/rcWUO3hgUq.1715801002288.json similarity index 100% rename from api/_content/query/rcWUO3hgUq.1715800925905.json rename to api/_content/query/rcWUO3hgUq.1715801002288.json diff --git a/api/_content/query/s8VoyPcTUb.1715800925905.json b/api/_content/query/s8VoyPcTUb.1715801002288.json similarity index 100% rename from api/_content/query/s8VoyPcTUb.1715800925905.json rename to api/_content/query/s8VoyPcTUb.1715801002288.json diff --git a/api/_content/query/sdvvJBXWBG.1715800925905.json b/api/_content/query/sdvvJBXWBG.1715801002288.json similarity index 100% rename from api/_content/query/sdvvJBXWBG.1715800925905.json rename to api/_content/query/sdvvJBXWBG.1715801002288.json diff --git a/api/_content/query/tsceojtjUs.1715800925905.json b/api/_content/query/tsceojtjUs.1715801002288.json similarity index 100% rename from api/_content/query/tsceojtjUs.1715800925905.json rename to api/_content/query/tsceojtjUs.1715801002288.json diff --git a/api/_content/query/utSWd7dCL2.1715800925905.json b/api/_content/query/utSWd7dCL2.1715801002288.json similarity index 100% rename from api/_content/query/utSWd7dCL2.1715800925905.json rename to api/_content/query/utSWd7dCL2.1715801002288.json diff --git a/api/_content/query/v5xav7xymj.1715800925905.json b/api/_content/query/v5xav7xymj.1715801002288.json similarity index 100% rename from api/_content/query/v5xav7xymj.1715800925905.json rename to api/_content/query/v5xav7xymj.1715801002288.json diff --git a/api/_content/query/vAD5yqg8A7.1715800925905.json b/api/_content/query/vAD5yqg8A7.1715801002288.json similarity index 100% rename from api/_content/query/vAD5yqg8A7.1715800925905.json rename to api/_content/query/vAD5yqg8A7.1715801002288.json diff --git a/api/_content/query/vXApYrcGEp.1715800925905.json b/api/_content/query/vXApYrcGEp.1715801002288.json similarity index 100% rename from api/_content/query/vXApYrcGEp.1715800925905.json rename to api/_content/query/vXApYrcGEp.1715801002288.json diff --git a/api/_content/query/vhqc3o32P5.1715800925905.json b/api/_content/query/vhqc3o32P5.1715801002288.json similarity index 100% rename from api/_content/query/vhqc3o32P5.1715800925905.json rename to api/_content/query/vhqc3o32P5.1715801002288.json diff --git a/api/_content/query/wPXo312anU.1715800925905.json b/api/_content/query/wPXo312anU.1715801002288.json similarity index 100% rename from api/_content/query/wPXo312anU.1715800925905.json rename to api/_content/query/wPXo312anU.1715801002288.json diff --git a/api/_content/query/wxl7SjJ4uS.1715800925905.json b/api/_content/query/wxl7SjJ4uS.1715801002288.json similarity index 100% rename from api/_content/query/wxl7SjJ4uS.1715800925905.json rename to api/_content/query/wxl7SjJ4uS.1715801002288.json diff --git a/api/_content/query/x1NDmVc5JS.1715800925905.json b/api/_content/query/x1NDmVc5JS.1715801002288.json similarity index 100% rename from api/_content/query/x1NDmVc5JS.1715800925905.json rename to api/_content/query/x1NDmVc5JS.1715801002288.json diff --git a/api/_content/query/xAArusXuu5.1715800925905.json b/api/_content/query/xAArusXuu5.1715801002288.json similarity index 100% rename from api/_content/query/xAArusXuu5.1715800925905.json rename to api/_content/query/xAArusXuu5.1715801002288.json diff --git a/api/_content/query/xPHC5jOOgx.1715800925905.json b/api/_content/query/xPHC5jOOgx.1715801002288.json similarity index 100% rename from api/_content/query/xPHC5jOOgx.1715800925905.json rename to api/_content/query/xPHC5jOOgx.1715801002288.json diff --git a/api/_content/query/xWeY3NfYtX.1715800925905.json b/api/_content/query/xWeY3NfYtX.1715801002288.json similarity index 100% rename from api/_content/query/xWeY3NfYtX.1715800925905.json rename to api/_content/query/xWeY3NfYtX.1715801002288.json diff --git a/api/_content/query/ydpTIUwgZp.1715800925905.json b/api/_content/query/ydpTIUwgZp.1715801002288.json similarity index 100% rename from api/_content/query/ydpTIUwgZp.1715800925905.json rename to api/_content/query/ydpTIUwgZp.1715801002288.json diff --git a/api/_content/query/yhZa85ujf9.1715800925905.json b/api/_content/query/yhZa85ujf9.1715801002288.json similarity index 100% rename from api/_content/query/yhZa85ujf9.1715800925905.json rename to api/_content/query/yhZa85ujf9.1715801002288.json diff --git a/api/_content/query/z9PV9HqQnU.1715800925905.json b/api/_content/query/z9PV9HqQnU.1715801002288.json similarity index 100% rename from api/_content/query/z9PV9HqQnU.1715800925905.json rename to api/_content/query/z9PV9HqQnU.1715801002288.json diff --git a/api/_content/query/zUVXv8s9Q5.1715800925905.json b/api/_content/query/zUVXv8s9Q5.1715801002288.json similarity index 100% rename from api/_content/query/zUVXv8s9Q5.1715800925905.json rename to api/_content/query/zUVXv8s9Q5.1715801002288.json diff --git a/api/_content/query/zVeBUmcXMw.1715800925905.json b/api/_content/query/zVeBUmcXMw.1715801002288.json similarity index 100% rename from api/_content/query/zVeBUmcXMw.1715800925905.json rename to api/_content/query/zVeBUmcXMw.1715801002288.json diff --git a/api/_content/query/zk07xqSmvX.1715800925905.json b/api/_content/query/zk07xqSmvX.1715801002288.json similarity index 100% rename from api/_content/query/zk07xqSmvX.1715800925905.json rename to api/_content/query/zk07xqSmvX.1715801002288.json diff --git a/index.html b/index.html index 2b5e6543..75070ba8 100644 --- a/index.html +++ b/index.html @@ -1,6 +1,6 @@ - + - - + + - + - - - -
- \ No newline at end of file + + + +
+ \ No newline at end of file diff --git a/main/about/_payload.json b/main/about/_payload.json index 6e31b7ec..b1e90c5c 100644 --- a/main/about/_payload.json +++ b/main/about/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":205},["Reactive",2],{"content-query-NpiMYinmHl":3,"content-query-AT44bg6JPw":48},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"body":9,"_type":43,"_id":44,"_source":45,"_file":46,"_extension":47},"/main/about","main",false,"","About",{"type":10,"children":11,"toc":38},"root",[12,21,27,33],{"type":13,"tag":14,"props":15,"children":17},"element","h2",{"id":16},"about-the-research-software-support",[18],{"type":19,"value":20},"text","About the Research Software Support",{"type":13,"tag":22,"props":23,"children":24},"p",{},[25],{"type":19,"value":26},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":13,"tag":14,"props":28,"children":30},{"id":29},"target-audience",[31],{"type":19,"value":32},"Target audience",{"type":13,"tag":22,"props":34,"children":35},{},[36],{"type":19,"value":37},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":39,"depth":39,"links":40},2,[41,42],{"id":16,"depth":39,"text":20},{"id":29,"depth":39,"text":32},"markdown","local_fs:main:about.md","local_fs","main/about.md","md",[49,72],{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"body":50,"_type":43,"_id":44,"_source":45,"_file":46,"_extension":47},{"type":10,"children":51,"toc":68},[52,56,60,64],{"type":13,"tag":14,"props":53,"children":54},{"id":16},[55],{"type":19,"value":20},{"type":13,"tag":22,"props":57,"children":58},{},[59],{"type":19,"value":26},{"type":13,"tag":14,"props":61,"children":62},{"id":29},[63],{"type":19,"value":32},{"type":13,"tag":22,"props":65,"children":66},{},[67],{"type":19,"value":37},{"title":7,"searchDepth":39,"depth":39,"links":69},[70,71],{"id":16,"depth":39,"text":20},{"id":29,"depth":39,"text":32},{"_path":73,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":74,"description":7,"body":75,"_type":43,"_id":203,"_source":45,"_file":204,"_extension":47},"/main/contribute","Contribute",{"type":10,"children":76,"toc":197},[77,83,88,95,100],{"type":13,"tag":14,"props":78,"children":80},{"id":79},"contributing-to-the-research-software-support",[81],{"type":19,"value":82},"Contributing to the Research Software Support",{"type":13,"tag":22,"props":84,"children":85},{},[86],{"type":19,"value":87},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":13,"tag":89,"props":90,"children":92},"h3",{"id":91},"what-can-i-do",[93],{"type":19,"value":94},"What can I do?",{"type":13,"tag":22,"props":96,"children":97},{},[98],{"type":19,"value":99},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":13,"tag":101,"props":102,"children":103},"ul",{},[104,121,162,185],{"type":13,"tag":105,"props":106,"children":107},"li",{},[108,110,119],{"type":19,"value":109},"Contribute to the content discussion in the ",{"type":13,"tag":111,"props":112,"children":116},"a",{"href":113,"rel":114},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[115],"nofollow",[117],{"type":19,"value":118},"chapter issues",{"type":19,"value":120},", e.g. by listing good resources for information.",{"type":13,"tag":105,"props":122,"children":123},{},[124,130,132],{"type":13,"tag":111,"props":125,"children":127},{"href":126},"#elements-of-a-module",[128],{"type":19,"value":129},"Author a lesson",{"type":19,"value":131},", e.g. by:\n",{"type":13,"tag":101,"props":133,"children":134},{},[135,144,153],{"type":13,"tag":105,"props":136,"children":137},{},[138],{"type":13,"tag":111,"props":139,"children":141},{"href":140},"#slides",[142],{"type":19,"value":143},"Creating slides",{"type":13,"tag":105,"props":145,"children":146},{},[147],{"type":13,"tag":111,"props":148,"children":150},{"href":149},"#exercises",[151],{"type":19,"value":152},"Designing an exercise",{"type":13,"tag":105,"props":154,"children":155},{},[156],{"type":13,"tag":111,"props":157,"children":159},{"href":158},"#online-resources",[160],{"type":19,"value":161},"Curating online resources",{"type":13,"tag":105,"props":163,"children":164},{},[165,167,174,176,183],{"type":19,"value":166},"Review a lesson module; both by looking at ",{"type":13,"tag":111,"props":168,"children":171},{"href":169,"rel":170},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[115],[172],{"type":19,"value":173},"open PRs",{"type":19,"value":175},", as well as flagging issues for improvement in the ",{"type":13,"tag":111,"props":177,"children":180},{"href":178,"rel":179},"https://esciencecenter-digital-skills.github.io/research-software-support/",[115],[181],{"type":19,"value":182},"existing content",{"type":19,"value":184},".",{"type":13,"tag":105,"props":186,"children":187},{},[188,195],{"type":13,"tag":111,"props":189,"children":192},{"href":190,"rel":191},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[115],[193],{"type":19,"value":194},"Provide feedback",{"type":19,"value":196}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":39,"depth":39,"links":198},[199],{"id":79,"depth":39,"text":82,"children":200},[201],{"id":91,"depth":202,"text":94},3,"local_fs:main:contribute.md","main/contribute.md",1715800937068] \ No newline at end of file +[{"data":1,"prerenderedAt":205},["Reactive",2],{"content-query-NpiMYinmHl":3,"content-query-AT44bg6JPw":48},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"body":9,"_type":43,"_id":44,"_source":45,"_file":46,"_extension":47},"/main/about","main",false,"","About",{"type":10,"children":11,"toc":38},"root",[12,21,27,33],{"type":13,"tag":14,"props":15,"children":17},"element","h2",{"id":16},"about-the-research-software-support",[18],{"type":19,"value":20},"text","About the Research Software Support",{"type":13,"tag":22,"props":23,"children":24},"p",{},[25],{"type":19,"value":26},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":13,"tag":14,"props":28,"children":30},{"id":29},"target-audience",[31],{"type":19,"value":32},"Target audience",{"type":13,"tag":22,"props":34,"children":35},{},[36],{"type":19,"value":37},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":39,"depth":39,"links":40},2,[41,42],{"id":16,"depth":39,"text":20},{"id":29,"depth":39,"text":32},"markdown","local_fs:main:about.md","local_fs","main/about.md","md",[49,72],{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"body":50,"_type":43,"_id":44,"_source":45,"_file":46,"_extension":47},{"type":10,"children":51,"toc":68},[52,56,60,64],{"type":13,"tag":14,"props":53,"children":54},{"id":16},[55],{"type":19,"value":20},{"type":13,"tag":22,"props":57,"children":58},{},[59],{"type":19,"value":26},{"type":13,"tag":14,"props":61,"children":62},{"id":29},[63],{"type":19,"value":32},{"type":13,"tag":22,"props":65,"children":66},{},[67],{"type":19,"value":37},{"title":7,"searchDepth":39,"depth":39,"links":69},[70,71],{"id":16,"depth":39,"text":20},{"id":29,"depth":39,"text":32},{"_path":73,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":74,"description":7,"body":75,"_type":43,"_id":203,"_source":45,"_file":204,"_extension":47},"/main/contribute","Contribute",{"type":10,"children":76,"toc":197},[77,83,88,95,100],{"type":13,"tag":14,"props":78,"children":80},{"id":79},"contributing-to-the-research-software-support",[81],{"type":19,"value":82},"Contributing to the Research Software Support",{"type":13,"tag":22,"props":84,"children":85},{},[86],{"type":19,"value":87},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":13,"tag":89,"props":90,"children":92},"h3",{"id":91},"what-can-i-do",[93],{"type":19,"value":94},"What can I do?",{"type":13,"tag":22,"props":96,"children":97},{},[98],{"type":19,"value":99},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":13,"tag":101,"props":102,"children":103},"ul",{},[104,121,162,185],{"type":13,"tag":105,"props":106,"children":107},"li",{},[108,110,119],{"type":19,"value":109},"Contribute to the content discussion in the ",{"type":13,"tag":111,"props":112,"children":116},"a",{"href":113,"rel":114},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[115],"nofollow",[117],{"type":19,"value":118},"chapter issues",{"type":19,"value":120},", e.g. by listing good resources for information.",{"type":13,"tag":105,"props":122,"children":123},{},[124,130,132],{"type":13,"tag":111,"props":125,"children":127},{"href":126},"#elements-of-a-module",[128],{"type":19,"value":129},"Author a lesson",{"type":19,"value":131},", e.g. by:\n",{"type":13,"tag":101,"props":133,"children":134},{},[135,144,153],{"type":13,"tag":105,"props":136,"children":137},{},[138],{"type":13,"tag":111,"props":139,"children":141},{"href":140},"#slides",[142],{"type":19,"value":143},"Creating slides",{"type":13,"tag":105,"props":145,"children":146},{},[147],{"type":13,"tag":111,"props":148,"children":150},{"href":149},"#exercises",[151],{"type":19,"value":152},"Designing an exercise",{"type":13,"tag":105,"props":154,"children":155},{},[156],{"type":13,"tag":111,"props":157,"children":159},{"href":158},"#online-resources",[160],{"type":19,"value":161},"Curating online resources",{"type":13,"tag":105,"props":163,"children":164},{},[165,167,174,176,183],{"type":19,"value":166},"Review a lesson module; both by looking at ",{"type":13,"tag":111,"props":168,"children":171},{"href":169,"rel":170},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[115],[172],{"type":19,"value":173},"open PRs",{"type":19,"value":175},", as well as flagging issues for improvement in the ",{"type":13,"tag":111,"props":177,"children":180},{"href":178,"rel":179},"https://esciencecenter-digital-skills.github.io/research-software-support/",[115],[181],{"type":19,"value":182},"existing content",{"type":19,"value":184},".",{"type":13,"tag":105,"props":186,"children":187},{},[188,195],{"type":13,"tag":111,"props":189,"children":192},{"href":190,"rel":191},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[115],[193],{"type":19,"value":194},"Provide feedback",{"type":19,"value":196}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":39,"depth":39,"links":198},[199],{"id":79,"depth":39,"text":82,"children":200},[201],{"id":91,"depth":202,"text":94},3,"local_fs:main:contribute.md","main/contribute.md",1715801014235] \ No newline at end of file diff --git a/main/about/index.html b/main/about/index.html index 51f8da75..d7f916ae 100644 --- a/main/about/index.html +++ b/main/about/index.html @@ -2,7 +2,7 @@ About - + - - - - - - - - - - + + + + + + + + + + - + - - -

About the Research Software Support

In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.

Target audience

The target audience for this material is University management and support staff. + + +

About the Research Software Support

In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.

Target audience

The target audience for this material is University management and support staff. University management taking part in courses involving these modules may be involved in creating university policy around research software. -The University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.

- \ No newline at end of file +The University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.

+ \ No newline at end of file diff --git a/main/contribute/_payload.json b/main/contribute/_payload.json index c776a793..bf1cec64 100644 --- a/main/contribute/_payload.json +++ b/main/contribute/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":276},["Reactive",2],{"content-query-nwFcbnTOWy":3,"content-query-AT44bg6JPw":148},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"body":9,"_type":143,"_id":144,"_source":145,"_file":146,"_extension":147},"/main/contribute","main",false,"","Contribute",{"type":10,"children":11,"toc":136},"root",[12,21,27,34,39],{"type":13,"tag":14,"props":15,"children":17},"element","h2",{"id":16},"contributing-to-the-research-software-support",[18],{"type":19,"value":20},"text","Contributing to the Research Software Support",{"type":13,"tag":22,"props":23,"children":24},"p",{},[25],{"type":19,"value":26},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":13,"tag":28,"props":29,"children":31},"h3",{"id":30},"what-can-i-do",[32],{"type":19,"value":33},"What can I do?",{"type":13,"tag":22,"props":35,"children":36},{},[37],{"type":19,"value":38},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":13,"tag":40,"props":41,"children":42},"ul",{},[43,60,101,124],{"type":13,"tag":44,"props":45,"children":46},"li",{},[47,49,58],{"type":19,"value":48},"Contribute to the content discussion in the ",{"type":13,"tag":50,"props":51,"children":55},"a",{"href":52,"rel":53},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[54],"nofollow",[56],{"type":19,"value":57},"chapter issues",{"type":19,"value":59},", e.g. by listing good resources for information.",{"type":13,"tag":44,"props":61,"children":62},{},[63,69,71],{"type":13,"tag":50,"props":64,"children":66},{"href":65},"#elements-of-a-module",[67],{"type":19,"value":68},"Author a lesson",{"type":19,"value":70},", e.g. by:\n",{"type":13,"tag":40,"props":72,"children":73},{},[74,83,92],{"type":13,"tag":44,"props":75,"children":76},{},[77],{"type":13,"tag":50,"props":78,"children":80},{"href":79},"#slides",[81],{"type":19,"value":82},"Creating slides",{"type":13,"tag":44,"props":84,"children":85},{},[86],{"type":13,"tag":50,"props":87,"children":89},{"href":88},"#exercises",[90],{"type":19,"value":91},"Designing an exercise",{"type":13,"tag":44,"props":93,"children":94},{},[95],{"type":13,"tag":50,"props":96,"children":98},{"href":97},"#online-resources",[99],{"type":19,"value":100},"Curating online resources",{"type":13,"tag":44,"props":102,"children":103},{},[104,106,113,115,122],{"type":19,"value":105},"Review a lesson module; both by looking at ",{"type":13,"tag":50,"props":107,"children":110},{"href":108,"rel":109},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[54],[111],{"type":19,"value":112},"open PRs",{"type":19,"value":114},", as well as flagging issues for improvement in the ",{"type":13,"tag":50,"props":116,"children":119},{"href":117,"rel":118},"https://esciencecenter-digital-skills.github.io/research-software-support/",[54],[120],{"type":19,"value":121},"existing content",{"type":19,"value":123},".",{"type":13,"tag":44,"props":125,"children":126},{},[127,134],{"type":13,"tag":50,"props":128,"children":131},{"href":129,"rel":130},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[54],[132],{"type":19,"value":133},"Provide feedback",{"type":19,"value":135}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":137,"depth":137,"links":138},2,[139],{"id":16,"depth":137,"text":20,"children":140},[141],{"id":30,"depth":142,"text":33},3,"markdown","local_fs:main:contribute.md","local_fs","main/contribute.md","md",[149,182],{"_path":150,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":151,"description":7,"body":152,"_type":143,"_id":180,"_source":145,"_file":181,"_extension":147},"/main/about","About",{"type":10,"children":153,"toc":176},[154,160,165,171],{"type":13,"tag":14,"props":155,"children":157},{"id":156},"about-the-research-software-support",[158],{"type":19,"value":159},"About the Research Software Support",{"type":13,"tag":22,"props":161,"children":162},{},[163],{"type":19,"value":164},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":13,"tag":14,"props":166,"children":168},{"id":167},"target-audience",[169],{"type":19,"value":170},"Target audience",{"type":13,"tag":22,"props":172,"children":173},{},[174],{"type":19,"value":175},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":137,"depth":137,"links":177},[178,179],{"id":156,"depth":137,"text":159},{"id":167,"depth":137,"text":170},"local_fs:main:about.md","main/about.md",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"body":183,"_type":143,"_id":144,"_source":145,"_file":146,"_extension":147},{"type":10,"children":184,"toc":271},[185,189,193,197,201],{"type":13,"tag":14,"props":186,"children":187},{"id":16},[188],{"type":19,"value":20},{"type":13,"tag":22,"props":190,"children":191},{},[192],{"type":19,"value":26},{"type":13,"tag":28,"props":194,"children":195},{"id":30},[196],{"type":19,"value":33},{"type":13,"tag":22,"props":198,"children":199},{},[200],{"type":19,"value":38},{"type":13,"tag":40,"props":202,"children":203},{},[204,214,246,262],{"type":13,"tag":44,"props":205,"children":206},{},[207,208,213],{"type":19,"value":48},{"type":13,"tag":50,"props":209,"children":211},{"href":52,"rel":210},[54],[212],{"type":19,"value":57},{"type":19,"value":59},{"type":13,"tag":44,"props":215,"children":216},{},[217,221,222],{"type":13,"tag":50,"props":218,"children":219},{"href":65},[220],{"type":19,"value":68},{"type":19,"value":70},{"type":13,"tag":40,"props":223,"children":224},{},[225,232,239],{"type":13,"tag":44,"props":226,"children":227},{},[228],{"type":13,"tag":50,"props":229,"children":230},{"href":79},[231],{"type":19,"value":82},{"type":13,"tag":44,"props":233,"children":234},{},[235],{"type":13,"tag":50,"props":236,"children":237},{"href":88},[238],{"type":19,"value":91},{"type":13,"tag":44,"props":240,"children":241},{},[242],{"type":13,"tag":50,"props":243,"children":244},{"href":97},[245],{"type":19,"value":100},{"type":13,"tag":44,"props":247,"children":248},{},[249,250,255,256,261],{"type":19,"value":105},{"type":13,"tag":50,"props":251,"children":253},{"href":108,"rel":252},[54],[254],{"type":19,"value":112},{"type":19,"value":114},{"type":13,"tag":50,"props":257,"children":259},{"href":117,"rel":258},[54],[260],{"type":19,"value":121},{"type":19,"value":123},{"type":13,"tag":44,"props":263,"children":264},{},[265,270],{"type":13,"tag":50,"props":266,"children":268},{"href":129,"rel":267},[54],[269],{"type":19,"value":133},{"type":19,"value":135},{"title":7,"searchDepth":137,"depth":137,"links":272},[273],{"id":16,"depth":137,"text":20,"children":274},[275],{"id":30,"depth":142,"text":33},1715800937069] \ No newline at end of file +[{"data":1,"prerenderedAt":276},["Reactive",2],{"content-query-nwFcbnTOWy":3,"content-query-AT44bg6JPw":148},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"body":9,"_type":143,"_id":144,"_source":145,"_file":146,"_extension":147},"/main/contribute","main",false,"","Contribute",{"type":10,"children":11,"toc":136},"root",[12,21,27,34,39],{"type":13,"tag":14,"props":15,"children":17},"element","h2",{"id":16},"contributing-to-the-research-software-support",[18],{"type":19,"value":20},"text","Contributing to the Research Software Support",{"type":13,"tag":22,"props":23,"children":24},"p",{},[25],{"type":19,"value":26},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":13,"tag":28,"props":29,"children":31},"h3",{"id":30},"what-can-i-do",[32],{"type":19,"value":33},"What can I do?",{"type":13,"tag":22,"props":35,"children":36},{},[37],{"type":19,"value":38},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":13,"tag":40,"props":41,"children":42},"ul",{},[43,60,101,124],{"type":13,"tag":44,"props":45,"children":46},"li",{},[47,49,58],{"type":19,"value":48},"Contribute to the content discussion in the ",{"type":13,"tag":50,"props":51,"children":55},"a",{"href":52,"rel":53},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[54],"nofollow",[56],{"type":19,"value":57},"chapter issues",{"type":19,"value":59},", e.g. by listing good resources for information.",{"type":13,"tag":44,"props":61,"children":62},{},[63,69,71],{"type":13,"tag":50,"props":64,"children":66},{"href":65},"#elements-of-a-module",[67],{"type":19,"value":68},"Author a lesson",{"type":19,"value":70},", e.g. by:\n",{"type":13,"tag":40,"props":72,"children":73},{},[74,83,92],{"type":13,"tag":44,"props":75,"children":76},{},[77],{"type":13,"tag":50,"props":78,"children":80},{"href":79},"#slides",[81],{"type":19,"value":82},"Creating slides",{"type":13,"tag":44,"props":84,"children":85},{},[86],{"type":13,"tag":50,"props":87,"children":89},{"href":88},"#exercises",[90],{"type":19,"value":91},"Designing an exercise",{"type":13,"tag":44,"props":93,"children":94},{},[95],{"type":13,"tag":50,"props":96,"children":98},{"href":97},"#online-resources",[99],{"type":19,"value":100},"Curating online resources",{"type":13,"tag":44,"props":102,"children":103},{},[104,106,113,115,122],{"type":19,"value":105},"Review a lesson module; both by looking at ",{"type":13,"tag":50,"props":107,"children":110},{"href":108,"rel":109},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[54],[111],{"type":19,"value":112},"open PRs",{"type":19,"value":114},", as well as flagging issues for improvement in the ",{"type":13,"tag":50,"props":116,"children":119},{"href":117,"rel":118},"https://esciencecenter-digital-skills.github.io/research-software-support/",[54],[120],{"type":19,"value":121},"existing content",{"type":19,"value":123},".",{"type":13,"tag":44,"props":125,"children":126},{},[127,134],{"type":13,"tag":50,"props":128,"children":131},{"href":129,"rel":130},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[54],[132],{"type":19,"value":133},"Provide feedback",{"type":19,"value":135}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":137,"depth":137,"links":138},2,[139],{"id":16,"depth":137,"text":20,"children":140},[141],{"id":30,"depth":142,"text":33},3,"markdown","local_fs:main:contribute.md","local_fs","main/contribute.md","md",[149,182],{"_path":150,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":151,"description":7,"body":152,"_type":143,"_id":180,"_source":145,"_file":181,"_extension":147},"/main/about","About",{"type":10,"children":153,"toc":176},[154,160,165,171],{"type":13,"tag":14,"props":155,"children":157},{"id":156},"about-the-research-software-support",[158],{"type":19,"value":159},"About the Research Software Support",{"type":13,"tag":22,"props":161,"children":162},{},[163],{"type":19,"value":164},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":13,"tag":14,"props":166,"children":168},{"id":167},"target-audience",[169],{"type":19,"value":170},"Target audience",{"type":13,"tag":22,"props":172,"children":173},{},[174],{"type":19,"value":175},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":137,"depth":137,"links":177},[178,179],{"id":156,"depth":137,"text":159},{"id":167,"depth":137,"text":170},"local_fs:main:about.md","main/about.md",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"body":183,"_type":143,"_id":144,"_source":145,"_file":146,"_extension":147},{"type":10,"children":184,"toc":271},[185,189,193,197,201],{"type":13,"tag":14,"props":186,"children":187},{"id":16},[188],{"type":19,"value":20},{"type":13,"tag":22,"props":190,"children":191},{},[192],{"type":19,"value":26},{"type":13,"tag":28,"props":194,"children":195},{"id":30},[196],{"type":19,"value":33},{"type":13,"tag":22,"props":198,"children":199},{},[200],{"type":19,"value":38},{"type":13,"tag":40,"props":202,"children":203},{},[204,214,246,262],{"type":13,"tag":44,"props":205,"children":206},{},[207,208,213],{"type":19,"value":48},{"type":13,"tag":50,"props":209,"children":211},{"href":52,"rel":210},[54],[212],{"type":19,"value":57},{"type":19,"value":59},{"type":13,"tag":44,"props":215,"children":216},{},[217,221,222],{"type":13,"tag":50,"props":218,"children":219},{"href":65},[220],{"type":19,"value":68},{"type":19,"value":70},{"type":13,"tag":40,"props":223,"children":224},{},[225,232,239],{"type":13,"tag":44,"props":226,"children":227},{},[228],{"type":13,"tag":50,"props":229,"children":230},{"href":79},[231],{"type":19,"value":82},{"type":13,"tag":44,"props":233,"children":234},{},[235],{"type":13,"tag":50,"props":236,"children":237},{"href":88},[238],{"type":19,"value":91},{"type":13,"tag":44,"props":240,"children":241},{},[242],{"type":13,"tag":50,"props":243,"children":244},{"href":97},[245],{"type":19,"value":100},{"type":13,"tag":44,"props":247,"children":248},{},[249,250,255,256,261],{"type":19,"value":105},{"type":13,"tag":50,"props":251,"children":253},{"href":108,"rel":252},[54],[254],{"type":19,"value":112},{"type":19,"value":114},{"type":13,"tag":50,"props":257,"children":259},{"href":117,"rel":258},[54],[260],{"type":19,"value":121},{"type":19,"value":123},{"type":13,"tag":44,"props":263,"children":264},{},[265,270],{"type":13,"tag":50,"props":266,"children":268},{"href":129,"rel":267},[54],[269],{"type":19,"value":133},{"type":19,"value":135},{"title":7,"searchDepth":137,"depth":137,"links":272},[273],{"id":16,"depth":137,"text":20,"children":274},[275],{"id":30,"depth":142,"text":33},1715801014237] \ No newline at end of file diff --git a/main/contribute/index.html b/main/contribute/index.html index 0f52a8a8..0ad0bcf3 100644 --- a/main/contribute/index.html +++ b/main/contribute/index.html @@ -2,7 +2,7 @@ Contribute - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - -

Contributing to the Research Software Support

In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support. + + +

Contributing to the Research Software Support

In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support. This, as you can imagine, is no easy feat, and we need your help! So first of all, thank you very much for your interest in contributing to this project.

What can I do?

Go to our github repository by clicking on the GitHub logo in the top right of this website.

- \ No newline at end of file +
  • Review a lesson module; both by looking at open PRs, as well as flagging issues for improvement in the existing content.
  • Provide feedback on the different subjects covered: what did we miss? Should something be restructured?
  • + \ No newline at end of file diff --git a/modules/citation/citationcff/_payload.json b/modules/citation/citationcff/_payload.json index dd7693e5..24530e3e 100644 --- a/modules/citation/citationcff/_payload.json +++ b/modules/citation/citationcff/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":256},["Reactive",2],{"content-query-Hlje2hIEix":3,"content-query-AT44bg6JPw":88},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":83,"_id":84,"_source":85,"_file":86,"_extension":87},"/modules/citation/citationcff","citation",false,"","The `CITATION.cff` file","reading",4,{"type":12,"children":13,"toc":78},"root",[14,32,52,57,69],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"the-citationcff-file",[20,23,30],{"type":21,"value":22},"text","The ",{"type":15,"tag":24,"props":25,"children":27},"code",{"className":26},[],[28],{"type":21,"value":29},"CITATION.cff",{"type":21,"value":31}," file",{"type":15,"tag":33,"props":34,"children":35},"p",{},[36,38,43,45,50],{"type":21,"value":37},"To facilitate the citation of scientific software, a group of software developers, researchers, and publishers have come together to develop the ",{"type":15,"tag":24,"props":39,"children":41},{"className":40},[],[42],{"type":21,"value":29},{"type":21,"value":44}," format. A ",{"type":15,"tag":24,"props":46,"children":48},{"className":47},[],[49],{"type":21,"value":29},{"type":21,"value":51}," file is a lightweight, machine-readable file that provides information about the software, its creators, and how it should be cited. This file can be included in the software, and should be easy to find and access.",{"type":15,"tag":33,"props":53,"children":54},{},[55],{"type":21,"value":56},"There are even nice integrations with GitHub and Zenodo.",{"type":15,"tag":33,"props":58,"children":59},{},[60,62,67],{"type":21,"value":61},"Here is an example of a ",{"type":15,"tag":24,"props":63,"children":65},{"className":64},[],[66],{"type":21,"value":29},{"type":21,"value":68}," file:",{"type":15,"tag":70,"props":71,"children":73},"pre",{"code":72},"cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n - family-names: Druskat\n given-names: Stephan\n orcid: https://orcid.org/1234-5678-9101-1121\ntitle: \"My Research Software\"\nversion: 2.0.4\nidentifiers:\n - type: doi\n value: 10.5281/zenodo.1234\ndate-released: 2021-08-11\n",[74],{"type":15,"tag":24,"props":75,"children":76},{"__ignoreMap":7},[77],{"type":21,"value":72},{"title":7,"searchDepth":79,"depth":79,"links":80},2,[81],{"id":18,"depth":79,"text":82},"The CITATION.cff file","markdown","local_fs:modules:citation:citationcff.md","local_fs","modules/citation/citationcff.md","md",[89,123],{"_path":90,"_dir":91,"_draft":6,"_partial":6,"_locale":7,"title":92,"description":7,"body":93,"_type":83,"_id":121,"_source":85,"_file":122,"_extension":87},"/main/about","main","About",{"type":12,"children":94,"toc":117},[95,101,106,112],{"type":15,"tag":16,"props":96,"children":98},{"id":97},"about-the-research-software-support",[99],{"type":21,"value":100},"About the Research Software Support",{"type":15,"tag":33,"props":102,"children":103},{},[104],{"type":21,"value":105},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":107,"children":109},{"id":108},"target-audience",[110],{"type":21,"value":111},"Target audience",{"type":15,"tag":33,"props":113,"children":114},{},[115],{"type":21,"value":116},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":79,"depth":79,"links":118},[119,120],{"id":97,"depth":79,"text":100},{"id":108,"depth":79,"text":111},"local_fs:main:about.md","main/about.md",{"_path":124,"_dir":91,"_draft":6,"_partial":6,"_locale":7,"title":125,"description":7,"body":126,"_type":83,"_id":254,"_source":85,"_file":255,"_extension":87},"/main/contribute","Contribute",{"type":12,"children":127,"toc":248},[128,134,139,146,151],{"type":15,"tag":16,"props":129,"children":131},{"id":130},"contributing-to-the-research-software-support",[132],{"type":21,"value":133},"Contributing to the Research Software Support",{"type":15,"tag":33,"props":135,"children":136},{},[137],{"type":21,"value":138},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":140,"props":141,"children":143},"h3",{"id":142},"what-can-i-do",[144],{"type":21,"value":145},"What can I do?",{"type":15,"tag":33,"props":147,"children":148},{},[149],{"type":21,"value":150},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":152,"props":153,"children":154},"ul",{},[155,172,213,236],{"type":15,"tag":156,"props":157,"children":158},"li",{},[159,161,170],{"type":21,"value":160},"Contribute to the content discussion in the ",{"type":15,"tag":162,"props":163,"children":167},"a",{"href":164,"rel":165},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[166],"nofollow",[168],{"type":21,"value":169},"chapter issues",{"type":21,"value":171},", e.g. by listing good resources for information.",{"type":15,"tag":156,"props":173,"children":174},{},[175,181,183],{"type":15,"tag":162,"props":176,"children":178},{"href":177},"#elements-of-a-module",[179],{"type":21,"value":180},"Author a lesson",{"type":21,"value":182},", e.g. by:\n",{"type":15,"tag":152,"props":184,"children":185},{},[186,195,204],{"type":15,"tag":156,"props":187,"children":188},{},[189],{"type":15,"tag":162,"props":190,"children":192},{"href":191},"#slides",[193],{"type":21,"value":194},"Creating slides",{"type":15,"tag":156,"props":196,"children":197},{},[198],{"type":15,"tag":162,"props":199,"children":201},{"href":200},"#exercises",[202],{"type":21,"value":203},"Designing an exercise",{"type":15,"tag":156,"props":205,"children":206},{},[207],{"type":15,"tag":162,"props":208,"children":210},{"href":209},"#online-resources",[211],{"type":21,"value":212},"Curating online resources",{"type":15,"tag":156,"props":214,"children":215},{},[216,218,225,227,234],{"type":21,"value":217},"Review a lesson module; both by looking at ",{"type":15,"tag":162,"props":219,"children":222},{"href":220,"rel":221},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[166],[223],{"type":21,"value":224},"open PRs",{"type":21,"value":226},", as well as flagging issues for improvement in the ",{"type":15,"tag":162,"props":228,"children":231},{"href":229,"rel":230},"https://esciencecenter-digital-skills.github.io/research-software-support/",[166],[232],{"type":21,"value":233},"existing content",{"type":21,"value":235},".",{"type":15,"tag":156,"props":237,"children":238},{},[239,246],{"type":15,"tag":162,"props":240,"children":243},{"href":241,"rel":242},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[166],[244],{"type":21,"value":245},"Provide feedback",{"type":21,"value":247}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":79,"depth":79,"links":249},[250],{"id":130,"depth":79,"text":133,"children":251},[252],{"id":142,"depth":253,"text":145},3,"local_fs:main:contribute.md","main/contribute.md",1715800938008] \ No newline at end of file +[{"data":1,"prerenderedAt":256},["Reactive",2],{"content-query-Hlje2hIEix":3,"content-query-AT44bg6JPw":88},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":83,"_id":84,"_source":85,"_file":86,"_extension":87},"/modules/citation/citationcff","citation",false,"","The `CITATION.cff` file","reading",4,{"type":12,"children":13,"toc":78},"root",[14,32,52,57,69],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"the-citationcff-file",[20,23,30],{"type":21,"value":22},"text","The ",{"type":15,"tag":24,"props":25,"children":27},"code",{"className":26},[],[28],{"type":21,"value":29},"CITATION.cff",{"type":21,"value":31}," file",{"type":15,"tag":33,"props":34,"children":35},"p",{},[36,38,43,45,50],{"type":21,"value":37},"To facilitate the citation of scientific software, a group of software developers, researchers, and publishers have come together to develop the ",{"type":15,"tag":24,"props":39,"children":41},{"className":40},[],[42],{"type":21,"value":29},{"type":21,"value":44}," format. A ",{"type":15,"tag":24,"props":46,"children":48},{"className":47},[],[49],{"type":21,"value":29},{"type":21,"value":51}," file is a lightweight, machine-readable file that provides information about the software, its creators, and how it should be cited. This file can be included in the software, and should be easy to find and access.",{"type":15,"tag":33,"props":53,"children":54},{},[55],{"type":21,"value":56},"There are even nice integrations with GitHub and Zenodo.",{"type":15,"tag":33,"props":58,"children":59},{},[60,62,67],{"type":21,"value":61},"Here is an example of a ",{"type":15,"tag":24,"props":63,"children":65},{"className":64},[],[66],{"type":21,"value":29},{"type":21,"value":68}," file:",{"type":15,"tag":70,"props":71,"children":73},"pre",{"code":72},"cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n - family-names: Druskat\n given-names: Stephan\n orcid: https://orcid.org/1234-5678-9101-1121\ntitle: \"My Research Software\"\nversion: 2.0.4\nidentifiers:\n - type: doi\n value: 10.5281/zenodo.1234\ndate-released: 2021-08-11\n",[74],{"type":15,"tag":24,"props":75,"children":76},{"__ignoreMap":7},[77],{"type":21,"value":72},{"title":7,"searchDepth":79,"depth":79,"links":80},2,[81],{"id":18,"depth":79,"text":82},"The CITATION.cff file","markdown","local_fs:modules:citation:citationcff.md","local_fs","modules/citation/citationcff.md","md",[89,123],{"_path":90,"_dir":91,"_draft":6,"_partial":6,"_locale":7,"title":92,"description":7,"body":93,"_type":83,"_id":121,"_source":85,"_file":122,"_extension":87},"/main/about","main","About",{"type":12,"children":94,"toc":117},[95,101,106,112],{"type":15,"tag":16,"props":96,"children":98},{"id":97},"about-the-research-software-support",[99],{"type":21,"value":100},"About the Research Software Support",{"type":15,"tag":33,"props":102,"children":103},{},[104],{"type":21,"value":105},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":107,"children":109},{"id":108},"target-audience",[110],{"type":21,"value":111},"Target audience",{"type":15,"tag":33,"props":113,"children":114},{},[115],{"type":21,"value":116},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":79,"depth":79,"links":118},[119,120],{"id":97,"depth":79,"text":100},{"id":108,"depth":79,"text":111},"local_fs:main:about.md","main/about.md",{"_path":124,"_dir":91,"_draft":6,"_partial":6,"_locale":7,"title":125,"description":7,"body":126,"_type":83,"_id":254,"_source":85,"_file":255,"_extension":87},"/main/contribute","Contribute",{"type":12,"children":127,"toc":248},[128,134,139,146,151],{"type":15,"tag":16,"props":129,"children":131},{"id":130},"contributing-to-the-research-software-support",[132],{"type":21,"value":133},"Contributing to the Research Software Support",{"type":15,"tag":33,"props":135,"children":136},{},[137],{"type":21,"value":138},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":140,"props":141,"children":143},"h3",{"id":142},"what-can-i-do",[144],{"type":21,"value":145},"What can I do?",{"type":15,"tag":33,"props":147,"children":148},{},[149],{"type":21,"value":150},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":152,"props":153,"children":154},"ul",{},[155,172,213,236],{"type":15,"tag":156,"props":157,"children":158},"li",{},[159,161,170],{"type":21,"value":160},"Contribute to the content discussion in the ",{"type":15,"tag":162,"props":163,"children":167},"a",{"href":164,"rel":165},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[166],"nofollow",[168],{"type":21,"value":169},"chapter issues",{"type":21,"value":171},", e.g. by listing good resources for information.",{"type":15,"tag":156,"props":173,"children":174},{},[175,181,183],{"type":15,"tag":162,"props":176,"children":178},{"href":177},"#elements-of-a-module",[179],{"type":21,"value":180},"Author a lesson",{"type":21,"value":182},", e.g. by:\n",{"type":15,"tag":152,"props":184,"children":185},{},[186,195,204],{"type":15,"tag":156,"props":187,"children":188},{},[189],{"type":15,"tag":162,"props":190,"children":192},{"href":191},"#slides",[193],{"type":21,"value":194},"Creating slides",{"type":15,"tag":156,"props":196,"children":197},{},[198],{"type":15,"tag":162,"props":199,"children":201},{"href":200},"#exercises",[202],{"type":21,"value":203},"Designing an exercise",{"type":15,"tag":156,"props":205,"children":206},{},[207],{"type":15,"tag":162,"props":208,"children":210},{"href":209},"#online-resources",[211],{"type":21,"value":212},"Curating online resources",{"type":15,"tag":156,"props":214,"children":215},{},[216,218,225,227,234],{"type":21,"value":217},"Review a lesson module; both by looking at ",{"type":15,"tag":162,"props":219,"children":222},{"href":220,"rel":221},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[166],[223],{"type":21,"value":224},"open PRs",{"type":21,"value":226},", as well as flagging issues for improvement in the ",{"type":15,"tag":162,"props":228,"children":231},{"href":229,"rel":230},"https://esciencecenter-digital-skills.github.io/research-software-support/",[166],[232],{"type":21,"value":233},"existing content",{"type":21,"value":235},".",{"type":15,"tag":156,"props":237,"children":238},{},[239,246],{"type":15,"tag":162,"props":240,"children":243},{"href":241,"rel":242},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[166],[244],{"type":21,"value":245},"Provide feedback",{"type":21,"value":247}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":79,"depth":79,"links":249},[250],{"id":130,"depth":79,"text":133,"children":251},[252],{"id":142,"depth":253,"text":145},3,"local_fs:main:contribute.md","main/contribute.md",1715801015184] \ No newline at end of file diff --git a/modules/citation/citationcff/index.html b/modules/citation/citationcff/index.html index f92ed0f3..add96148 100644 --- a/modules/citation/citationcff/index.html +++ b/modules/citation/citationcff/index.html @@ -2,7 +2,7 @@ The `CITATION.cff` file - + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - + + -

    Module: citation

    The CITATION.cff file

    To facilitate the citation of scientific software, a group of software developers, researchers, and publishers have come together to develop the CITATION.cff format. A CITATION.cff file is a lightweight, machine-readable file that provides information about the software, its creators, and how it should be cited. This file can be included in the software, and should be easy to find and access.

    There are even nice integrations with GitHub and Zenodo.

    Here is an example of a CITATION.cff file:

    cff-version: 1.2.0
    +

    Module: citation

    The CITATION.cff file

    To facilitate the citation of scientific software, a group of software developers, researchers, and publishers have come together to develop the CITATION.cff format. A CITATION.cff file is a lightweight, machine-readable file that provides information about the software, its creators, and how it should be cited. This file can be included in the software, and should be easy to find and access.

    There are even nice integrations with GitHub and Zenodo.

    Here is an example of a CITATION.cff file:

    cff-version: 1.2.0
     message: "If you use this software, please cite it as below."
     authors:
       - family-names: Druskat
    @@ -48,5 +48,5 @@
       - type: doi
         value: 10.5281/zenodo.1234
     date-released: 2021-08-11
    -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/citation/create_citation_file/_payload.json b/modules/citation/create_citation_file/_payload.json index 5de0fc6c..7c7a8d54 100644 --- a/modules/citation/create_citation_file/_payload.json +++ b/modules/citation/create_citation_file/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":229},["Reactive",2],{"content-query-wcZwHLKSHE":3,"content-query-AT44bg6JPw":64},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":59,"_id":60,"_source":61,"_file":62,"_extension":63},"/modules/citation/create_citation_file","citation",false,"","Using cffinit to create `CITATION.cff`","exercise",5,{"type":12,"children":13,"toc":54},"root",[14,30],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"using-cffinit-to-create-citationcff",[20,23],{"type":21,"value":22},"text","Using cffinit to create ",{"type":15,"tag":24,"props":25,"children":27},"code",{"className":26},[],[28],{"type":21,"value":29},"CITATION.cff",{"type":15,"tag":31,"props":32,"children":33},"p",{},[34,36,41,43,52],{"type":21,"value":35},"This tutorial demonstrates the use of CFFinit, to create a ",{"type":15,"tag":24,"props":37,"children":39},{"className":38},[],[40],{"type":21,"value":29},{"type":21,"value":42}," file. You can find the tool at ",{"type":15,"tag":44,"props":45,"children":49},"a",{"href":46,"rel":47},"https://citation-file-format.github.io/cff-initializer-javascript/#/",[48],"nofollow",[50],{"type":21,"value":51},"citation-file-format.github.io/cff-initializer-javascript",{"type":21,"value":53},".",{"title":7,"searchDepth":55,"depth":55,"links":56},2,[57],{"id":18,"depth":55,"text":58},"Using cffinit to create CITATION.cff","markdown","local_fs:modules:citation:create_citation_file.md","local_fs","modules/citation/create_citation_file.md","md",[65,99],{"_path":66,"_dir":67,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":59,"_id":97,"_source":61,"_file":98,"_extension":63},"/main/about","main","About",{"type":12,"children":70,"toc":93},[71,77,82,88],{"type":15,"tag":16,"props":72,"children":74},{"id":73},"about-the-research-software-support",[75],{"type":21,"value":76},"About the Research Software Support",{"type":15,"tag":31,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":83,"children":85},{"id":84},"target-audience",[86],{"type":21,"value":87},"Target audience",{"type":15,"tag":31,"props":89,"children":90},{},[91],{"type":21,"value":92},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":55,"depth":55,"links":94},[95,96],{"id":73,"depth":55,"text":76},{"id":84,"depth":55,"text":87},"local_fs:main:about.md","main/about.md",{"_path":100,"_dir":67,"_draft":6,"_partial":6,"_locale":7,"title":101,"description":7,"body":102,"_type":59,"_id":227,"_source":61,"_file":228,"_extension":63},"/main/contribute","Contribute",{"type":12,"children":103,"toc":221},[104,110,115,122,127],{"type":15,"tag":16,"props":105,"children":107},{"id":106},"contributing-to-the-research-software-support",[108],{"type":21,"value":109},"Contributing to the Research Software Support",{"type":15,"tag":31,"props":111,"children":112},{},[113],{"type":21,"value":114},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":116,"props":117,"children":119},"h3",{"id":118},"what-can-i-do",[120],{"type":21,"value":121},"What can I do?",{"type":15,"tag":31,"props":123,"children":124},{},[125],{"type":21,"value":126},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":128,"props":129,"children":130},"ul",{},[131,146,187,209],{"type":15,"tag":132,"props":133,"children":134},"li",{},[135,137,144],{"type":21,"value":136},"Contribute to the content discussion in the ",{"type":15,"tag":44,"props":138,"children":141},{"href":139,"rel":140},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[48],[142],{"type":21,"value":143},"chapter issues",{"type":21,"value":145},", e.g. by listing good resources for information.",{"type":15,"tag":132,"props":147,"children":148},{},[149,155,157],{"type":15,"tag":44,"props":150,"children":152},{"href":151},"#elements-of-a-module",[153],{"type":21,"value":154},"Author a lesson",{"type":21,"value":156},", e.g. by:\n",{"type":15,"tag":128,"props":158,"children":159},{},[160,169,178],{"type":15,"tag":132,"props":161,"children":162},{},[163],{"type":15,"tag":44,"props":164,"children":166},{"href":165},"#slides",[167],{"type":21,"value":168},"Creating slides",{"type":15,"tag":132,"props":170,"children":171},{},[172],{"type":15,"tag":44,"props":173,"children":175},{"href":174},"#exercises",[176],{"type":21,"value":177},"Designing an exercise",{"type":15,"tag":132,"props":179,"children":180},{},[181],{"type":15,"tag":44,"props":182,"children":184},{"href":183},"#online-resources",[185],{"type":21,"value":186},"Curating online resources",{"type":15,"tag":132,"props":188,"children":189},{},[190,192,199,201,208],{"type":21,"value":191},"Review a lesson module; both by looking at ",{"type":15,"tag":44,"props":193,"children":196},{"href":194,"rel":195},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[48],[197],{"type":21,"value":198},"open PRs",{"type":21,"value":200},", as well as flagging issues for improvement in the ",{"type":15,"tag":44,"props":202,"children":205},{"href":203,"rel":204},"https://esciencecenter-digital-skills.github.io/research-software-support/",[48],[206],{"type":21,"value":207},"existing content",{"type":21,"value":53},{"type":15,"tag":132,"props":210,"children":211},{},[212,219],{"type":15,"tag":44,"props":213,"children":216},{"href":214,"rel":215},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[48],[217],{"type":21,"value":218},"Provide feedback",{"type":21,"value":220}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":55,"depth":55,"links":222},[223],{"id":106,"depth":55,"text":109,"children":224},[225],{"id":118,"depth":226,"text":121},3,"local_fs:main:contribute.md","main/contribute.md",1715800938028] \ No newline at end of file +[{"data":1,"prerenderedAt":229},["Reactive",2],{"content-query-wcZwHLKSHE":3,"content-query-AT44bg6JPw":64},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":59,"_id":60,"_source":61,"_file":62,"_extension":63},"/modules/citation/create_citation_file","citation",false,"","Using cffinit to create `CITATION.cff`","exercise",5,{"type":12,"children":13,"toc":54},"root",[14,30],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"using-cffinit-to-create-citationcff",[20,23],{"type":21,"value":22},"text","Using cffinit to create ",{"type":15,"tag":24,"props":25,"children":27},"code",{"className":26},[],[28],{"type":21,"value":29},"CITATION.cff",{"type":15,"tag":31,"props":32,"children":33},"p",{},[34,36,41,43,52],{"type":21,"value":35},"This tutorial demonstrates the use of CFFinit, to create a ",{"type":15,"tag":24,"props":37,"children":39},{"className":38},[],[40],{"type":21,"value":29},{"type":21,"value":42}," file. You can find the tool at ",{"type":15,"tag":44,"props":45,"children":49},"a",{"href":46,"rel":47},"https://citation-file-format.github.io/cff-initializer-javascript/#/",[48],"nofollow",[50],{"type":21,"value":51},"citation-file-format.github.io/cff-initializer-javascript",{"type":21,"value":53},".",{"title":7,"searchDepth":55,"depth":55,"links":56},2,[57],{"id":18,"depth":55,"text":58},"Using cffinit to create CITATION.cff","markdown","local_fs:modules:citation:create_citation_file.md","local_fs","modules/citation/create_citation_file.md","md",[65,99],{"_path":66,"_dir":67,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":59,"_id":97,"_source":61,"_file":98,"_extension":63},"/main/about","main","About",{"type":12,"children":70,"toc":93},[71,77,82,88],{"type":15,"tag":16,"props":72,"children":74},{"id":73},"about-the-research-software-support",[75],{"type":21,"value":76},"About the Research Software Support",{"type":15,"tag":31,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":83,"children":85},{"id":84},"target-audience",[86],{"type":21,"value":87},"Target audience",{"type":15,"tag":31,"props":89,"children":90},{},[91],{"type":21,"value":92},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":55,"depth":55,"links":94},[95,96],{"id":73,"depth":55,"text":76},{"id":84,"depth":55,"text":87},"local_fs:main:about.md","main/about.md",{"_path":100,"_dir":67,"_draft":6,"_partial":6,"_locale":7,"title":101,"description":7,"body":102,"_type":59,"_id":227,"_source":61,"_file":228,"_extension":63},"/main/contribute","Contribute",{"type":12,"children":103,"toc":221},[104,110,115,122,127],{"type":15,"tag":16,"props":105,"children":107},{"id":106},"contributing-to-the-research-software-support",[108],{"type":21,"value":109},"Contributing to the Research Software Support",{"type":15,"tag":31,"props":111,"children":112},{},[113],{"type":21,"value":114},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":116,"props":117,"children":119},"h3",{"id":118},"what-can-i-do",[120],{"type":21,"value":121},"What can I do?",{"type":15,"tag":31,"props":123,"children":124},{},[125],{"type":21,"value":126},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":128,"props":129,"children":130},"ul",{},[131,146,187,209],{"type":15,"tag":132,"props":133,"children":134},"li",{},[135,137,144],{"type":21,"value":136},"Contribute to the content discussion in the ",{"type":15,"tag":44,"props":138,"children":141},{"href":139,"rel":140},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[48],[142],{"type":21,"value":143},"chapter issues",{"type":21,"value":145},", e.g. by listing good resources for information.",{"type":15,"tag":132,"props":147,"children":148},{},[149,155,157],{"type":15,"tag":44,"props":150,"children":152},{"href":151},"#elements-of-a-module",[153],{"type":21,"value":154},"Author a lesson",{"type":21,"value":156},", e.g. by:\n",{"type":15,"tag":128,"props":158,"children":159},{},[160,169,178],{"type":15,"tag":132,"props":161,"children":162},{},[163],{"type":15,"tag":44,"props":164,"children":166},{"href":165},"#slides",[167],{"type":21,"value":168},"Creating slides",{"type":15,"tag":132,"props":170,"children":171},{},[172],{"type":15,"tag":44,"props":173,"children":175},{"href":174},"#exercises",[176],{"type":21,"value":177},"Designing an exercise",{"type":15,"tag":132,"props":179,"children":180},{},[181],{"type":15,"tag":44,"props":182,"children":184},{"href":183},"#online-resources",[185],{"type":21,"value":186},"Curating online resources",{"type":15,"tag":132,"props":188,"children":189},{},[190,192,199,201,208],{"type":21,"value":191},"Review a lesson module; both by looking at ",{"type":15,"tag":44,"props":193,"children":196},{"href":194,"rel":195},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[48],[197],{"type":21,"value":198},"open PRs",{"type":21,"value":200},", as well as flagging issues for improvement in the ",{"type":15,"tag":44,"props":202,"children":205},{"href":203,"rel":204},"https://esciencecenter-digital-skills.github.io/research-software-support/",[48],[206],{"type":21,"value":207},"existing content",{"type":21,"value":53},{"type":15,"tag":132,"props":210,"children":211},{},[212,219],{"type":15,"tag":44,"props":213,"children":216},{"href":214,"rel":215},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[48],[217],{"type":21,"value":218},"Provide feedback",{"type":21,"value":220}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":55,"depth":55,"links":222},[223],{"id":106,"depth":55,"text":109,"children":224},[225],{"id":118,"depth":226,"text":121},3,"local_fs:main:contribute.md","main/contribute.md",1715801015200] \ No newline at end of file diff --git a/modules/citation/create_citation_file/index.html b/modules/citation/create_citation_file/index.html index 5b511f79..b6013cdf 100644 --- a/modules/citation/create_citation_file/index.html +++ b/modules/citation/create_citation_file/index.html @@ -2,7 +2,7 @@ Using cffinit to create `CITATION.cff` - + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/citation/ex_when_to_cite/_payload.json b/modules/citation/ex_when_to_cite/_payload.json index ef9df1c3..1b154ee1 100644 --- a/modules/citation/ex_when_to_cite/_payload.json +++ b/modules/citation/ex_when_to_cite/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":254},["Reactive",2],{"content-query-vbAWN5xGeh":3,"content-query-AT44bg6JPw":88},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":83,"_id":84,"_source":85,"_file":86,"_extension":87},"/modules/citation/ex_when_to_cite","citation",false,"","Which software should I cite?","exercise",6,{"type":12,"children":13,"toc":79},"root",[14,23,29,74],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"exercise-which-software-should-i-cite",[20],{"type":21,"value":22},"text","Exercise: Which software should I cite?",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27],{"type":21,"value":28},"Suppose you are writing a paper on your latest research and are putting together the reference list. During your research you have used all the software mentioned below.",{"type":15,"tag":30,"props":31,"children":32},"ul",{},[33,39,44,49,54,59,64,69],{"type":15,"tag":34,"props":35,"children":36},"li",{},[37],{"type":21,"value":38},"Ubuntu - Operating System ()",{"type":15,"tag":34,"props":40,"children":41},{},[42],{"type":21,"value":43},"Microsoft word - text editor (used to write the paper, take notes)",{"type":15,"tag":34,"props":45,"children":46},{},[47],{"type":21,"value":48},"Git - Version control software ()",{"type":15,"tag":34,"props":50,"children":51},{},[52],{"type":21,"value":53},"Numpy - Python math library (used in nearly all python-based research software)",{"type":15,"tag":34,"props":55,"children":56},{},[57],{"type":21,"value":58},"ESMValTool - Diagnostic tool/library for Earth System Models (Used in many climate research projects)",{"type":15,"tag":34,"props":60,"children":61},{},[62],{"type":21,"value":63},"ClimAnal - Your own domain specific python library (defines various analytical functions that you used in your climate research)",{"type":15,"tag":34,"props":65,"children":66},{},[67],{"type":21,"value":68},"The original code on which you based your library ClimAnal",{"type":15,"tag":34,"props":70,"children":71},{},[72],{"type":21,"value":73},"Your own local python script, used to execute the analysis",{"type":15,"tag":24,"props":75,"children":76},{},[77],{"type":21,"value":78},"Which software would you cite and which not? Why?",{"title":7,"searchDepth":80,"depth":80,"links":81},2,[82],{"id":18,"depth":80,"text":22},"markdown","local_fs:modules:citation:ex_when_to_cite.md","local_fs","modules/citation/ex_when_to_cite.md","md",[89,123],{"_path":90,"_dir":91,"_draft":6,"_partial":6,"_locale":7,"title":92,"description":7,"body":93,"_type":83,"_id":121,"_source":85,"_file":122,"_extension":87},"/main/about","main","About",{"type":12,"children":94,"toc":117},[95,101,106,112],{"type":15,"tag":16,"props":96,"children":98},{"id":97},"about-the-research-software-support",[99],{"type":21,"value":100},"About the Research Software Support",{"type":15,"tag":24,"props":102,"children":103},{},[104],{"type":21,"value":105},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":107,"children":109},{"id":108},"target-audience",[110],{"type":21,"value":111},"Target audience",{"type":15,"tag":24,"props":113,"children":114},{},[115],{"type":21,"value":116},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":80,"depth":80,"links":118},[119,120],{"id":97,"depth":80,"text":100},{"id":108,"depth":80,"text":111},"local_fs:main:about.md","main/about.md",{"_path":124,"_dir":91,"_draft":6,"_partial":6,"_locale":7,"title":125,"description":7,"body":126,"_type":83,"_id":252,"_source":85,"_file":253,"_extension":87},"/main/contribute","Contribute",{"type":12,"children":127,"toc":246},[128,134,139,146,151],{"type":15,"tag":16,"props":129,"children":131},{"id":130},"contributing-to-the-research-software-support",[132],{"type":21,"value":133},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":135,"children":136},{},[137],{"type":21,"value":138},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":140,"props":141,"children":143},"h3",{"id":142},"what-can-i-do",[144],{"type":21,"value":145},"What can I do?",{"type":15,"tag":24,"props":147,"children":148},{},[149],{"type":21,"value":150},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":30,"props":152,"children":153},{},[154,170,211,234],{"type":15,"tag":34,"props":155,"children":156},{},[157,159,168],{"type":21,"value":158},"Contribute to the content discussion in the ",{"type":15,"tag":160,"props":161,"children":165},"a",{"href":162,"rel":163},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[164],"nofollow",[166],{"type":21,"value":167},"chapter issues",{"type":21,"value":169},", e.g. by listing good resources for information.",{"type":15,"tag":34,"props":171,"children":172},{},[173,179,181],{"type":15,"tag":160,"props":174,"children":176},{"href":175},"#elements-of-a-module",[177],{"type":21,"value":178},"Author a lesson",{"type":21,"value":180},", e.g. by:\n",{"type":15,"tag":30,"props":182,"children":183},{},[184,193,202],{"type":15,"tag":34,"props":185,"children":186},{},[187],{"type":15,"tag":160,"props":188,"children":190},{"href":189},"#slides",[191],{"type":21,"value":192},"Creating slides",{"type":15,"tag":34,"props":194,"children":195},{},[196],{"type":15,"tag":160,"props":197,"children":199},{"href":198},"#exercises",[200],{"type":21,"value":201},"Designing an exercise",{"type":15,"tag":34,"props":203,"children":204},{},[205],{"type":15,"tag":160,"props":206,"children":208},{"href":207},"#online-resources",[209],{"type":21,"value":210},"Curating online resources",{"type":15,"tag":34,"props":212,"children":213},{},[214,216,223,225,232],{"type":21,"value":215},"Review a lesson module; both by looking at ",{"type":15,"tag":160,"props":217,"children":220},{"href":218,"rel":219},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[164],[221],{"type":21,"value":222},"open PRs",{"type":21,"value":224},", as well as flagging issues for improvement in the ",{"type":15,"tag":160,"props":226,"children":229},{"href":227,"rel":228},"https://esciencecenter-digital-skills.github.io/research-software-support/",[164],[230],{"type":21,"value":231},"existing content",{"type":21,"value":233},".",{"type":15,"tag":34,"props":235,"children":236},{},[237,244],{"type":15,"tag":160,"props":238,"children":241},{"href":239,"rel":240},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[164],[242],{"type":21,"value":243},"Provide feedback",{"type":21,"value":245}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":80,"depth":80,"links":247},[248],{"id":130,"depth":80,"text":133,"children":249},[250],{"id":142,"depth":251,"text":145},3,"local_fs:main:contribute.md","main/contribute.md",1715800938031] \ No newline at end of file +[{"data":1,"prerenderedAt":254},["Reactive",2],{"content-query-vbAWN5xGeh":3,"content-query-AT44bg6JPw":88},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":83,"_id":84,"_source":85,"_file":86,"_extension":87},"/modules/citation/ex_when_to_cite","citation",false,"","Which software should I cite?","exercise",6,{"type":12,"children":13,"toc":79},"root",[14,23,29,74],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"exercise-which-software-should-i-cite",[20],{"type":21,"value":22},"text","Exercise: Which software should I cite?",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27],{"type":21,"value":28},"Suppose you are writing a paper on your latest research and are putting together the reference list. During your research you have used all the software mentioned below.",{"type":15,"tag":30,"props":31,"children":32},"ul",{},[33,39,44,49,54,59,64,69],{"type":15,"tag":34,"props":35,"children":36},"li",{},[37],{"type":21,"value":38},"Ubuntu - Operating System ()",{"type":15,"tag":34,"props":40,"children":41},{},[42],{"type":21,"value":43},"Microsoft word - text editor (used to write the paper, take notes)",{"type":15,"tag":34,"props":45,"children":46},{},[47],{"type":21,"value":48},"Git - Version control software ()",{"type":15,"tag":34,"props":50,"children":51},{},[52],{"type":21,"value":53},"Numpy - Python math library (used in nearly all python-based research software)",{"type":15,"tag":34,"props":55,"children":56},{},[57],{"type":21,"value":58},"ESMValTool - Diagnostic tool/library for Earth System Models (Used in many climate research projects)",{"type":15,"tag":34,"props":60,"children":61},{},[62],{"type":21,"value":63},"ClimAnal - Your own domain specific python library (defines various analytical functions that you used in your climate research)",{"type":15,"tag":34,"props":65,"children":66},{},[67],{"type":21,"value":68},"The original code on which you based your library ClimAnal",{"type":15,"tag":34,"props":70,"children":71},{},[72],{"type":21,"value":73},"Your own local python script, used to execute the analysis",{"type":15,"tag":24,"props":75,"children":76},{},[77],{"type":21,"value":78},"Which software would you cite and which not? Why?",{"title":7,"searchDepth":80,"depth":80,"links":81},2,[82],{"id":18,"depth":80,"text":22},"markdown","local_fs:modules:citation:ex_when_to_cite.md","local_fs","modules/citation/ex_when_to_cite.md","md",[89,123],{"_path":90,"_dir":91,"_draft":6,"_partial":6,"_locale":7,"title":92,"description":7,"body":93,"_type":83,"_id":121,"_source":85,"_file":122,"_extension":87},"/main/about","main","About",{"type":12,"children":94,"toc":117},[95,101,106,112],{"type":15,"tag":16,"props":96,"children":98},{"id":97},"about-the-research-software-support",[99],{"type":21,"value":100},"About the Research Software Support",{"type":15,"tag":24,"props":102,"children":103},{},[104],{"type":21,"value":105},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":107,"children":109},{"id":108},"target-audience",[110],{"type":21,"value":111},"Target audience",{"type":15,"tag":24,"props":113,"children":114},{},[115],{"type":21,"value":116},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":80,"depth":80,"links":118},[119,120],{"id":97,"depth":80,"text":100},{"id":108,"depth":80,"text":111},"local_fs:main:about.md","main/about.md",{"_path":124,"_dir":91,"_draft":6,"_partial":6,"_locale":7,"title":125,"description":7,"body":126,"_type":83,"_id":252,"_source":85,"_file":253,"_extension":87},"/main/contribute","Contribute",{"type":12,"children":127,"toc":246},[128,134,139,146,151],{"type":15,"tag":16,"props":129,"children":131},{"id":130},"contributing-to-the-research-software-support",[132],{"type":21,"value":133},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":135,"children":136},{},[137],{"type":21,"value":138},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":140,"props":141,"children":143},"h3",{"id":142},"what-can-i-do",[144],{"type":21,"value":145},"What can I do?",{"type":15,"tag":24,"props":147,"children":148},{},[149],{"type":21,"value":150},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":30,"props":152,"children":153},{},[154,170,211,234],{"type":15,"tag":34,"props":155,"children":156},{},[157,159,168],{"type":21,"value":158},"Contribute to the content discussion in the ",{"type":15,"tag":160,"props":161,"children":165},"a",{"href":162,"rel":163},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[164],"nofollow",[166],{"type":21,"value":167},"chapter issues",{"type":21,"value":169},", e.g. by listing good resources for information.",{"type":15,"tag":34,"props":171,"children":172},{},[173,179,181],{"type":15,"tag":160,"props":174,"children":176},{"href":175},"#elements-of-a-module",[177],{"type":21,"value":178},"Author a lesson",{"type":21,"value":180},", e.g. by:\n",{"type":15,"tag":30,"props":182,"children":183},{},[184,193,202],{"type":15,"tag":34,"props":185,"children":186},{},[187],{"type":15,"tag":160,"props":188,"children":190},{"href":189},"#slides",[191],{"type":21,"value":192},"Creating slides",{"type":15,"tag":34,"props":194,"children":195},{},[196],{"type":15,"tag":160,"props":197,"children":199},{"href":198},"#exercises",[200],{"type":21,"value":201},"Designing an exercise",{"type":15,"tag":34,"props":203,"children":204},{},[205],{"type":15,"tag":160,"props":206,"children":208},{"href":207},"#online-resources",[209],{"type":21,"value":210},"Curating online resources",{"type":15,"tag":34,"props":212,"children":213},{},[214,216,223,225,232],{"type":21,"value":215},"Review a lesson module; both by looking at ",{"type":15,"tag":160,"props":217,"children":220},{"href":218,"rel":219},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[164],[221],{"type":21,"value":222},"open PRs",{"type":21,"value":224},", as well as flagging issues for improvement in the ",{"type":15,"tag":160,"props":226,"children":229},{"href":227,"rel":228},"https://esciencecenter-digital-skills.github.io/research-software-support/",[164],[230],{"type":21,"value":231},"existing content",{"type":21,"value":233},".",{"type":15,"tag":34,"props":235,"children":236},{},[237,244],{"type":15,"tag":160,"props":238,"children":241},{"href":239,"rel":240},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[164],[242],{"type":21,"value":243},"Provide feedback",{"type":21,"value":245}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":80,"depth":80,"links":247},[248],{"id":130,"depth":80,"text":133,"children":249},[250],{"id":142,"depth":251,"text":145},3,"local_fs:main:contribute.md","main/contribute.md",1715801015214] \ No newline at end of file diff --git a/modules/citation/ex_when_to_cite/index.html b/modules/citation/ex_when_to_cite/index.html index d09a158a..10b7d909 100644 --- a/modules/citation/ex_when_to_cite/index.html +++ b/modules/citation/ex_when_to_cite/index.html @@ -2,7 +2,7 @@ Which software should I cite? - + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - + + -

    Module: citation

    Exercise: Which software should I cite?

    Suppose you are writing a paper on your latest research and are putting together the reference list. During your research you have used all the software mentioned below.

    • Ubuntu - Operating System ()
    • Microsoft word - text editor (used to write the paper, take notes)
    • Git - Version control software ()
    • Numpy - Python math library (used in nearly all python-based research software)
    • ESMValTool - Diagnostic tool/library for Earth System Models (Used in many climate research projects)
    • ClimAnal - Your own domain specific python library (defines various analytical functions that you used in your climate research)
    • The original code on which you based your library ClimAnal
    • Your own local python script, used to execute the analysis

    Which software would you cite and which not? Why?

    - \ No newline at end of file +

    Module: citation

    Exercise: Which software should I cite?

    Suppose you are writing a paper on your latest research and are putting together the reference list. During your research you have used all the software mentioned below.

    • Ubuntu - Operating System ()
    • Microsoft word - text editor (used to write the paper, take notes)
    • Git - Version control software ()
    • Numpy - Python math library (used in nearly all python-based research software)
    • ESMValTool - Diagnostic tool/library for Earth System Models (Used in many climate research projects)
    • ClimAnal - Your own domain specific python library (defines various analytical functions that you used in your climate research)
    • The original code on which you based your library ClimAnal
    • Your own local python script, used to execute the analysis

    Which software would you cite and which not? Why?

    + \ No newline at end of file diff --git a/modules/citation/further_reading/_payload.json b/modules/citation/further_reading/_payload.json index 0f062f11..fa2c0293 100644 --- a/modules/citation/further_reading/_payload.json +++ b/modules/citation/further_reading/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":279},["Reactive",2],{"content-query-yo9bESSD45":3,"content-query-AT44bg6JPw":115},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":110,"_id":111,"_source":112,"_file":113,"_extension":114},"/modules/citation/further_reading","citation",false,"","Reading material","reading",7,{"type":12,"children":13,"toc":106},"root",[14,23],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"links-for-further-reading",[20],{"type":21,"value":22},"text","Links for further reading",{"type":15,"tag":24,"props":25,"children":26},"ul",{},[27,44,58,71,94],{"type":15,"tag":28,"props":29,"children":30},"li",{},[31,33,42],{"type":21,"value":32},"The FORCE11 ",{"type":15,"tag":34,"props":35,"children":39},"a",{"href":36,"rel":37},"https://force11.org/info/software-citation-principles-published-2016/",[38],"nofollow",[40],{"type":21,"value":41},"Software Citation Principles",{"type":21,"value":43}," describe the rationale behind software citation.",{"type":15,"tag":28,"props":45,"children":46},{},[47,49,56],{"type":21,"value":48},"An interactive guide on software citation can be found at ",{"type":15,"tag":34,"props":50,"children":53},{"href":51,"rel":52},"https://cfa-library.github.io/citesoftware.org/",[38],[54],{"type":21,"value":55},"citesoftware.org",{"type":21,"value":57},".",{"type":15,"tag":28,"props":59,"children":60},{},[61,63,70],{"type":21,"value":62},"An extensive (non-interactive) guide can be found at ",{"type":15,"tag":34,"props":64,"children":67},{"href":65,"rel":66},"https://cite.research-software.org/",[38],[68],{"type":21,"value":69},"cite.research-software.org",{"type":21,"value":57},{"type":15,"tag":28,"props":72,"children":73},{},[74,76,83,85,92],{"type":21,"value":75},"To provide citation information ",{"type":15,"tag":34,"props":77,"children":80},{"href":78,"rel":79},"https://citation-file-format.github.io/",[38],[81],{"type":21,"value":82},"CITATION.cff",{"type":21,"value":84}," files can be created using the online ",{"type":15,"tag":34,"props":86,"children":89},{"href":87,"rel":88},"https://citation-file-format.github.io/cff-initializer-javascript/#/",[38],[90],{"type":21,"value":91},"CFFInit",{"type":21,"value":93}," tool.",{"type":15,"tag":28,"props":95,"children":96},{},[97,104],{"type":15,"tag":34,"props":98,"children":101},{"href":99,"rel":100},"https://mr-c.github.io/shouldacite/",[38],[102],{"type":21,"value":103},"Shouldacite",{"type":21,"value":105}," helps you decide when to cite software in your publications.",{"title":7,"searchDepth":107,"depth":107,"links":108},2,[109],{"id":18,"depth":107,"text":22},"markdown","local_fs:modules:citation:further_reading.md","local_fs","modules/citation/further_reading.md","md",[116,151],{"_path":117,"_dir":118,"_draft":6,"_partial":6,"_locale":7,"title":119,"description":7,"body":120,"_type":110,"_id":149,"_source":112,"_file":150,"_extension":114},"/main/about","main","About",{"type":12,"children":121,"toc":145},[122,128,134,140],{"type":15,"tag":16,"props":123,"children":125},{"id":124},"about-the-research-software-support",[126],{"type":21,"value":127},"About the Research Software Support",{"type":15,"tag":129,"props":130,"children":131},"p",{},[132],{"type":21,"value":133},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":135,"children":137},{"id":136},"target-audience",[138],{"type":21,"value":139},"Target audience",{"type":15,"tag":129,"props":141,"children":142},{},[143],{"type":21,"value":144},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":107,"depth":107,"links":146},[147,148],{"id":124,"depth":107,"text":127},{"id":136,"depth":107,"text":139},"local_fs:main:about.md","main/about.md",{"_path":152,"_dir":118,"_draft":6,"_partial":6,"_locale":7,"title":153,"description":7,"body":154,"_type":110,"_id":277,"_source":112,"_file":278,"_extension":114},"/main/contribute","Contribute",{"type":12,"children":155,"toc":271},[156,162,167,174,179],{"type":15,"tag":16,"props":157,"children":159},{"id":158},"contributing-to-the-research-software-support",[160],{"type":21,"value":161},"Contributing to the Research Software Support",{"type":15,"tag":129,"props":163,"children":164},{},[165],{"type":21,"value":166},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":168,"props":169,"children":171},"h3",{"id":170},"what-can-i-do",[172],{"type":21,"value":173},"What can I do?",{"type":15,"tag":129,"props":175,"children":176},{},[177],{"type":21,"value":178},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":24,"props":180,"children":181},{},[182,196,237,259],{"type":15,"tag":28,"props":183,"children":184},{},[185,187,194],{"type":21,"value":186},"Contribute to the content discussion in the ",{"type":15,"tag":34,"props":188,"children":191},{"href":189,"rel":190},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[38],[192],{"type":21,"value":193},"chapter issues",{"type":21,"value":195},", e.g. by listing good resources for information.",{"type":15,"tag":28,"props":197,"children":198},{},[199,205,207],{"type":15,"tag":34,"props":200,"children":202},{"href":201},"#elements-of-a-module",[203],{"type":21,"value":204},"Author a lesson",{"type":21,"value":206},", e.g. by:\n",{"type":15,"tag":24,"props":208,"children":209},{},[210,219,228],{"type":15,"tag":28,"props":211,"children":212},{},[213],{"type":15,"tag":34,"props":214,"children":216},{"href":215},"#slides",[217],{"type":21,"value":218},"Creating slides",{"type":15,"tag":28,"props":220,"children":221},{},[222],{"type":15,"tag":34,"props":223,"children":225},{"href":224},"#exercises",[226],{"type":21,"value":227},"Designing an exercise",{"type":15,"tag":28,"props":229,"children":230},{},[231],{"type":15,"tag":34,"props":232,"children":234},{"href":233},"#online-resources",[235],{"type":21,"value":236},"Curating online resources",{"type":15,"tag":28,"props":238,"children":239},{},[240,242,249,251,258],{"type":21,"value":241},"Review a lesson module; both by looking at ",{"type":15,"tag":34,"props":243,"children":246},{"href":244,"rel":245},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[38],[247],{"type":21,"value":248},"open PRs",{"type":21,"value":250},", as well as flagging issues for improvement in the ",{"type":15,"tag":34,"props":252,"children":255},{"href":253,"rel":254},"https://esciencecenter-digital-skills.github.io/research-software-support/",[38],[256],{"type":21,"value":257},"existing content",{"type":21,"value":57},{"type":15,"tag":28,"props":260,"children":261},{},[262,269],{"type":15,"tag":34,"props":263,"children":266},{"href":264,"rel":265},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[38],[267],{"type":21,"value":268},"Provide feedback",{"type":21,"value":270}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":107,"depth":107,"links":272},[273],{"id":158,"depth":107,"text":161,"children":274},[275],{"id":170,"depth":276,"text":173},3,"local_fs:main:contribute.md","main/contribute.md",1715800938040] \ No newline at end of file +[{"data":1,"prerenderedAt":279},["Reactive",2],{"content-query-yo9bESSD45":3,"content-query-AT44bg6JPw":115},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":110,"_id":111,"_source":112,"_file":113,"_extension":114},"/modules/citation/further_reading","citation",false,"","Reading material","reading",7,{"type":12,"children":13,"toc":106},"root",[14,23],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"links-for-further-reading",[20],{"type":21,"value":22},"text","Links for further reading",{"type":15,"tag":24,"props":25,"children":26},"ul",{},[27,44,58,71,94],{"type":15,"tag":28,"props":29,"children":30},"li",{},[31,33,42],{"type":21,"value":32},"The FORCE11 ",{"type":15,"tag":34,"props":35,"children":39},"a",{"href":36,"rel":37},"https://force11.org/info/software-citation-principles-published-2016/",[38],"nofollow",[40],{"type":21,"value":41},"Software Citation Principles",{"type":21,"value":43}," describe the rationale behind software citation.",{"type":15,"tag":28,"props":45,"children":46},{},[47,49,56],{"type":21,"value":48},"An interactive guide on software citation can be found at ",{"type":15,"tag":34,"props":50,"children":53},{"href":51,"rel":52},"https://cfa-library.github.io/citesoftware.org/",[38],[54],{"type":21,"value":55},"citesoftware.org",{"type":21,"value":57},".",{"type":15,"tag":28,"props":59,"children":60},{},[61,63,70],{"type":21,"value":62},"An extensive (non-interactive) guide can be found at ",{"type":15,"tag":34,"props":64,"children":67},{"href":65,"rel":66},"https://cite.research-software.org/",[38],[68],{"type":21,"value":69},"cite.research-software.org",{"type":21,"value":57},{"type":15,"tag":28,"props":72,"children":73},{},[74,76,83,85,92],{"type":21,"value":75},"To provide citation information ",{"type":15,"tag":34,"props":77,"children":80},{"href":78,"rel":79},"https://citation-file-format.github.io/",[38],[81],{"type":21,"value":82},"CITATION.cff",{"type":21,"value":84}," files can be created using the online ",{"type":15,"tag":34,"props":86,"children":89},{"href":87,"rel":88},"https://citation-file-format.github.io/cff-initializer-javascript/#/",[38],[90],{"type":21,"value":91},"CFFInit",{"type":21,"value":93}," tool.",{"type":15,"tag":28,"props":95,"children":96},{},[97,104],{"type":15,"tag":34,"props":98,"children":101},{"href":99,"rel":100},"https://mr-c.github.io/shouldacite/",[38],[102],{"type":21,"value":103},"Shouldacite",{"type":21,"value":105}," helps you decide when to cite software in your publications.",{"title":7,"searchDepth":107,"depth":107,"links":108},2,[109],{"id":18,"depth":107,"text":22},"markdown","local_fs:modules:citation:further_reading.md","local_fs","modules/citation/further_reading.md","md",[116,151],{"_path":117,"_dir":118,"_draft":6,"_partial":6,"_locale":7,"title":119,"description":7,"body":120,"_type":110,"_id":149,"_source":112,"_file":150,"_extension":114},"/main/about","main","About",{"type":12,"children":121,"toc":145},[122,128,134,140],{"type":15,"tag":16,"props":123,"children":125},{"id":124},"about-the-research-software-support",[126],{"type":21,"value":127},"About the Research Software Support",{"type":15,"tag":129,"props":130,"children":131},"p",{},[132],{"type":21,"value":133},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":135,"children":137},{"id":136},"target-audience",[138],{"type":21,"value":139},"Target audience",{"type":15,"tag":129,"props":141,"children":142},{},[143],{"type":21,"value":144},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":107,"depth":107,"links":146},[147,148],{"id":124,"depth":107,"text":127},{"id":136,"depth":107,"text":139},"local_fs:main:about.md","main/about.md",{"_path":152,"_dir":118,"_draft":6,"_partial":6,"_locale":7,"title":153,"description":7,"body":154,"_type":110,"_id":277,"_source":112,"_file":278,"_extension":114},"/main/contribute","Contribute",{"type":12,"children":155,"toc":271},[156,162,167,174,179],{"type":15,"tag":16,"props":157,"children":159},{"id":158},"contributing-to-the-research-software-support",[160],{"type":21,"value":161},"Contributing to the Research Software Support",{"type":15,"tag":129,"props":163,"children":164},{},[165],{"type":21,"value":166},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":168,"props":169,"children":171},"h3",{"id":170},"what-can-i-do",[172],{"type":21,"value":173},"What can I do?",{"type":15,"tag":129,"props":175,"children":176},{},[177],{"type":21,"value":178},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":24,"props":180,"children":181},{},[182,196,237,259],{"type":15,"tag":28,"props":183,"children":184},{},[185,187,194],{"type":21,"value":186},"Contribute to the content discussion in the ",{"type":15,"tag":34,"props":188,"children":191},{"href":189,"rel":190},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[38],[192],{"type":21,"value":193},"chapter issues",{"type":21,"value":195},", e.g. by listing good resources for information.",{"type":15,"tag":28,"props":197,"children":198},{},[199,205,207],{"type":15,"tag":34,"props":200,"children":202},{"href":201},"#elements-of-a-module",[203],{"type":21,"value":204},"Author a lesson",{"type":21,"value":206},", e.g. by:\n",{"type":15,"tag":24,"props":208,"children":209},{},[210,219,228],{"type":15,"tag":28,"props":211,"children":212},{},[213],{"type":15,"tag":34,"props":214,"children":216},{"href":215},"#slides",[217],{"type":21,"value":218},"Creating slides",{"type":15,"tag":28,"props":220,"children":221},{},[222],{"type":15,"tag":34,"props":223,"children":225},{"href":224},"#exercises",[226],{"type":21,"value":227},"Designing an exercise",{"type":15,"tag":28,"props":229,"children":230},{},[231],{"type":15,"tag":34,"props":232,"children":234},{"href":233},"#online-resources",[235],{"type":21,"value":236},"Curating online resources",{"type":15,"tag":28,"props":238,"children":239},{},[240,242,249,251,258],{"type":21,"value":241},"Review a lesson module; both by looking at ",{"type":15,"tag":34,"props":243,"children":246},{"href":244,"rel":245},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[38],[247],{"type":21,"value":248},"open PRs",{"type":21,"value":250},", as well as flagging issues for improvement in the ",{"type":15,"tag":34,"props":252,"children":255},{"href":253,"rel":254},"https://esciencecenter-digital-skills.github.io/research-software-support/",[38],[256],{"type":21,"value":257},"existing content",{"type":21,"value":57},{"type":15,"tag":28,"props":260,"children":261},{},[262,269],{"type":15,"tag":34,"props":263,"children":266},{"href":264,"rel":265},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[38],[267],{"type":21,"value":268},"Provide feedback",{"type":21,"value":270}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":107,"depth":107,"links":272},[273],{"id":158,"depth":107,"text":161,"children":274},[275],{"id":170,"depth":276,"text":173},3,"local_fs:main:contribute.md","main/contribute.md",1715801015247] \ No newline at end of file diff --git a/modules/citation/further_reading/index.html b/modules/citation/further_reading/index.html index e3cc69fb..57511795 100644 --- a/modules/citation/further_reading/index.html +++ b/modules/citation/further_reading/index.html @@ -2,7 +2,7 @@ Reading material - + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - + + -

    Module: citation

    - \ No newline at end of file +

    Module: citation

    + \ No newline at end of file diff --git a/modules/citation/info/_payload.json b/modules/citation/info/_payload.json index 34568ceb..beb8e27f 100644 --- a/modules/citation/info/_payload.json +++ b/modules/citation/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-Ju4QawEgMs":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/citation/info","citation",false,"","Learning objectives","Learning objectives for the Citation module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:citation:info.md","local_fs","modules/citation/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715800937076] \ No newline at end of file +[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-Ju4QawEgMs":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/citation/info","citation",false,"","Learning objectives","Learning objectives for the Citation module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:citation:info.md","local_fs","modules/citation/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715801014246] \ No newline at end of file diff --git a/modules/citation/info/index.html b/modules/citation/info/index.html index 9e513cc8..d2d88839 100644 --- a/modules/citation/info/index.html +++ b/modules/citation/info/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - + + + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/citation/introduction/_payload.json b/modules/citation/introduction/_payload.json index 6d3d4a2f..e4693fcf 100644 --- a/modules/citation/introduction/_payload.json +++ b/modules/citation/introduction/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":259},["Reactive",2],{"content-query-cMDDDxx7ZF":3,"content-query-AT44bg6JPw":91},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":86,"_id":87,"_source":88,"_file":89,"_extension":90},"/modules/citation/introduction","citation",false,"","Citing software","reading",2,{"type":12,"children":13,"toc":83},"root",[14,22,28,39,49,59,69],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"citing-software",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":25},"p",{},[26],{"type":21,"value":27},"Software has become a crucial part of scientific research, yet it is not cited or credited as often and as easily as traditional research outputs. However, it is important to properly cite software, for many reasons, among which:",{"type":15,"tag":23,"props":29,"children":30},{},[31,37],{"type":15,"tag":32,"props":33,"children":34},"strong",{},[35],{"type":21,"value":36},"Understanding Research Fields",{"type":21,"value":38},": Software is a product of research, and by not citing it, we leave holes in the record of research of progress in those fields.",{"type":15,"tag":23,"props":40,"children":41},{},[42,47],{"type":15,"tag":32,"props":43,"children":44},{},[45],{"type":21,"value":46},"Recognition",{"type":21,"value":48},": Academic researchers at all levels, including students, postdocs, faculty, and staff, should be credited for the software products they develop and contribute to, particularly when those products enable or further research done by others. Non-academic researchers should also be credited for their software work, though the specific forms of credit are different than for academic researchers. Furthermore, citations can be tracked, which allows for more accurate assessment of the software's impact: who uses it, and what projects does it contribute to?",{"type":15,"tag":23,"props":50,"children":51},{},[52,57],{"type":15,"tag":32,"props":53,"children":54},{},[55],{"type":21,"value":56},"Discovering Software",{"type":21,"value":58},": Citations enable the specific software used in a research product to be found. Additional researchers can then use the same software for different purposes, leading to credit for those responsible for the software.",{"type":15,"tag":23,"props":60,"children":61},{},[62,67],{"type":15,"tag":32,"props":63,"children":64},{},[65],{"type":21,"value":66},"Reproducibility",{"type":21,"value":68},": Citation of specific software used is a crucial step in allowing other researchers to reproduce your results, although it is not sufficient. Additional information such as configurations and platform issues are also needed. Accurate information about the software — and its version! — used in your research is necessary for others to obtain and use the same software, making it easier to validate and build upon your research.",{"type":15,"tag":23,"props":70,"children":71},{},[72,74,81],{"type":21,"value":73},"In this module, we will further illustrate the importance of software citation, and we will demonstrate how scientific software can be cited, and how to facilitate this as the author of scientific software. Here, you will be introduced to the file type ",{"type":15,"tag":75,"props":76,"children":78},"code",{"className":77},[],[79],{"type":21,"value":80},"CITATION.cff",{"type":21,"value":82},", which was developed especially for this purpose.\n:::",{"title":7,"searchDepth":10,"depth":10,"links":84},[85],{"id":18,"depth":10,"text":8},"markdown","local_fs:modules:citation:introduction.md","local_fs","modules/citation/introduction.md","md",[92,126],{"_path":93,"_dir":94,"_draft":6,"_partial":6,"_locale":7,"title":95,"description":7,"body":96,"_type":86,"_id":124,"_source":88,"_file":125,"_extension":90},"/main/about","main","About",{"type":12,"children":97,"toc":120},[98,104,109,115],{"type":15,"tag":16,"props":99,"children":101},{"id":100},"about-the-research-software-support",[102],{"type":21,"value":103},"About the Research Software Support",{"type":15,"tag":23,"props":105,"children":106},{},[107],{"type":21,"value":108},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":110,"children":112},{"id":111},"target-audience",[113],{"type":21,"value":114},"Target audience",{"type":15,"tag":23,"props":116,"children":117},{},[118],{"type":21,"value":119},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":10,"depth":10,"links":121},[122,123],{"id":100,"depth":10,"text":103},{"id":111,"depth":10,"text":114},"local_fs:main:about.md","main/about.md",{"_path":127,"_dir":94,"_draft":6,"_partial":6,"_locale":7,"title":128,"description":7,"body":129,"_type":86,"_id":257,"_source":88,"_file":258,"_extension":90},"/main/contribute","Contribute",{"type":12,"children":130,"toc":251},[131,137,142,149,154],{"type":15,"tag":16,"props":132,"children":134},{"id":133},"contributing-to-the-research-software-support",[135],{"type":21,"value":136},"Contributing to the Research Software Support",{"type":15,"tag":23,"props":138,"children":139},{},[140],{"type":21,"value":141},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":143,"props":144,"children":146},"h3",{"id":145},"what-can-i-do",[147],{"type":21,"value":148},"What can I do?",{"type":15,"tag":23,"props":150,"children":151},{},[152],{"type":21,"value":153},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":155,"props":156,"children":157},"ul",{},[158,175,216,239],{"type":15,"tag":159,"props":160,"children":161},"li",{},[162,164,173],{"type":21,"value":163},"Contribute to the content discussion in the ",{"type":15,"tag":165,"props":166,"children":170},"a",{"href":167,"rel":168},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[169],"nofollow",[171],{"type":21,"value":172},"chapter issues",{"type":21,"value":174},", e.g. by listing good resources for information.",{"type":15,"tag":159,"props":176,"children":177},{},[178,184,186],{"type":15,"tag":165,"props":179,"children":181},{"href":180},"#elements-of-a-module",[182],{"type":21,"value":183},"Author a lesson",{"type":21,"value":185},", e.g. by:\n",{"type":15,"tag":155,"props":187,"children":188},{},[189,198,207],{"type":15,"tag":159,"props":190,"children":191},{},[192],{"type":15,"tag":165,"props":193,"children":195},{"href":194},"#slides",[196],{"type":21,"value":197},"Creating slides",{"type":15,"tag":159,"props":199,"children":200},{},[201],{"type":15,"tag":165,"props":202,"children":204},{"href":203},"#exercises",[205],{"type":21,"value":206},"Designing an exercise",{"type":15,"tag":159,"props":208,"children":209},{},[210],{"type":15,"tag":165,"props":211,"children":213},{"href":212},"#online-resources",[214],{"type":21,"value":215},"Curating online resources",{"type":15,"tag":159,"props":217,"children":218},{},[219,221,228,230,237],{"type":21,"value":220},"Review a lesson module; both by looking at ",{"type":15,"tag":165,"props":222,"children":225},{"href":223,"rel":224},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[169],[226],{"type":21,"value":227},"open PRs",{"type":21,"value":229},", as well as flagging issues for improvement in the ",{"type":15,"tag":165,"props":231,"children":234},{"href":232,"rel":233},"https://esciencecenter-digital-skills.github.io/research-software-support/",[169],[235],{"type":21,"value":236},"existing content",{"type":21,"value":238},".",{"type":15,"tag":159,"props":240,"children":241},{},[242,249],{"type":15,"tag":165,"props":243,"children":246},{"href":244,"rel":245},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[169],[247],{"type":21,"value":248},"Provide feedback",{"type":21,"value":250}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":10,"depth":10,"links":252},[253],{"id":133,"depth":10,"text":136,"children":254},[255],{"id":145,"depth":256,"text":148},3,"local_fs:main:contribute.md","main/contribute.md",1715800937988] \ No newline at end of file +[{"data":1,"prerenderedAt":259},["Reactive",2],{"content-query-cMDDDxx7ZF":3,"content-query-AT44bg6JPw":91},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":86,"_id":87,"_source":88,"_file":89,"_extension":90},"/modules/citation/introduction","citation",false,"","Citing software","reading",2,{"type":12,"children":13,"toc":83},"root",[14,22,28,39,49,59,69],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"citing-software",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":25},"p",{},[26],{"type":21,"value":27},"Software has become a crucial part of scientific research, yet it is not cited or credited as often and as easily as traditional research outputs. However, it is important to properly cite software, for many reasons, among which:",{"type":15,"tag":23,"props":29,"children":30},{},[31,37],{"type":15,"tag":32,"props":33,"children":34},"strong",{},[35],{"type":21,"value":36},"Understanding Research Fields",{"type":21,"value":38},": Software is a product of research, and by not citing it, we leave holes in the record of research of progress in those fields.",{"type":15,"tag":23,"props":40,"children":41},{},[42,47],{"type":15,"tag":32,"props":43,"children":44},{},[45],{"type":21,"value":46},"Recognition",{"type":21,"value":48},": Academic researchers at all levels, including students, postdocs, faculty, and staff, should be credited for the software products they develop and contribute to, particularly when those products enable or further research done by others. Non-academic researchers should also be credited for their software work, though the specific forms of credit are different than for academic researchers. Furthermore, citations can be tracked, which allows for more accurate assessment of the software's impact: who uses it, and what projects does it contribute to?",{"type":15,"tag":23,"props":50,"children":51},{},[52,57],{"type":15,"tag":32,"props":53,"children":54},{},[55],{"type":21,"value":56},"Discovering Software",{"type":21,"value":58},": Citations enable the specific software used in a research product to be found. Additional researchers can then use the same software for different purposes, leading to credit for those responsible for the software.",{"type":15,"tag":23,"props":60,"children":61},{},[62,67],{"type":15,"tag":32,"props":63,"children":64},{},[65],{"type":21,"value":66},"Reproducibility",{"type":21,"value":68},": Citation of specific software used is a crucial step in allowing other researchers to reproduce your results, although it is not sufficient. Additional information such as configurations and platform issues are also needed. Accurate information about the software — and its version! — used in your research is necessary for others to obtain and use the same software, making it easier to validate and build upon your research.",{"type":15,"tag":23,"props":70,"children":71},{},[72,74,81],{"type":21,"value":73},"In this module, we will further illustrate the importance of software citation, and we will demonstrate how scientific software can be cited, and how to facilitate this as the author of scientific software. Here, you will be introduced to the file type ",{"type":15,"tag":75,"props":76,"children":78},"code",{"className":77},[],[79],{"type":21,"value":80},"CITATION.cff",{"type":21,"value":82},", which was developed especially for this purpose.\n:::",{"title":7,"searchDepth":10,"depth":10,"links":84},[85],{"id":18,"depth":10,"text":8},"markdown","local_fs:modules:citation:introduction.md","local_fs","modules/citation/introduction.md","md",[92,126],{"_path":93,"_dir":94,"_draft":6,"_partial":6,"_locale":7,"title":95,"description":7,"body":96,"_type":86,"_id":124,"_source":88,"_file":125,"_extension":90},"/main/about","main","About",{"type":12,"children":97,"toc":120},[98,104,109,115],{"type":15,"tag":16,"props":99,"children":101},{"id":100},"about-the-research-software-support",[102],{"type":21,"value":103},"About the Research Software Support",{"type":15,"tag":23,"props":105,"children":106},{},[107],{"type":21,"value":108},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":110,"children":112},{"id":111},"target-audience",[113],{"type":21,"value":114},"Target audience",{"type":15,"tag":23,"props":116,"children":117},{},[118],{"type":21,"value":119},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":10,"depth":10,"links":121},[122,123],{"id":100,"depth":10,"text":103},{"id":111,"depth":10,"text":114},"local_fs:main:about.md","main/about.md",{"_path":127,"_dir":94,"_draft":6,"_partial":6,"_locale":7,"title":128,"description":7,"body":129,"_type":86,"_id":257,"_source":88,"_file":258,"_extension":90},"/main/contribute","Contribute",{"type":12,"children":130,"toc":251},[131,137,142,149,154],{"type":15,"tag":16,"props":132,"children":134},{"id":133},"contributing-to-the-research-software-support",[135],{"type":21,"value":136},"Contributing to the Research Software Support",{"type":15,"tag":23,"props":138,"children":139},{},[140],{"type":21,"value":141},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":143,"props":144,"children":146},"h3",{"id":145},"what-can-i-do",[147],{"type":21,"value":148},"What can I do?",{"type":15,"tag":23,"props":150,"children":151},{},[152],{"type":21,"value":153},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":155,"props":156,"children":157},"ul",{},[158,175,216,239],{"type":15,"tag":159,"props":160,"children":161},"li",{},[162,164,173],{"type":21,"value":163},"Contribute to the content discussion in the ",{"type":15,"tag":165,"props":166,"children":170},"a",{"href":167,"rel":168},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[169],"nofollow",[171],{"type":21,"value":172},"chapter issues",{"type":21,"value":174},", e.g. by listing good resources for information.",{"type":15,"tag":159,"props":176,"children":177},{},[178,184,186],{"type":15,"tag":165,"props":179,"children":181},{"href":180},"#elements-of-a-module",[182],{"type":21,"value":183},"Author a lesson",{"type":21,"value":185},", e.g. by:\n",{"type":15,"tag":155,"props":187,"children":188},{},[189,198,207],{"type":15,"tag":159,"props":190,"children":191},{},[192],{"type":15,"tag":165,"props":193,"children":195},{"href":194},"#slides",[196],{"type":21,"value":197},"Creating slides",{"type":15,"tag":159,"props":199,"children":200},{},[201],{"type":15,"tag":165,"props":202,"children":204},{"href":203},"#exercises",[205],{"type":21,"value":206},"Designing an exercise",{"type":15,"tag":159,"props":208,"children":209},{},[210],{"type":15,"tag":165,"props":211,"children":213},{"href":212},"#online-resources",[214],{"type":21,"value":215},"Curating online resources",{"type":15,"tag":159,"props":217,"children":218},{},[219,221,228,230,237],{"type":21,"value":220},"Review a lesson module; both by looking at ",{"type":15,"tag":165,"props":222,"children":225},{"href":223,"rel":224},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[169],[226],{"type":21,"value":227},"open PRs",{"type":21,"value":229},", as well as flagging issues for improvement in the ",{"type":15,"tag":165,"props":231,"children":234},{"href":232,"rel":233},"https://esciencecenter-digital-skills.github.io/research-software-support/",[169],[235],{"type":21,"value":236},"existing content",{"type":21,"value":238},".",{"type":15,"tag":159,"props":240,"children":241},{},[242,249],{"type":15,"tag":165,"props":243,"children":246},{"href":244,"rel":245},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[169],[247],{"type":21,"value":248},"Provide feedback",{"type":21,"value":250}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":10,"depth":10,"links":252},[253],{"id":133,"depth":10,"text":136,"children":254},[255],{"id":145,"depth":256,"text":148},3,"local_fs:main:contribute.md","main/contribute.md",1715801015173] \ No newline at end of file diff --git a/modules/citation/introduction/index.html b/modules/citation/introduction/index.html index 893132bc..248efb65 100644 --- a/modules/citation/introduction/index.html +++ b/modules/citation/introduction/index.html @@ -2,7 +2,7 @@ Citing software - + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - + + -

    Module: citation

    Citing software

    Software has become a crucial part of scientific research, yet it is not cited or credited as often and as easily as traditional research outputs. However, it is important to properly cite software, for many reasons, among which:

    Understanding Research Fields: Software is a product of research, and by not citing it, we leave holes in the record of research of progress in those fields.

    Recognition: Academic researchers at all levels, including students, postdocs, faculty, and staff, should be credited for the software products they develop and contribute to, particularly when those products enable or further research done by others. Non-academic researchers should also be credited for their software work, though the specific forms of credit are different than for academic researchers. Furthermore, citations can be tracked, which allows for more accurate assessment of the software's impact: who uses it, and what projects does it contribute to?

    Discovering Software: Citations enable the specific software used in a research product to be found. Additional researchers can then use the same software for different purposes, leading to credit for those responsible for the software.

    Reproducibility: Citation of specific software used is a crucial step in allowing other researchers to reproduce your results, although it is not sufficient. Additional information such as configurations and platform issues are also needed. Accurate information about the software — and its version! — used in your research is necessary for others to obtain and use the same software, making it easier to validate and build upon your research.

    In this module, we will further illustrate the importance of software citation, and we will demonstrate how scientific software can be cited, and how to facilitate this as the author of scientific software. Here, you will be introduced to the file type CITATION.cff, which was developed especially for this purpose. -:::

    - \ No newline at end of file +

    Module: citation

    Citing software

    Software has become a crucial part of scientific research, yet it is not cited or credited as often and as easily as traditional research outputs. However, it is important to properly cite software, for many reasons, among which:

    Understanding Research Fields: Software is a product of research, and by not citing it, we leave holes in the record of research of progress in those fields.

    Recognition: Academic researchers at all levels, including students, postdocs, faculty, and staff, should be credited for the software products they develop and contribute to, particularly when those products enable or further research done by others. Non-academic researchers should also be credited for their software work, though the specific forms of credit are different than for academic researchers. Furthermore, citations can be tracked, which allows for more accurate assessment of the software's impact: who uses it, and what projects does it contribute to?

    Discovering Software: Citations enable the specific software used in a research product to be found. Additional researchers can then use the same software for different purposes, leading to credit for those responsible for the software.

    Reproducibility: Citation of specific software used is a crucial step in allowing other researchers to reproduce your results, although it is not sufficient. Additional information such as configurations and platform issues are also needed. Accurate information about the software — and its version! — used in your research is necessary for others to obtain and use the same software, making it easier to validate and build upon your research.

    In this module, we will further illustrate the importance of software citation, and we will demonstrate how scientific software can be cited, and how to facilitate this as the author of scientific software. Here, you will be introduced to the file type CITATION.cff, which was developed especially for this purpose. +:::

    + \ No newline at end of file diff --git a/modules/citation/principles/_payload.json b/modules/citation/principles/_payload.json index 4e37c9eb..4fe7e6f1 100644 --- a/modules/citation/principles/_payload.json +++ b/modules/citation/principles/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":276},["Reactive",2],{"content-query-tqMUTmDUcL":3,"content-query-AT44bg6JPw":112},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":107,"_id":108,"_source":109,"_file":110,"_extension":111},"/modules/citation/principles","citation",false,"","The principles","reading",3,{"type":12,"children":13,"toc":100},"root",[14,32,38,50,60,70,80,90],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"the-force11-working-group-published-the-software-citation-principles",[20,23],{"type":21,"value":22},"text","The FORCE11 working group published the ",{"type":15,"tag":24,"props":25,"children":29},"a",{"href":26,"rel":27},"https://force11.org/info/software-citation-principles-published-2016/",[28],"nofollow",[30],{"type":21,"value":31},"Software Citation Principles",{"type":15,"tag":33,"props":34,"children":36},"h3",{"id":35},"the-principles",[37],{"type":21,"value":8},{"type":15,"tag":39,"props":40,"children":41},"p",{},[42,48],{"type":15,"tag":43,"props":44,"children":45},"strong",{},[46],{"type":21,"value":47},"Importance",{"type":21,"value":49},": Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers.",{"type":15,"tag":39,"props":51,"children":52},{},[53,58],{"type":15,"tag":43,"props":54,"children":55},{},[56],{"type":21,"value":57},"Credit and Attribution",{"type":21,"value":59},": Software citations should facilitate giving scholarly credit and normative, legal attribution to all contributors to the software, recognizing that a single style or mechanism of attribution may not be applicable to all software.",{"type":15,"tag":39,"props":61,"children":62},{},[63,68],{"type":15,"tag":43,"props":64,"children":65},{},[66],{"type":21,"value":67},"Unique Identification",{"type":21,"value":69},": A software citation should include a method for identification that is machine actionable, globally unique, interoperable, and recognized by at least a community of the corresponding domain experts, and preferably by general public researchers.",{"type":15,"tag":39,"props":71,"children":72},{},[73,78],{"type":15,"tag":43,"props":74,"children":75},{},[76],{"type":21,"value":77},"Persistence",{"type":21,"value":79},": Unique identifiers and metadata describing the software and its disposition should persist – even beyond the lifespan of the software they describe.",{"type":15,"tag":39,"props":81,"children":82},{},[83,88],{"type":15,"tag":43,"props":84,"children":85},{},[86],{"type":21,"value":87},"Accessibility",{"type":21,"value":89},": Software citations should facilitate access to the software itself and to its associated metadata, documentation, data, and other materials necessary for both humans and machines to make informed use of the referenced software.",{"type":15,"tag":39,"props":91,"children":92},{},[93,98],{"type":15,"tag":43,"props":94,"children":95},{},[96],{"type":21,"value":97},"Specificity",{"type":21,"value":99},": Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms.",{"title":7,"searchDepth":101,"depth":101,"links":102},2,[103],{"id":18,"depth":101,"text":104,"children":105},"The FORCE11 working group published the Software Citation Principles",[106],{"id":35,"depth":10,"text":8},"markdown","local_fs:modules:citation:principles.md","local_fs","modules/citation/principles.md","md",[113,147],{"_path":114,"_dir":115,"_draft":6,"_partial":6,"_locale":7,"title":116,"description":7,"body":117,"_type":107,"_id":145,"_source":109,"_file":146,"_extension":111},"/main/about","main","About",{"type":12,"children":118,"toc":141},[119,125,130,136],{"type":15,"tag":16,"props":120,"children":122},{"id":121},"about-the-research-software-support",[123],{"type":21,"value":124},"About the Research Software Support",{"type":15,"tag":39,"props":126,"children":127},{},[128],{"type":21,"value":129},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":131,"children":133},{"id":132},"target-audience",[134],{"type":21,"value":135},"Target audience",{"type":15,"tag":39,"props":137,"children":138},{},[139],{"type":21,"value":140},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":101,"depth":101,"links":142},[143,144],{"id":121,"depth":101,"text":124},{"id":132,"depth":101,"text":135},"local_fs:main:about.md","main/about.md",{"_path":148,"_dir":115,"_draft":6,"_partial":6,"_locale":7,"title":149,"description":7,"body":150,"_type":107,"_id":274,"_source":109,"_file":275,"_extension":111},"/main/contribute","Contribute",{"type":12,"children":151,"toc":269},[152,158,163,169,174],{"type":15,"tag":16,"props":153,"children":155},{"id":154},"contributing-to-the-research-software-support",[156],{"type":21,"value":157},"Contributing to the Research Software Support",{"type":15,"tag":39,"props":159,"children":160},{},[161],{"type":21,"value":162},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":33,"props":164,"children":166},{"id":165},"what-can-i-do",[167],{"type":21,"value":168},"What can I do?",{"type":15,"tag":39,"props":170,"children":171},{},[172],{"type":21,"value":173},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":175,"props":176,"children":177},"ul",{},[178,193,234,257],{"type":15,"tag":179,"props":180,"children":181},"li",{},[182,184,191],{"type":21,"value":183},"Contribute to the content discussion in the ",{"type":15,"tag":24,"props":185,"children":188},{"href":186,"rel":187},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[28],[189],{"type":21,"value":190},"chapter issues",{"type":21,"value":192},", e.g. by listing good resources for information.",{"type":15,"tag":179,"props":194,"children":195},{},[196,202,204],{"type":15,"tag":24,"props":197,"children":199},{"href":198},"#elements-of-a-module",[200],{"type":21,"value":201},"Author a lesson",{"type":21,"value":203},", e.g. by:\n",{"type":15,"tag":175,"props":205,"children":206},{},[207,216,225],{"type":15,"tag":179,"props":208,"children":209},{},[210],{"type":15,"tag":24,"props":211,"children":213},{"href":212},"#slides",[214],{"type":21,"value":215},"Creating slides",{"type":15,"tag":179,"props":217,"children":218},{},[219],{"type":15,"tag":24,"props":220,"children":222},{"href":221},"#exercises",[223],{"type":21,"value":224},"Designing an exercise",{"type":15,"tag":179,"props":226,"children":227},{},[228],{"type":15,"tag":24,"props":229,"children":231},{"href":230},"#online-resources",[232],{"type":21,"value":233},"Curating online resources",{"type":15,"tag":179,"props":235,"children":236},{},[237,239,246,248,255],{"type":21,"value":238},"Review a lesson module; both by looking at ",{"type":15,"tag":24,"props":240,"children":243},{"href":241,"rel":242},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[28],[244],{"type":21,"value":245},"open PRs",{"type":21,"value":247},", as well as flagging issues for improvement in the ",{"type":15,"tag":24,"props":249,"children":252},{"href":250,"rel":251},"https://esciencecenter-digital-skills.github.io/research-software-support/",[28],[253],{"type":21,"value":254},"existing content",{"type":21,"value":256},".",{"type":15,"tag":179,"props":258,"children":259},{},[260,267],{"type":15,"tag":24,"props":261,"children":264},{"href":262,"rel":263},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[28],[265],{"type":21,"value":266},"Provide feedback",{"type":21,"value":268}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":101,"depth":101,"links":270},[271],{"id":154,"depth":101,"text":157,"children":272},[273],{"id":165,"depth":10,"text":168},"local_fs:main:contribute.md","main/contribute.md",1715800937994] \ No newline at end of file +[{"data":1,"prerenderedAt":276},["Reactive",2],{"content-query-tqMUTmDUcL":3,"content-query-AT44bg6JPw":112},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":107,"_id":108,"_source":109,"_file":110,"_extension":111},"/modules/citation/principles","citation",false,"","The principles","reading",3,{"type":12,"children":13,"toc":100},"root",[14,32,38,50,60,70,80,90],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"the-force11-working-group-published-the-software-citation-principles",[20,23],{"type":21,"value":22},"text","The FORCE11 working group published the ",{"type":15,"tag":24,"props":25,"children":29},"a",{"href":26,"rel":27},"https://force11.org/info/software-citation-principles-published-2016/",[28],"nofollow",[30],{"type":21,"value":31},"Software Citation Principles",{"type":15,"tag":33,"props":34,"children":36},"h3",{"id":35},"the-principles",[37],{"type":21,"value":8},{"type":15,"tag":39,"props":40,"children":41},"p",{},[42,48],{"type":15,"tag":43,"props":44,"children":45},"strong",{},[46],{"type":21,"value":47},"Importance",{"type":21,"value":49},": Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers.",{"type":15,"tag":39,"props":51,"children":52},{},[53,58],{"type":15,"tag":43,"props":54,"children":55},{},[56],{"type":21,"value":57},"Credit and Attribution",{"type":21,"value":59},": Software citations should facilitate giving scholarly credit and normative, legal attribution to all contributors to the software, recognizing that a single style or mechanism of attribution may not be applicable to all software.",{"type":15,"tag":39,"props":61,"children":62},{},[63,68],{"type":15,"tag":43,"props":64,"children":65},{},[66],{"type":21,"value":67},"Unique Identification",{"type":21,"value":69},": A software citation should include a method for identification that is machine actionable, globally unique, interoperable, and recognized by at least a community of the corresponding domain experts, and preferably by general public researchers.",{"type":15,"tag":39,"props":71,"children":72},{},[73,78],{"type":15,"tag":43,"props":74,"children":75},{},[76],{"type":21,"value":77},"Persistence",{"type":21,"value":79},": Unique identifiers and metadata describing the software and its disposition should persist – even beyond the lifespan of the software they describe.",{"type":15,"tag":39,"props":81,"children":82},{},[83,88],{"type":15,"tag":43,"props":84,"children":85},{},[86],{"type":21,"value":87},"Accessibility",{"type":21,"value":89},": Software citations should facilitate access to the software itself and to its associated metadata, documentation, data, and other materials necessary for both humans and machines to make informed use of the referenced software.",{"type":15,"tag":39,"props":91,"children":92},{},[93,98],{"type":15,"tag":43,"props":94,"children":95},{},[96],{"type":21,"value":97},"Specificity",{"type":21,"value":99},": Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms.",{"title":7,"searchDepth":101,"depth":101,"links":102},2,[103],{"id":18,"depth":101,"text":104,"children":105},"The FORCE11 working group published the Software Citation Principles",[106],{"id":35,"depth":10,"text":8},"markdown","local_fs:modules:citation:principles.md","local_fs","modules/citation/principles.md","md",[113,147],{"_path":114,"_dir":115,"_draft":6,"_partial":6,"_locale":7,"title":116,"description":7,"body":117,"_type":107,"_id":145,"_source":109,"_file":146,"_extension":111},"/main/about","main","About",{"type":12,"children":118,"toc":141},[119,125,130,136],{"type":15,"tag":16,"props":120,"children":122},{"id":121},"about-the-research-software-support",[123],{"type":21,"value":124},"About the Research Software Support",{"type":15,"tag":39,"props":126,"children":127},{},[128],{"type":21,"value":129},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":131,"children":133},{"id":132},"target-audience",[134],{"type":21,"value":135},"Target audience",{"type":15,"tag":39,"props":137,"children":138},{},[139],{"type":21,"value":140},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":101,"depth":101,"links":142},[143,144],{"id":121,"depth":101,"text":124},{"id":132,"depth":101,"text":135},"local_fs:main:about.md","main/about.md",{"_path":148,"_dir":115,"_draft":6,"_partial":6,"_locale":7,"title":149,"description":7,"body":150,"_type":107,"_id":274,"_source":109,"_file":275,"_extension":111},"/main/contribute","Contribute",{"type":12,"children":151,"toc":269},[152,158,163,169,174],{"type":15,"tag":16,"props":153,"children":155},{"id":154},"contributing-to-the-research-software-support",[156],{"type":21,"value":157},"Contributing to the Research Software Support",{"type":15,"tag":39,"props":159,"children":160},{},[161],{"type":21,"value":162},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":33,"props":164,"children":166},{"id":165},"what-can-i-do",[167],{"type":21,"value":168},"What can I do?",{"type":15,"tag":39,"props":170,"children":171},{},[172],{"type":21,"value":173},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":175,"props":176,"children":177},"ul",{},[178,193,234,257],{"type":15,"tag":179,"props":180,"children":181},"li",{},[182,184,191],{"type":21,"value":183},"Contribute to the content discussion in the ",{"type":15,"tag":24,"props":185,"children":188},{"href":186,"rel":187},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[28],[189],{"type":21,"value":190},"chapter issues",{"type":21,"value":192},", e.g. by listing good resources for information.",{"type":15,"tag":179,"props":194,"children":195},{},[196,202,204],{"type":15,"tag":24,"props":197,"children":199},{"href":198},"#elements-of-a-module",[200],{"type":21,"value":201},"Author a lesson",{"type":21,"value":203},", e.g. by:\n",{"type":15,"tag":175,"props":205,"children":206},{},[207,216,225],{"type":15,"tag":179,"props":208,"children":209},{},[210],{"type":15,"tag":24,"props":211,"children":213},{"href":212},"#slides",[214],{"type":21,"value":215},"Creating slides",{"type":15,"tag":179,"props":217,"children":218},{},[219],{"type":15,"tag":24,"props":220,"children":222},{"href":221},"#exercises",[223],{"type":21,"value":224},"Designing an exercise",{"type":15,"tag":179,"props":226,"children":227},{},[228],{"type":15,"tag":24,"props":229,"children":231},{"href":230},"#online-resources",[232],{"type":21,"value":233},"Curating online resources",{"type":15,"tag":179,"props":235,"children":236},{},[237,239,246,248,255],{"type":21,"value":238},"Review a lesson module; both by looking at ",{"type":15,"tag":24,"props":240,"children":243},{"href":241,"rel":242},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[28],[244],{"type":21,"value":245},"open PRs",{"type":21,"value":247},", as well as flagging issues for improvement in the ",{"type":15,"tag":24,"props":249,"children":252},{"href":250,"rel":251},"https://esciencecenter-digital-skills.github.io/research-software-support/",[28],[253],{"type":21,"value":254},"existing content",{"type":21,"value":256},".",{"type":15,"tag":179,"props":258,"children":259},{},[260,267],{"type":15,"tag":24,"props":261,"children":264},{"href":262,"rel":263},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[28],[265],{"type":21,"value":266},"Provide feedback",{"type":21,"value":268}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":101,"depth":101,"links":270},[271],{"id":154,"depth":101,"text":157,"children":272},[273],{"id":165,"depth":10,"text":168},"local_fs:main:contribute.md","main/contribute.md",1715801015182] \ No newline at end of file diff --git a/modules/citation/principles/index.html b/modules/citation/principles/index.html index 20c6f64b..ee8a3b24 100644 --- a/modules/citation/principles/index.html +++ b/modules/citation/principles/index.html @@ -2,7 +2,7 @@ The principles - + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - - + + -

    Module: citation

    The FORCE11 working group published the Software Citation Principles

    The principles

    Importance: Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers.

    Credit and Attribution: Software citations should facilitate giving scholarly credit and normative, legal attribution to all contributors to the software, recognizing that a single style or mechanism of attribution may not be applicable to all software.

    Unique Identification: A software citation should include a method for identification that is machine actionable, globally unique, interoperable, and recognized by at least a community of the corresponding domain experts, and preferably by general public researchers.

    Persistence: Unique identifiers and metadata describing the software and its disposition should persist – even beyond the lifespan of the software they describe.

    Accessibility: Software citations should facilitate access to the software itself and to its associated metadata, documentation, data, and other materials necessary for both humans and machines to make informed use of the referenced software.

    Specificity: Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms.

    - \ No newline at end of file +

    Module: citation

    The FORCE11 working group published the Software Citation Principles

    The principles

    Importance: Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers.

    Credit and Attribution: Software citations should facilitate giving scholarly credit and normative, legal attribution to all contributors to the software, recognizing that a single style or mechanism of attribution may not be applicable to all software.

    Unique Identification: A software citation should include a method for identification that is machine actionable, globally unique, interoperable, and recognized by at least a community of the corresponding domain experts, and preferably by general public researchers.

    Persistence: Unique identifiers and metadata describing the software and its disposition should persist – even beyond the lifespan of the software they describe.

    Accessibility: Software citations should facilitate access to the software itself and to its associated metadata, documentation, data, and other materials necessary for both humans and machines to make informed use of the referenced software.

    Specificity: Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms.

    + \ No newline at end of file diff --git a/modules/citation/slides-citation/_payload.json b/modules/citation/slides-citation/_payload.json index fb99394c..42767305 100644 --- a/modules/citation/slides-citation/_payload.json +++ b/modules/citation/slides-citation/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":477},["Reactive",2],{"content-query-9wbAAmFuGv":3,"content-query-AT44bg6JPw":312},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":307,"_id":308,"_source":309,"_file":310,"_extension":311},"/modules/citation/slides-citation","citation",false,"","Software Citation","slides",1,{"type":12,"children":13,"toc":298},"root",[14,19,26,29,36,66,72,82,92,101,110,113,119,152,156,165,175,184,193,202,211,214,220,229,234,237,243,246,257,260,269,272,284,293],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h1",{"id":22},"software-citation",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":30,"props":31,"children":33},"h2",{"id":32},"why-would-you-cite-software",[34],{"type":25,"value":35},"Why would you cite software?",{"type":15,"tag":37,"props":38,"children":39},"ul",{},[40,46,51,56,61],{"type":15,"tag":41,"props":42,"children":43},"li",{},[44],{"type":25,"value":45},"Understanding Research Fields",{"type":15,"tag":41,"props":47,"children":48},{},[49],{"type":25,"value":50},"Credit for the researcher",{"type":15,"tag":41,"props":52,"children":53},{},[54],{"type":25,"value":55},"Recognition of the software",{"type":15,"tag":41,"props":57,"children":58},{},[59],{"type":25,"value":60},"Discovering Software",{"type":15,"tag":41,"props":62,"children":63},{},[64],{"type":25,"value":65},"Reproducibility",{"type":15,"tag":67,"props":68,"children":69},"p",{},[70],{"type":25,"value":71},"Note:",{"type":15,"tag":67,"props":73,"children":74},{},[75,80],{"type":15,"tag":76,"props":77,"children":78},"strong",{},[79],{"type":25,"value":45},{"type":25,"value":81},": Software is a product of research, and by not citing it, we leave holes in the record of research of progress in those fields.",{"type":15,"tag":67,"props":83,"children":84},{},[85,90],{"type":15,"tag":76,"props":86,"children":87},{},[88],{"type":25,"value":89},"Credit",{"type":25,"value":91},": Academic researchers at all levels, including students, postdocs, faculty, and staff, should be credited for the software products they develop and contribute to, particularly when those products enable or further research done by others. Non-academic researchers should also be credited for their software work, though the specific forms of credit are different than for academic researchers.",{"type":15,"tag":67,"props":93,"children":94},{},[95,99],{"type":15,"tag":76,"props":96,"children":97},{},[98],{"type":25,"value":60},{"type":25,"value":100},": Citations enable the specific software used in a research product to be found. Additional researchers can then use the same software for different purposes, leading to credit for those responsible for the software.",{"type":15,"tag":67,"props":102,"children":103},{},[104,108],{"type":15,"tag":76,"props":105,"children":106},{},[107],{"type":25,"value":65},{"type":25,"value":109},": Citation of specific software used is necessary for reproducibility, although not sufficient. Additional information such as configurations and platform issues are also needed.",{"type":15,"tag":16,"props":111,"children":112},{},[],{"type":15,"tag":30,"props":114,"children":116},{"id":115},"the-software-citation-principles",[117],{"type":25,"value":118},"The software citation principles",{"type":15,"tag":37,"props":120,"children":121},{},[122,127,132,137,142,147],{"type":15,"tag":41,"props":123,"children":124},{},[125],{"type":25,"value":126},"Importance",{"type":15,"tag":41,"props":128,"children":129},{},[130],{"type":25,"value":131},"Credit and attribution",{"type":15,"tag":41,"props":133,"children":134},{},[135],{"type":25,"value":136},"Unique Identification",{"type":15,"tag":41,"props":138,"children":139},{},[140],{"type":25,"value":141},"Persistence",{"type":15,"tag":41,"props":143,"children":144},{},[145],{"type":25,"value":146},"Accessibility",{"type":15,"tag":41,"props":148,"children":149},{},[150],{"type":25,"value":151},"Specificity",{"type":15,"tag":67,"props":153,"children":154},{},[155],{"type":25,"value":71},{"type":15,"tag":67,"props":157,"children":158},{},[159,163],{"type":15,"tag":76,"props":160,"children":161},{},[162],{"type":25,"value":126},{"type":25,"value":164},": Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers.",{"type":15,"tag":67,"props":166,"children":167},{},[168,173],{"type":15,"tag":76,"props":169,"children":170},{},[171],{"type":25,"value":172},"Credit and Attribution",{"type":25,"value":174},": Software citations should facilitate giving scholarly credit and normative, legal attribution to all contributors to the software, recognizing that a single style or mechanism of attribution may not be applicable to all software.",{"type":15,"tag":67,"props":176,"children":177},{},[178,182],{"type":15,"tag":76,"props":179,"children":180},{},[181],{"type":25,"value":136},{"type":25,"value":183},": A software citation should include a method for identification that is machine actionable, globally unique, interoperable, and recognized by at least a community of the corresponding domain experts, and preferably by general public researchers.",{"type":15,"tag":67,"props":185,"children":186},{},[187,191],{"type":15,"tag":76,"props":188,"children":189},{},[190],{"type":25,"value":141},{"type":25,"value":192},": Unique identifiers and metadata describing the software and its disposition should persist – even beyond the lifespan of the software they describe.",{"type":15,"tag":67,"props":194,"children":195},{},[196,200],{"type":15,"tag":76,"props":197,"children":198},{},[199],{"type":25,"value":146},{"type":25,"value":201},": Software citations should facilitate access to the software itself and to its associated metadata, documentation, data, and other materials necessary for both humans and machines to make informed use of the referenced software.",{"type":15,"tag":67,"props":203,"children":204},{},[205,209],{"type":15,"tag":76,"props":206,"children":207},{},[208],{"type":25,"value":151},{"type":25,"value":210},": Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms.",{"type":15,"tag":16,"props":212,"children":213},{},[],{"type":15,"tag":30,"props":215,"children":217},{"id":216},"what-software-to-cite",[218],{"type":25,"value":219},"What software to cite?",{"type":15,"tag":67,"props":221,"children":222},{},[223],{"type":15,"tag":224,"props":225,"children":226},"em",{},[227],{"type":25,"value":228},"\"\"...the software itself should be cited on the same basis as any other research product; authors should cite the appropriate set of software products.\"",{"type":15,"tag":67,"props":230,"children":231},{},[232],{"type":25,"value":233},"Which software would you cite?",{"type":15,"tag":16,"props":235,"children":236},{},[],{"type":15,"tag":30,"props":238,"children":240},{"id":239},"how-to-make-your-software-citable",[241],{"type":25,"value":242},"How to make your software citable?",{"type":15,"tag":30,"props":244,"children":245},{"id":7},[],{"type":15,"tag":30,"props":247,"children":249},{"id":248},"citationcff",[250],{"type":15,"tag":251,"props":252,"children":254},"code",{"className":253},[],[255],{"type":25,"value":256},"CITATION.cff",{"type":15,"tag":16,"props":258,"children":259},{},[],{"type":15,"tag":261,"props":262,"children":264},"pre",{"code":263},"cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n - family-names: Druskat\n given-names: Stephan\n orcid: https://orcid.org/1234-5678-9101-1121\ntitle: \"My Research Software\"\nversion: 2.0.4\nidentifiers:\n - type: doi\n value: 10.5281/zenodo.1234\ndate-released: 2021-08-11\n",[265],{"type":15,"tag":251,"props":266,"children":267},{"__ignoreMap":7},[268],{"type":25,"value":263},{"type":15,"tag":16,"props":270,"children":271},{},[],{"type":15,"tag":67,"props":273,"children":274},{},[275],{"type":15,"tag":276,"props":277,"children":281},"a",{"href":278,"rel":279},"http://www.esciencecenter.nl",[280],"nofollow",[282],{"type":25,"value":283},"www.esciencecenter.nl",{"type":15,"tag":67,"props":285,"children":286},{},[287],{"type":15,"tag":276,"props":288,"children":290},{"href":289},"mailto:info@esciencecenter.nl",[291],{"type":25,"value":292},"info@esciencecenter.nl",{"type":15,"tag":67,"props":294,"children":295},{},[296],{"type":25,"value":297},"020 - 460 47 70",{"title":7,"searchDepth":299,"depth":299,"links":300},2,[301,302,303,304,305,306],{"id":32,"depth":299,"text":35},{"id":115,"depth":299,"text":118},{"id":216,"depth":299,"text":219},{"id":239,"depth":299,"text":242},{"id":7,"depth":299,"text":7},{"id":248,"depth":299,"text":256},"markdown","local_fs:modules:citation:slides-citation.pmd","local_fs","modules/citation/slides-citation.pmd","pmd",[313,348],{"_path":314,"_dir":315,"_draft":6,"_partial":6,"_locale":7,"title":316,"description":7,"body":317,"_type":307,"_id":345,"_source":309,"_file":346,"_extension":347},"/main/about","main","About",{"type":12,"children":318,"toc":341},[319,325,330,336],{"type":15,"tag":30,"props":320,"children":322},{"id":321},"about-the-research-software-support",[323],{"type":25,"value":324},"About the Research Software Support",{"type":15,"tag":67,"props":326,"children":327},{},[328],{"type":25,"value":329},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":30,"props":331,"children":333},{"id":332},"target-audience",[334],{"type":25,"value":335},"Target audience",{"type":15,"tag":67,"props":337,"children":338},{},[339],{"type":25,"value":340},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":299,"depth":299,"links":342},[343,344],{"id":321,"depth":299,"text":324},{"id":332,"depth":299,"text":335},"local_fs:main:about.md","main/about.md","md",{"_path":349,"_dir":315,"_draft":6,"_partial":6,"_locale":7,"title":350,"description":7,"body":351,"_type":307,"_id":475,"_source":309,"_file":476,"_extension":347},"/main/contribute","Contribute",{"type":12,"children":352,"toc":469},[353,359,364,371,376],{"type":15,"tag":30,"props":354,"children":356},{"id":355},"contributing-to-the-research-software-support",[357],{"type":25,"value":358},"Contributing to the Research Software Support",{"type":15,"tag":67,"props":360,"children":361},{},[362],{"type":25,"value":363},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":365,"props":366,"children":368},"h3",{"id":367},"what-can-i-do",[369],{"type":25,"value":370},"What can I do?",{"type":15,"tag":67,"props":372,"children":373},{},[374],{"type":25,"value":375},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":37,"props":377,"children":378},{},[379,393,434,457],{"type":15,"tag":41,"props":380,"children":381},{},[382,384,391],{"type":25,"value":383},"Contribute to the content discussion in the ",{"type":15,"tag":276,"props":385,"children":388},{"href":386,"rel":387},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[280],[389],{"type":25,"value":390},"chapter issues",{"type":25,"value":392},", e.g. by listing good resources for information.",{"type":15,"tag":41,"props":394,"children":395},{},[396,402,404],{"type":15,"tag":276,"props":397,"children":399},{"href":398},"#elements-of-a-module",[400],{"type":25,"value":401},"Author a lesson",{"type":25,"value":403},", e.g. by:\n",{"type":15,"tag":37,"props":405,"children":406},{},[407,416,425],{"type":15,"tag":41,"props":408,"children":409},{},[410],{"type":15,"tag":276,"props":411,"children":413},{"href":412},"#slides",[414],{"type":25,"value":415},"Creating slides",{"type":15,"tag":41,"props":417,"children":418},{},[419],{"type":15,"tag":276,"props":420,"children":422},{"href":421},"#exercises",[423],{"type":25,"value":424},"Designing an exercise",{"type":15,"tag":41,"props":426,"children":427},{},[428],{"type":15,"tag":276,"props":429,"children":431},{"href":430},"#online-resources",[432],{"type":25,"value":433},"Curating online resources",{"type":15,"tag":41,"props":435,"children":436},{},[437,439,446,448,455],{"type":25,"value":438},"Review a lesson module; both by looking at ",{"type":15,"tag":276,"props":440,"children":443},{"href":441,"rel":442},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[280],[444],{"type":25,"value":445},"open PRs",{"type":25,"value":447},", as well as flagging issues for improvement in the ",{"type":15,"tag":276,"props":449,"children":452},{"href":450,"rel":451},"https://esciencecenter-digital-skills.github.io/research-software-support/",[280],[453],{"type":25,"value":454},"existing content",{"type":25,"value":456},".",{"type":15,"tag":41,"props":458,"children":459},{},[460,467],{"type":15,"tag":276,"props":461,"children":464},{"href":462,"rel":463},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[280],[465],{"type":25,"value":466},"Provide feedback",{"type":25,"value":468}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":299,"depth":299,"links":470},[471],{"id":355,"depth":299,"text":358,"children":472},[473],{"id":367,"depth":474,"text":370},3,"local_fs:main:contribute.md","main/contribute.md",1715800937981] \ No newline at end of file +[{"data":1,"prerenderedAt":477},["Reactive",2],{"content-query-9wbAAmFuGv":3,"content-query-AT44bg6JPw":312},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":307,"_id":308,"_source":309,"_file":310,"_extension":311},"/modules/citation/slides-citation","citation",false,"","Software Citation","slides",1,{"type":12,"children":13,"toc":298},"root",[14,19,26,29,36,66,72,82,92,101,110,113,119,152,156,165,175,184,193,202,211,214,220,229,234,237,243,246,257,260,269,272,284,293],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h1",{"id":22},"software-citation",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":30,"props":31,"children":33},"h2",{"id":32},"why-would-you-cite-software",[34],{"type":25,"value":35},"Why would you cite software?",{"type":15,"tag":37,"props":38,"children":39},"ul",{},[40,46,51,56,61],{"type":15,"tag":41,"props":42,"children":43},"li",{},[44],{"type":25,"value":45},"Understanding Research Fields",{"type":15,"tag":41,"props":47,"children":48},{},[49],{"type":25,"value":50},"Credit for the researcher",{"type":15,"tag":41,"props":52,"children":53},{},[54],{"type":25,"value":55},"Recognition of the software",{"type":15,"tag":41,"props":57,"children":58},{},[59],{"type":25,"value":60},"Discovering Software",{"type":15,"tag":41,"props":62,"children":63},{},[64],{"type":25,"value":65},"Reproducibility",{"type":15,"tag":67,"props":68,"children":69},"p",{},[70],{"type":25,"value":71},"Note:",{"type":15,"tag":67,"props":73,"children":74},{},[75,80],{"type":15,"tag":76,"props":77,"children":78},"strong",{},[79],{"type":25,"value":45},{"type":25,"value":81},": Software is a product of research, and by not citing it, we leave holes in the record of research of progress in those fields.",{"type":15,"tag":67,"props":83,"children":84},{},[85,90],{"type":15,"tag":76,"props":86,"children":87},{},[88],{"type":25,"value":89},"Credit",{"type":25,"value":91},": Academic researchers at all levels, including students, postdocs, faculty, and staff, should be credited for the software products they develop and contribute to, particularly when those products enable or further research done by others. Non-academic researchers should also be credited for their software work, though the specific forms of credit are different than for academic researchers.",{"type":15,"tag":67,"props":93,"children":94},{},[95,99],{"type":15,"tag":76,"props":96,"children":97},{},[98],{"type":25,"value":60},{"type":25,"value":100},": Citations enable the specific software used in a research product to be found. Additional researchers can then use the same software for different purposes, leading to credit for those responsible for the software.",{"type":15,"tag":67,"props":102,"children":103},{},[104,108],{"type":15,"tag":76,"props":105,"children":106},{},[107],{"type":25,"value":65},{"type":25,"value":109},": Citation of specific software used is necessary for reproducibility, although not sufficient. Additional information such as configurations and platform issues are also needed.",{"type":15,"tag":16,"props":111,"children":112},{},[],{"type":15,"tag":30,"props":114,"children":116},{"id":115},"the-software-citation-principles",[117],{"type":25,"value":118},"The software citation principles",{"type":15,"tag":37,"props":120,"children":121},{},[122,127,132,137,142,147],{"type":15,"tag":41,"props":123,"children":124},{},[125],{"type":25,"value":126},"Importance",{"type":15,"tag":41,"props":128,"children":129},{},[130],{"type":25,"value":131},"Credit and attribution",{"type":15,"tag":41,"props":133,"children":134},{},[135],{"type":25,"value":136},"Unique Identification",{"type":15,"tag":41,"props":138,"children":139},{},[140],{"type":25,"value":141},"Persistence",{"type":15,"tag":41,"props":143,"children":144},{},[145],{"type":25,"value":146},"Accessibility",{"type":15,"tag":41,"props":148,"children":149},{},[150],{"type":25,"value":151},"Specificity",{"type":15,"tag":67,"props":153,"children":154},{},[155],{"type":25,"value":71},{"type":15,"tag":67,"props":157,"children":158},{},[159,163],{"type":15,"tag":76,"props":160,"children":161},{},[162],{"type":25,"value":126},{"type":25,"value":164},": Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers.",{"type":15,"tag":67,"props":166,"children":167},{},[168,173],{"type":15,"tag":76,"props":169,"children":170},{},[171],{"type":25,"value":172},"Credit and Attribution",{"type":25,"value":174},": Software citations should facilitate giving scholarly credit and normative, legal attribution to all contributors to the software, recognizing that a single style or mechanism of attribution may not be applicable to all software.",{"type":15,"tag":67,"props":176,"children":177},{},[178,182],{"type":15,"tag":76,"props":179,"children":180},{},[181],{"type":25,"value":136},{"type":25,"value":183},": A software citation should include a method for identification that is machine actionable, globally unique, interoperable, and recognized by at least a community of the corresponding domain experts, and preferably by general public researchers.",{"type":15,"tag":67,"props":185,"children":186},{},[187,191],{"type":15,"tag":76,"props":188,"children":189},{},[190],{"type":25,"value":141},{"type":25,"value":192},": Unique identifiers and metadata describing the software and its disposition should persist – even beyond the lifespan of the software they describe.",{"type":15,"tag":67,"props":194,"children":195},{},[196,200],{"type":15,"tag":76,"props":197,"children":198},{},[199],{"type":25,"value":146},{"type":25,"value":201},": Software citations should facilitate access to the software itself and to its associated metadata, documentation, data, and other materials necessary for both humans and machines to make informed use of the referenced software.",{"type":15,"tag":67,"props":203,"children":204},{},[205,209],{"type":15,"tag":76,"props":206,"children":207},{},[208],{"type":25,"value":151},{"type":25,"value":210},": Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms.",{"type":15,"tag":16,"props":212,"children":213},{},[],{"type":15,"tag":30,"props":215,"children":217},{"id":216},"what-software-to-cite",[218],{"type":25,"value":219},"What software to cite?",{"type":15,"tag":67,"props":221,"children":222},{},[223],{"type":15,"tag":224,"props":225,"children":226},"em",{},[227],{"type":25,"value":228},"\"\"...the software itself should be cited on the same basis as any other research product; authors should cite the appropriate set of software products.\"",{"type":15,"tag":67,"props":230,"children":231},{},[232],{"type":25,"value":233},"Which software would you cite?",{"type":15,"tag":16,"props":235,"children":236},{},[],{"type":15,"tag":30,"props":238,"children":240},{"id":239},"how-to-make-your-software-citable",[241],{"type":25,"value":242},"How to make your software citable?",{"type":15,"tag":30,"props":244,"children":245},{"id":7},[],{"type":15,"tag":30,"props":247,"children":249},{"id":248},"citationcff",[250],{"type":15,"tag":251,"props":252,"children":254},"code",{"className":253},[],[255],{"type":25,"value":256},"CITATION.cff",{"type":15,"tag":16,"props":258,"children":259},{},[],{"type":15,"tag":261,"props":262,"children":264},"pre",{"code":263},"cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n - family-names: Druskat\n given-names: Stephan\n orcid: https://orcid.org/1234-5678-9101-1121\ntitle: \"My Research Software\"\nversion: 2.0.4\nidentifiers:\n - type: doi\n value: 10.5281/zenodo.1234\ndate-released: 2021-08-11\n",[265],{"type":15,"tag":251,"props":266,"children":267},{"__ignoreMap":7},[268],{"type":25,"value":263},{"type":15,"tag":16,"props":270,"children":271},{},[],{"type":15,"tag":67,"props":273,"children":274},{},[275],{"type":15,"tag":276,"props":277,"children":281},"a",{"href":278,"rel":279},"http://www.esciencecenter.nl",[280],"nofollow",[282],{"type":25,"value":283},"www.esciencecenter.nl",{"type":15,"tag":67,"props":285,"children":286},{},[287],{"type":15,"tag":276,"props":288,"children":290},{"href":289},"mailto:info@esciencecenter.nl",[291],{"type":25,"value":292},"info@esciencecenter.nl",{"type":15,"tag":67,"props":294,"children":295},{},[296],{"type":25,"value":297},"020 - 460 47 70",{"title":7,"searchDepth":299,"depth":299,"links":300},2,[301,302,303,304,305,306],{"id":32,"depth":299,"text":35},{"id":115,"depth":299,"text":118},{"id":216,"depth":299,"text":219},{"id":239,"depth":299,"text":242},{"id":7,"depth":299,"text":7},{"id":248,"depth":299,"text":256},"markdown","local_fs:modules:citation:slides-citation.pmd","local_fs","modules/citation/slides-citation.pmd","pmd",[313,348],{"_path":314,"_dir":315,"_draft":6,"_partial":6,"_locale":7,"title":316,"description":7,"body":317,"_type":307,"_id":345,"_source":309,"_file":346,"_extension":347},"/main/about","main","About",{"type":12,"children":318,"toc":341},[319,325,330,336],{"type":15,"tag":30,"props":320,"children":322},{"id":321},"about-the-research-software-support",[323],{"type":25,"value":324},"About the Research Software Support",{"type":15,"tag":67,"props":326,"children":327},{},[328],{"type":25,"value":329},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":30,"props":331,"children":333},{"id":332},"target-audience",[334],{"type":25,"value":335},"Target audience",{"type":15,"tag":67,"props":337,"children":338},{},[339],{"type":25,"value":340},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":299,"depth":299,"links":342},[343,344],{"id":321,"depth":299,"text":324},{"id":332,"depth":299,"text":335},"local_fs:main:about.md","main/about.md","md",{"_path":349,"_dir":315,"_draft":6,"_partial":6,"_locale":7,"title":350,"description":7,"body":351,"_type":307,"_id":475,"_source":309,"_file":476,"_extension":347},"/main/contribute","Contribute",{"type":12,"children":352,"toc":469},[353,359,364,371,376],{"type":15,"tag":30,"props":354,"children":356},{"id":355},"contributing-to-the-research-software-support",[357],{"type":25,"value":358},"Contributing to the Research Software Support",{"type":15,"tag":67,"props":360,"children":361},{},[362],{"type":25,"value":363},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":365,"props":366,"children":368},"h3",{"id":367},"what-can-i-do",[369],{"type":25,"value":370},"What can I do?",{"type":15,"tag":67,"props":372,"children":373},{},[374],{"type":25,"value":375},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":37,"props":377,"children":378},{},[379,393,434,457],{"type":15,"tag":41,"props":380,"children":381},{},[382,384,391],{"type":25,"value":383},"Contribute to the content discussion in the ",{"type":15,"tag":276,"props":385,"children":388},{"href":386,"rel":387},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[280],[389],{"type":25,"value":390},"chapter issues",{"type":25,"value":392},", e.g. by listing good resources for information.",{"type":15,"tag":41,"props":394,"children":395},{},[396,402,404],{"type":15,"tag":276,"props":397,"children":399},{"href":398},"#elements-of-a-module",[400],{"type":25,"value":401},"Author a lesson",{"type":25,"value":403},", e.g. by:\n",{"type":15,"tag":37,"props":405,"children":406},{},[407,416,425],{"type":15,"tag":41,"props":408,"children":409},{},[410],{"type":15,"tag":276,"props":411,"children":413},{"href":412},"#slides",[414],{"type":25,"value":415},"Creating slides",{"type":15,"tag":41,"props":417,"children":418},{},[419],{"type":15,"tag":276,"props":420,"children":422},{"href":421},"#exercises",[423],{"type":25,"value":424},"Designing an exercise",{"type":15,"tag":41,"props":426,"children":427},{},[428],{"type":15,"tag":276,"props":429,"children":431},{"href":430},"#online-resources",[432],{"type":25,"value":433},"Curating online resources",{"type":15,"tag":41,"props":435,"children":436},{},[437,439,446,448,455],{"type":25,"value":438},"Review a lesson module; both by looking at ",{"type":15,"tag":276,"props":440,"children":443},{"href":441,"rel":442},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[280],[444],{"type":25,"value":445},"open PRs",{"type":25,"value":447},", as well as flagging issues for improvement in the ",{"type":15,"tag":276,"props":449,"children":452},{"href":450,"rel":451},"https://esciencecenter-digital-skills.github.io/research-software-support/",[280],[453],{"type":25,"value":454},"existing content",{"type":25,"value":456},".",{"type":15,"tag":41,"props":458,"children":459},{},[460,467],{"type":15,"tag":276,"props":461,"children":464},{"href":462,"rel":463},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[280],[465],{"type":25,"value":466},"Provide feedback",{"type":25,"value":468}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":299,"depth":299,"links":470},[471],{"id":355,"depth":299,"text":358,"children":472},[473],{"id":367,"depth":474,"text":370},3,"local_fs:main:contribute.md","main/contribute.md",1715801015170] \ No newline at end of file diff --git a/modules/citation/slides-citation/index.html b/modules/citation/slides-citation/index.html index 42f6117e..387c46da 100644 --- a/modules/citation/slides-citation/index.html +++ b/modules/citation/slides-citation/index.html @@ -2,7 +2,7 @@ Software Citation - + - - - - - - - - + + + + + + + + - + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/documentation/info/_payload.json b/modules/documentation/info/_payload.json index 4ded3576..473c2b3d 100644 --- a/modules/documentation/info/_payload.json +++ b/modules/documentation/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-gBEj1pOM5W":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/documentation/info","documentation",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:documentation:info.md","local_fs","modules/documentation/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715800937081] \ No newline at end of file +[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-gBEj1pOM5W":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/documentation/info","documentation",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:documentation:info.md","local_fs","modules/documentation/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715801014251] \ No newline at end of file diff --git a/modules/documentation/info/index.html b/modules/documentation/info/index.html index 826e58b3..4e2b9945 100644 --- a/modules/documentation/info/index.html +++ b/modules/documentation/info/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - + + + - - + + -

    Module: documentation

    Learning objectives for the FAIR software module

    - \ No newline at end of file +

    Module: documentation

    Learning objectives for the FAIR software module

    + \ No newline at end of file diff --git a/modules/environments/info/_payload.json b/modules/environments/info/_payload.json index 0eaeff89..d6b34e58 100644 --- a/modules/environments/info/_payload.json +++ b/modules/environments/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-LZ6P2GtvBa":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/environments/info","environments",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:environments:info.md","local_fs","modules/environments/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715800937083] \ No newline at end of file +[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-LZ6P2GtvBa":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/environments/info","environments",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:environments:info.md","local_fs","modules/environments/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715801014253] \ No newline at end of file diff --git a/modules/environments/info/index.html b/modules/environments/info/index.html index 903556fd..d559be6b 100644 --- a/modules/environments/info/index.html +++ b/modules/environments/info/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - + + + - - + + -

    Module: environments

    Learning objectives for the FAIR software module

    - \ No newline at end of file +

    Module: environments

    Learning objectives for the FAIR software module

    + \ No newline at end of file diff --git a/modules/fairsoftware/exercise1/_payload.json b/modules/fairsoftware/exercise1/_payload.json index 818d46e6..043a478e 100644 --- a/modules/fairsoftware/exercise1/_payload.json +++ b/modules/fairsoftware/exercise1/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":378},["Reactive",2],{"content-query-Q298G6SSe1":3,"content-query-AT44bg6JPw":216},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":211,"_id":212,"_source":213,"_file":214,"_extension":215},"/modules/fairsoftware/exercise1","fairsoftware",false,"","What is FAIR?","exercise",2,{"type":12,"children":13,"toc":202},"root",[14,23,29,36,42,88,104,110,133,140,158,164,178,184],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-1",[20],{"type":21,"value":22},"text","Exercise 1",{"type":15,"tag":24,"props":25,"children":27},"h2",{"id":26},"what-is-fair",[28],{"type":21,"value":8},{"type":15,"tag":30,"props":31,"children":33},"h3",{"id":32},"fair-principles-15-minutes",[34],{"type":21,"value":35},"FAIR principles (15 minutes)",{"type":15,"tag":37,"props":38,"children":39},"p",{},[40],{"type":21,"value":41},"The FAIR principles are:",{"type":15,"tag":43,"props":44,"children":45},"ul",{},[46,58,68,78],{"type":15,"tag":47,"props":48,"children":49},"li",{},[50,56],{"type":15,"tag":51,"props":52,"children":53},"strong",{},[54],{"type":21,"value":55},"F",{"type":21,"value":57},"indable",{"type":15,"tag":47,"props":59,"children":60},{},[61,66],{"type":15,"tag":51,"props":62,"children":63},{},[64],{"type":21,"value":65},"A",{"type":21,"value":67},"ccessible",{"type":15,"tag":47,"props":69,"children":70},{},[71,76],{"type":15,"tag":51,"props":72,"children":73},{},[74],{"type":21,"value":75},"I",{"type":21,"value":77},"nteroperable",{"type":15,"tag":47,"props":79,"children":80},{},[81,86],{"type":15,"tag":51,"props":82,"children":83},{},[84],{"type":21,"value":85},"R",{"type":21,"value":87},"eusable",{"type":15,"tag":37,"props":89,"children":90},{},[91,93,102],{"type":21,"value":92},"They were originally introduced in ",{"type":15,"tag":94,"props":95,"children":99},"a",{"href":96,"rel":97},"https://doi.org/10.1038/sdata.2016.18",[98],"nofollow",[100],{"type":21,"value":101},"this paper by Wilkinson et al.",{"type":21,"value":103},".\nThis paper is a good starting point to learn more about FAIR, but if you are already familiar with the concept, a quick skim of the paper should do.\nThe most important take-away from this particular paper is the point that FAIR, while originally a data-specific concept, was designed with other digital objects in mind as well.",{"type":15,"tag":30,"props":105,"children":107},{"id":106},"fair-software-10-minutes",[108],{"type":21,"value":109},"FAIR software (10 minutes)",{"type":15,"tag":37,"props":111,"children":112},{},[113,115,122,124,131],{"type":21,"value":114},"To extend the FAIR principles to software, the ",{"type":15,"tag":94,"props":116,"children":119},{"href":117,"rel":118},"https://force11.org/groups/fair-4-research-software-fair4rs-working-group/",[98],[120],{"type":21,"value":121},"FAIR 4 Research Software working group",{"type":21,"value":123}," was formed.\nTheir paper ",{"type":15,"tag":94,"props":125,"children":128},{"href":126,"rel":127},"https://doi.org/10.1038/s41597-022-01710-x",[98],[129],{"type":21,"value":130},"Introducing the FAIR principles for research software",{"type":21,"value":132}," describes in more practical terms how FAIR can be applied to software.",{"type":15,"tag":134,"props":135,"children":137},"h4",{"id":136},"you-should-now-be-able-to",[138],{"type":21,"value":139},"You should now be able to",{"type":15,"tag":43,"props":141,"children":142},{},[143,148,153],{"type":15,"tag":47,"props":144,"children":145},{},[146],{"type":21,"value":147},"Understand the different facets of FAIR",{"type":15,"tag":47,"props":149,"children":150},{},[151],{"type":21,"value":152},"Be aware of the machine-actionable nature of FAIR",{"type":15,"tag":47,"props":154,"children":155},{},[156],{"type":21,"value":157},"Get a feeling for additional challenges that software poses to FAIR",{"type":15,"tag":30,"props":159,"children":161},{"id":160},"fair-software-20-minutes-optional",[162],{"type":21,"value":163},"FAIR software (20 minutes, optional)",{"type":15,"tag":37,"props":165,"children":166},{},[167,169,176],{"type":21,"value":168},"While the intepretation of the FAIR4RS working group has been the dominant set of principles since its publication, it was not the first attempt to apply FAIR to software.\n",{"type":15,"tag":94,"props":170,"children":173},{"href":171,"rel":172},"https://doi.org/10.3233/ds-190026",[98],[174],{"type":21,"value":175},"This paper by Anna Lena Lamprecht et al.",{"type":21,"value":177}," was published a few years earlier, and also described an extension of the FAIR principles for software.\nThe paper is a more elaborate in its descriptions of software, the different aspects of software, and how they are or are not addressed by FAIR.\nIt is a good read if you want to get a deeper understanding of software and its relation to the FAIR principles.",{"type":15,"tag":30,"props":179,"children":181},{"id":180},"discussion",[182],{"type":21,"value":183},"Discussion",{"type":15,"tag":43,"props":185,"children":186},{},[187,192,197],{"type":15,"tag":47,"props":188,"children":189},{},[190],{"type":21,"value":191},"What are the differences between FAIR principles for data and software?",{"type":15,"tag":47,"props":193,"children":194},{},[195],{"type":21,"value":196},"What challenges do you see in making software FAIR?",{"type":15,"tag":47,"props":198,"children":199},{},[200],{"type":21,"value":201},"Why is FAIR software important?",{"title":7,"searchDepth":10,"depth":10,"links":203},[204],{"id":26,"depth":10,"text":8,"children":205},[206,208,209,210],{"id":32,"depth":207,"text":35},3,{"id":106,"depth":207,"text":109},{"id":160,"depth":207,"text":163},{"id":180,"depth":207,"text":183},"markdown","local_fs:modules:fairsoftware:exercise1.md","local_fs","modules/fairsoftware/exercise1.md","md",[217,251],{"_path":218,"_dir":219,"_draft":6,"_partial":6,"_locale":7,"title":220,"description":7,"body":221,"_type":211,"_id":249,"_source":213,"_file":250,"_extension":215},"/main/about","main","About",{"type":12,"children":222,"toc":245},[223,229,234,240],{"type":15,"tag":24,"props":224,"children":226},{"id":225},"about-the-research-software-support",[227],{"type":21,"value":228},"About the Research Software Support",{"type":15,"tag":37,"props":230,"children":231},{},[232],{"type":21,"value":233},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":24,"props":235,"children":237},{"id":236},"target-audience",[238],{"type":21,"value":239},"Target audience",{"type":15,"tag":37,"props":241,"children":242},{},[243],{"type":21,"value":244},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":10,"depth":10,"links":246},[247,248],{"id":225,"depth":10,"text":228},{"id":236,"depth":10,"text":239},"local_fs:main:about.md","main/about.md",{"_path":252,"_dir":219,"_draft":6,"_partial":6,"_locale":7,"title":253,"description":7,"body":254,"_type":211,"_id":376,"_source":213,"_file":377,"_extension":215},"/main/contribute","Contribute",{"type":12,"children":255,"toc":371},[256,262,267,273,278],{"type":15,"tag":24,"props":257,"children":259},{"id":258},"contributing-to-the-research-software-support",[260],{"type":21,"value":261},"Contributing to the Research Software Support",{"type":15,"tag":37,"props":263,"children":264},{},[265],{"type":21,"value":266},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":30,"props":268,"children":270},{"id":269},"what-can-i-do",[271],{"type":21,"value":272},"What can I do?",{"type":15,"tag":37,"props":274,"children":275},{},[276],{"type":21,"value":277},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":43,"props":279,"children":280},{},[281,295,336,359],{"type":15,"tag":47,"props":282,"children":283},{},[284,286,293],{"type":21,"value":285},"Contribute to the content discussion in the ",{"type":15,"tag":94,"props":287,"children":290},{"href":288,"rel":289},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[98],[291],{"type":21,"value":292},"chapter issues",{"type":21,"value":294},", e.g. by listing good resources for information.",{"type":15,"tag":47,"props":296,"children":297},{},[298,304,306],{"type":15,"tag":94,"props":299,"children":301},{"href":300},"#elements-of-a-module",[302],{"type":21,"value":303},"Author a lesson",{"type":21,"value":305},", e.g. by:\n",{"type":15,"tag":43,"props":307,"children":308},{},[309,318,327],{"type":15,"tag":47,"props":310,"children":311},{},[312],{"type":15,"tag":94,"props":313,"children":315},{"href":314},"#slides",[316],{"type":21,"value":317},"Creating slides",{"type":15,"tag":47,"props":319,"children":320},{},[321],{"type":15,"tag":94,"props":322,"children":324},{"href":323},"#exercises",[325],{"type":21,"value":326},"Designing an exercise",{"type":15,"tag":47,"props":328,"children":329},{},[330],{"type":15,"tag":94,"props":331,"children":333},{"href":332},"#online-resources",[334],{"type":21,"value":335},"Curating online resources",{"type":15,"tag":47,"props":337,"children":338},{},[339,341,348,350,357],{"type":21,"value":340},"Review a lesson module; both by looking at ",{"type":15,"tag":94,"props":342,"children":345},{"href":343,"rel":344},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[98],[346],{"type":21,"value":347},"open PRs",{"type":21,"value":349},", as well as flagging issues for improvement in the ",{"type":15,"tag":94,"props":351,"children":354},{"href":352,"rel":353},"https://esciencecenter-digital-skills.github.io/research-software-support/",[98],[355],{"type":21,"value":356},"existing content",{"type":21,"value":358},".",{"type":15,"tag":47,"props":360,"children":361},{},[362,369],{"type":15,"tag":94,"props":363,"children":366},{"href":364,"rel":365},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[98],[367],{"type":21,"value":368},"Provide feedback",{"type":21,"value":370}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":10,"depth":10,"links":372},[373],{"id":258,"depth":10,"text":261,"children":374},[375],{"id":269,"depth":207,"text":272},"local_fs:main:contribute.md","main/contribute.md",1715800937562] \ No newline at end of file +[{"data":1,"prerenderedAt":378},["Reactive",2],{"content-query-Q298G6SSe1":3,"content-query-AT44bg6JPw":216},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":211,"_id":212,"_source":213,"_file":214,"_extension":215},"/modules/fairsoftware/exercise1","fairsoftware",false,"","What is FAIR?","exercise",2,{"type":12,"children":13,"toc":202},"root",[14,23,29,36,42,88,104,110,133,140,158,164,178,184],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-1",[20],{"type":21,"value":22},"text","Exercise 1",{"type":15,"tag":24,"props":25,"children":27},"h2",{"id":26},"what-is-fair",[28],{"type":21,"value":8},{"type":15,"tag":30,"props":31,"children":33},"h3",{"id":32},"fair-principles-15-minutes",[34],{"type":21,"value":35},"FAIR principles (15 minutes)",{"type":15,"tag":37,"props":38,"children":39},"p",{},[40],{"type":21,"value":41},"The FAIR principles are:",{"type":15,"tag":43,"props":44,"children":45},"ul",{},[46,58,68,78],{"type":15,"tag":47,"props":48,"children":49},"li",{},[50,56],{"type":15,"tag":51,"props":52,"children":53},"strong",{},[54],{"type":21,"value":55},"F",{"type":21,"value":57},"indable",{"type":15,"tag":47,"props":59,"children":60},{},[61,66],{"type":15,"tag":51,"props":62,"children":63},{},[64],{"type":21,"value":65},"A",{"type":21,"value":67},"ccessible",{"type":15,"tag":47,"props":69,"children":70},{},[71,76],{"type":15,"tag":51,"props":72,"children":73},{},[74],{"type":21,"value":75},"I",{"type":21,"value":77},"nteroperable",{"type":15,"tag":47,"props":79,"children":80},{},[81,86],{"type":15,"tag":51,"props":82,"children":83},{},[84],{"type":21,"value":85},"R",{"type":21,"value":87},"eusable",{"type":15,"tag":37,"props":89,"children":90},{},[91,93,102],{"type":21,"value":92},"They were originally introduced in ",{"type":15,"tag":94,"props":95,"children":99},"a",{"href":96,"rel":97},"https://doi.org/10.1038/sdata.2016.18",[98],"nofollow",[100],{"type":21,"value":101},"this paper by Wilkinson et al.",{"type":21,"value":103},".\nThis paper is a good starting point to learn more about FAIR, but if you are already familiar with the concept, a quick skim of the paper should do.\nThe most important take-away from this particular paper is the point that FAIR, while originally a data-specific concept, was designed with other digital objects in mind as well.",{"type":15,"tag":30,"props":105,"children":107},{"id":106},"fair-software-10-minutes",[108],{"type":21,"value":109},"FAIR software (10 minutes)",{"type":15,"tag":37,"props":111,"children":112},{},[113,115,122,124,131],{"type":21,"value":114},"To extend the FAIR principles to software, the ",{"type":15,"tag":94,"props":116,"children":119},{"href":117,"rel":118},"https://force11.org/groups/fair-4-research-software-fair4rs-working-group/",[98],[120],{"type":21,"value":121},"FAIR 4 Research Software working group",{"type":21,"value":123}," was formed.\nTheir paper ",{"type":15,"tag":94,"props":125,"children":128},{"href":126,"rel":127},"https://doi.org/10.1038/s41597-022-01710-x",[98],[129],{"type":21,"value":130},"Introducing the FAIR principles for research software",{"type":21,"value":132}," describes in more practical terms how FAIR can be applied to software.",{"type":15,"tag":134,"props":135,"children":137},"h4",{"id":136},"you-should-now-be-able-to",[138],{"type":21,"value":139},"You should now be able to",{"type":15,"tag":43,"props":141,"children":142},{},[143,148,153],{"type":15,"tag":47,"props":144,"children":145},{},[146],{"type":21,"value":147},"Understand the different facets of FAIR",{"type":15,"tag":47,"props":149,"children":150},{},[151],{"type":21,"value":152},"Be aware of the machine-actionable nature of FAIR",{"type":15,"tag":47,"props":154,"children":155},{},[156],{"type":21,"value":157},"Get a feeling for additional challenges that software poses to FAIR",{"type":15,"tag":30,"props":159,"children":161},{"id":160},"fair-software-20-minutes-optional",[162],{"type":21,"value":163},"FAIR software (20 minutes, optional)",{"type":15,"tag":37,"props":165,"children":166},{},[167,169,176],{"type":21,"value":168},"While the intepretation of the FAIR4RS working group has been the dominant set of principles since its publication, it was not the first attempt to apply FAIR to software.\n",{"type":15,"tag":94,"props":170,"children":173},{"href":171,"rel":172},"https://doi.org/10.3233/ds-190026",[98],[174],{"type":21,"value":175},"This paper by Anna Lena Lamprecht et al.",{"type":21,"value":177}," was published a few years earlier, and also described an extension of the FAIR principles for software.\nThe paper is a more elaborate in its descriptions of software, the different aspects of software, and how they are or are not addressed by FAIR.\nIt is a good read if you want to get a deeper understanding of software and its relation to the FAIR principles.",{"type":15,"tag":30,"props":179,"children":181},{"id":180},"discussion",[182],{"type":21,"value":183},"Discussion",{"type":15,"tag":43,"props":185,"children":186},{},[187,192,197],{"type":15,"tag":47,"props":188,"children":189},{},[190],{"type":21,"value":191},"What are the differences between FAIR principles for data and software?",{"type":15,"tag":47,"props":193,"children":194},{},[195],{"type":21,"value":196},"What challenges do you see in making software FAIR?",{"type":15,"tag":47,"props":198,"children":199},{},[200],{"type":21,"value":201},"Why is FAIR software important?",{"title":7,"searchDepth":10,"depth":10,"links":203},[204],{"id":26,"depth":10,"text":8,"children":205},[206,208,209,210],{"id":32,"depth":207,"text":35},3,{"id":106,"depth":207,"text":109},{"id":160,"depth":207,"text":163},{"id":180,"depth":207,"text":183},"markdown","local_fs:modules:fairsoftware:exercise1.md","local_fs","modules/fairsoftware/exercise1.md","md",[217,251],{"_path":218,"_dir":219,"_draft":6,"_partial":6,"_locale":7,"title":220,"description":7,"body":221,"_type":211,"_id":249,"_source":213,"_file":250,"_extension":215},"/main/about","main","About",{"type":12,"children":222,"toc":245},[223,229,234,240],{"type":15,"tag":24,"props":224,"children":226},{"id":225},"about-the-research-software-support",[227],{"type":21,"value":228},"About the Research Software Support",{"type":15,"tag":37,"props":230,"children":231},{},[232],{"type":21,"value":233},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":24,"props":235,"children":237},{"id":236},"target-audience",[238],{"type":21,"value":239},"Target audience",{"type":15,"tag":37,"props":241,"children":242},{},[243],{"type":21,"value":244},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":10,"depth":10,"links":246},[247,248],{"id":225,"depth":10,"text":228},{"id":236,"depth":10,"text":239},"local_fs:main:about.md","main/about.md",{"_path":252,"_dir":219,"_draft":6,"_partial":6,"_locale":7,"title":253,"description":7,"body":254,"_type":211,"_id":376,"_source":213,"_file":377,"_extension":215},"/main/contribute","Contribute",{"type":12,"children":255,"toc":371},[256,262,267,273,278],{"type":15,"tag":24,"props":257,"children":259},{"id":258},"contributing-to-the-research-software-support",[260],{"type":21,"value":261},"Contributing to the Research Software Support",{"type":15,"tag":37,"props":263,"children":264},{},[265],{"type":21,"value":266},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":30,"props":268,"children":270},{"id":269},"what-can-i-do",[271],{"type":21,"value":272},"What can I do?",{"type":15,"tag":37,"props":274,"children":275},{},[276],{"type":21,"value":277},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":43,"props":279,"children":280},{},[281,295,336,359],{"type":15,"tag":47,"props":282,"children":283},{},[284,286,293],{"type":21,"value":285},"Contribute to the content discussion in the ",{"type":15,"tag":94,"props":287,"children":290},{"href":288,"rel":289},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[98],[291],{"type":21,"value":292},"chapter issues",{"type":21,"value":294},", e.g. by listing good resources for information.",{"type":15,"tag":47,"props":296,"children":297},{},[298,304,306],{"type":15,"tag":94,"props":299,"children":301},{"href":300},"#elements-of-a-module",[302],{"type":21,"value":303},"Author a lesson",{"type":21,"value":305},", e.g. by:\n",{"type":15,"tag":43,"props":307,"children":308},{},[309,318,327],{"type":15,"tag":47,"props":310,"children":311},{},[312],{"type":15,"tag":94,"props":313,"children":315},{"href":314},"#slides",[316],{"type":21,"value":317},"Creating slides",{"type":15,"tag":47,"props":319,"children":320},{},[321],{"type":15,"tag":94,"props":322,"children":324},{"href":323},"#exercises",[325],{"type":21,"value":326},"Designing an exercise",{"type":15,"tag":47,"props":328,"children":329},{},[330],{"type":15,"tag":94,"props":331,"children":333},{"href":332},"#online-resources",[334],{"type":21,"value":335},"Curating online resources",{"type":15,"tag":47,"props":337,"children":338},{},[339,341,348,350,357],{"type":21,"value":340},"Review a lesson module; both by looking at ",{"type":15,"tag":94,"props":342,"children":345},{"href":343,"rel":344},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[98],[346],{"type":21,"value":347},"open PRs",{"type":21,"value":349},", as well as flagging issues for improvement in the ",{"type":15,"tag":94,"props":351,"children":354},{"href":352,"rel":353},"https://esciencecenter-digital-skills.github.io/research-software-support/",[98],[355],{"type":21,"value":356},"existing content",{"type":21,"value":358},".",{"type":15,"tag":47,"props":360,"children":361},{},[362,369],{"type":15,"tag":94,"props":363,"children":366},{"href":364,"rel":365},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[98],[367],{"type":21,"value":368},"Provide feedback",{"type":21,"value":370}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":10,"depth":10,"links":372},[373],{"id":258,"depth":10,"text":261,"children":374},[375],{"id":269,"depth":207,"text":272},"local_fs:main:contribute.md","main/contribute.md",1715801014772] \ No newline at end of file diff --git a/modules/fairsoftware/exercise1/index.html b/modules/fairsoftware/exercise1/index.html index 0b7e0621..09d06970 100644 --- a/modules/fairsoftware/exercise1/index.html +++ b/modules/fairsoftware/exercise1/index.html @@ -2,7 +2,7 @@ What is FAIR? - + - - - - - - - - + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - + + -

    Module: fairsoftware

    Exercise 1

    What is FAIR?

    FAIR principles (15 minutes)

    The FAIR principles are:

    • Findable
    • Accessible
    • Interoperable
    • Reusable

    They were originally introduced in this paper by Wilkinson et al.. +

    Module: fairsoftware

    Exercise 1

    What is FAIR?

    FAIR principles (15 minutes)

    The FAIR principles are:

    • Findable
    • Accessible
    • Interoperable
    • Reusable

    They were originally introduced in this paper by Wilkinson et al.. This paper is a good starting point to learn more about FAIR, but if you are already familiar with the concept, a quick skim of the paper should do. The most important take-away from this particular paper is the point that FAIR, while originally a data-specific concept, was designed with other digital objects in mind as well.

    FAIR software (10 minutes)

    To extend the FAIR principles to software, the FAIR 4 Research Software working group was formed. Their paper Introducing the FAIR principles for research software describes in more practical terms how FAIR can be applied to software.

    You should now be able to

    • Understand the different facets of FAIR
    • Be aware of the machine-actionable nature of FAIR
    • Get a feeling for additional challenges that software poses to FAIR

    FAIR software (20 minutes, optional)

    While the intepretation of the FAIR4RS working group has been the dominant set of principles since its publication, it was not the first attempt to apply FAIR to software. This paper by Anna Lena Lamprecht et al. was published a few years earlier, and also described an extension of the FAIR principles for software. The paper is a more elaborate in its descriptions of software, the different aspects of software, and how they are or are not addressed by FAIR. -It is a good read if you want to get a deeper understanding of software and its relation to the FAIR principles.

    Discussion

    • What are the differences between FAIR principles for data and software?
    • What challenges do you see in making software FAIR?
    • Why is FAIR software important?
    - \ No newline at end of file +It is a good read if you want to get a deeper understanding of software and its relation to the FAIR principles.

    Discussion

    • What are the differences between FAIR principles for data and software?
    • What challenges do you see in making software FAIR?
    • Why is FAIR software important?
    + \ No newline at end of file diff --git a/modules/fairsoftware/exercise2/_payload.json b/modules/fairsoftware/exercise2/_payload.json index d05ea83d..91cf1135 100644 --- a/modules/fairsoftware/exercise2/_payload.json +++ b/modules/fairsoftware/exercise2/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":536},["Reactive",2],{"content-query-q85y8uYjRW":3,"content-query-AT44bg6JPw":374},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":369,"_id":370,"_source":371,"_file":372,"_extension":373},"/modules/fairsoftware/exercise2","fairsoftware",false,"","Mapping the principles","exercise",3,{"type":12,"children":13,"toc":361},"root",[14,23,29,36,43,81,87,113,119,132,138,169,175,181,196,201,239,252,257,300,313,318,336,342,356],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-2",[20],{"type":21,"value":22},"text","Exercise 2",{"type":15,"tag":24,"props":25,"children":27},"h2",{"id":26},"mapping-the-principles",[28],{"type":21,"value":8},{"type":15,"tag":30,"props":31,"children":33},"h3",{"id":32},"the-fair4rs-principles-are",[34],{"type":21,"value":35},"The FAIR4RS Principles are:",{"type":15,"tag":37,"props":38,"children":40},"h4",{"id":39},"f-software-and-its-associated-metadata-is-easy-for-both-humans-and-machines-to-find",[41],{"type":21,"value":42},"F: Software, and its associated metadata, is easy for both humans and machines to find.",{"type":15,"tag":44,"props":45,"children":46},"ul",{},[47,66,71,76],{"type":15,"tag":48,"props":49,"children":50},"li",{},[51,53],{"type":21,"value":52},"F1. Software is assigned a globally unique and persistent identifier.\n",{"type":15,"tag":44,"props":54,"children":55},{},[56,61],{"type":15,"tag":48,"props":57,"children":58},{},[59],{"type":21,"value":60},"F1.1. Components of the software representing levels of granularity are assigned distinct identifiers.",{"type":15,"tag":48,"props":62,"children":63},{},[64],{"type":21,"value":65},"F1.2. Different versions of the software are assigned distinct identifiers.",{"type":15,"tag":48,"props":67,"children":68},{},[69],{"type":21,"value":70},"F2. Software is described with rich metadata.",{"type":15,"tag":48,"props":72,"children":73},{},[74],{"type":21,"value":75},"F3. Metadata clearly and explicitly include the identifier of the software they describe.",{"type":15,"tag":48,"props":77,"children":78},{},[79],{"type":21,"value":80},"F4. Metadata are FAIR, searchable and indexable.",{"type":15,"tag":37,"props":82,"children":84},{"id":83},"a-software-and-its-metadata-is-retrievable-via-standardised-protocols",[85],{"type":21,"value":86},"A: Software, and its metadata, is retrievable via standardised protocols.",{"type":15,"tag":44,"props":88,"children":89},{},[90,108],{"type":15,"tag":48,"props":91,"children":92},{},[93,95],{"type":21,"value":94},"A1. Software is retrievable by its identifier using a standardised communications protocol.\n",{"type":15,"tag":44,"props":96,"children":97},{},[98,103],{"type":15,"tag":48,"props":99,"children":100},{},[101],{"type":21,"value":102},"A1.1. The protocol is open, free, and universally implementable.",{"type":15,"tag":48,"props":104,"children":105},{},[106],{"type":21,"value":107},"A1.2. The protocol allows for an authentication and authorization procedure, where necessary.",{"type":15,"tag":48,"props":109,"children":110},{},[111],{"type":21,"value":112},"A2. Metadata are accessible, even when the software is no longer available.",{"type":15,"tag":37,"props":114,"children":116},{"id":115},"i-software-interoperates-with-other-software-by-exchanging-data-andor-metadata-andor-through-interaction-via-application-programming-interfaces-apis-described-through-standards",[117],{"type":21,"value":118},"I: Software interoperates with other software by exchanging data and/or metadata, and/or through interaction via application programming interfaces (APIs), described through standards.",{"type":15,"tag":44,"props":120,"children":121},{},[122,127],{"type":15,"tag":48,"props":123,"children":124},{},[125],{"type":21,"value":126},"I1. Software reads, writes and exchanges data in a way that meets domain-relevant community standards.",{"type":15,"tag":48,"props":128,"children":129},{},[130],{"type":21,"value":131},"I2. Software includes qualified references to other objects.",{"type":15,"tag":37,"props":133,"children":135},{"id":134},"r-software-is-both-usable-can-be-executed-and-reusable-can-be-understood-modified-built-upon-or-incorporated-into-other-software",[136],{"type":21,"value":137},"R: Software is both usable (can be executed) and reusable (can be understood, modified, built upon, or incorporated into other software).",{"type":15,"tag":44,"props":139,"children":140},{},[141,159,164],{"type":15,"tag":48,"props":142,"children":143},{},[144,146],{"type":21,"value":145},"R1. Software is described with a plurality of accurate and relevant attributes.\n",{"type":15,"tag":44,"props":147,"children":148},{},[149,154],{"type":15,"tag":48,"props":150,"children":151},{},[152],{"type":21,"value":153},"R1.1. Software is given a clear and accessible license.",{"type":15,"tag":48,"props":155,"children":156},{},[157],{"type":21,"value":158},"R1.2. Software is associated with detailed provenance.",{"type":15,"tag":48,"props":160,"children":161},{},[162],{"type":21,"value":163},"R2. Software includes qualified references to other software.",{"type":15,"tag":48,"props":165,"children":166},{},[167],{"type":21,"value":168},"R3. Software meets domain-relevant community standards.",{"type":15,"tag":30,"props":170,"children":172},{"id":171},"three-examples",[173],{"type":21,"value":174},"Three examples",{"type":15,"tag":176,"props":177,"children":178},"p",{},[179],{"type":21,"value":180},"The following three examples of software have been described with statements that can be mapped to the FAIR4RS Principles. With each statement, identify the principle(s) it maps to, and the (sub)facet(s) of the principle(s) it addresses. A single statement may map to multiple (sub)facets.",{"type":15,"tag":37,"props":182,"children":184},{"id":183},"example-1-comet",[185,187],{"type":21,"value":186},"Example 1: ",{"type":15,"tag":188,"props":189,"children":193},"a",{"href":190,"rel":191},"https://doi.org/10.1002/pmic.201200439",[192],"nofollow",[194],{"type":21,"value":195},"Comet",{"type":15,"tag":176,"props":197,"children":198},{},[199],{"type":21,"value":200},"Comet is a command-line tool and desktop application for tandem mass spectrometry sequence database search6.",{"type":15,"tag":44,"props":202,"children":203},{},[204,209,214,219,224,229,234],{"type":15,"tag":48,"props":205,"children":206},{},[207],{"type":21,"value":208},"Comet is licensed under the Apache 2.0 open source licence.",{"type":15,"tag":48,"props":210,"children":211},{},[212],{"type":21,"value":213},"Comet is registered in the bio.tools catalogue of bioinformatics tools, where it has a globally unique and persistent identifier, and rich metadata that includes the identifier and is searchable and indexable.",{"type":15,"tag":48,"props":215,"children":216},{},[217],{"type":21,"value":218},"The metadata in bio.tools is independent from the Comet repository, and will stay accessible should the software itself become inaccessible.",{"type":15,"tag":48,"props":220,"children":221},{},[222],{"type":21,"value":223},"The publicly accessible project repository on GitHub includes detailed information about the development of Comet.",{"type":15,"tag":48,"props":225,"children":226},{},[227],{"type":21,"value":228},"The code includes dependencies to external software packages, such as Thermo Scientific’s MSFileReader library.",{"type":15,"tag":48,"props":230,"children":231},{},[232],{"type":21,"value":233},"Comet can be downloaded via the browser following the links provided in the metadata using https.",{"type":15,"tag":48,"props":235,"children":236},{},[237],{"type":21,"value":238},"Comet uses standard data types from the proteomics domain for its input and output data that are documented in the metadata as functional annotations.",{"type":15,"tag":37,"props":240,"children":242},{"id":241},"example-2-puregome",[243,245],{"type":21,"value":244},"Example 2: ",{"type":15,"tag":188,"props":246,"children":249},{"href":247,"rel":248},"https://doi.org/10.5281/zenodo.4337242",[192],[250],{"type":21,"value":251},"PureGoMe",{"type":15,"tag":176,"props":253,"children":254},{},[255],{"type":21,"value":256},"PuReGoMe is a project aimed at understanding Dutch public sentiment during the COVID-19 outbreak period by analysing real-time Twitter data. It provides a collection of Python scripts and Jupyter notebooks for this purpose.",{"type":15,"tag":44,"props":258,"children":259},{},[260,265,270,275,280,285,290,295],{"type":15,"tag":48,"props":261,"children":262},{},[263],{"type":21,"value":264},"PureGoMe can be downloaded from the project repository, while metadata is accessible independently from the registry.",{"type":15,"tag":48,"props":266,"children":267},{},[268],{"type":21,"value":269},"PuReGoMe's GitHub repository has detailed records of the development history.",{"type":15,"tag":48,"props":271,"children":272},{},[273],{"type":21,"value":274},"The code includes dependencies to other software, such as various Python libraries.",{"type":15,"tag":48,"props":276,"children":277},{},[278],{"type":21,"value":279},"PuReGoMe has a (versioned) DOI from Zenodo.",{"type":15,"tag":48,"props":281,"children":282},{},[283],{"type":21,"value":284},"PuReGoMe uses the Apache 2.0 open source licence.",{"type":15,"tag":48,"props":286,"children":287},{},[288],{"type":21,"value":289},"PuReGoMe uses standard file formats (e.g., CSV files) for data exchange.",{"type":15,"tag":48,"props":291,"children":292},{},[293],{"type":21,"value":294},"PuReGoMe refers to other objects such as websites.",{"type":15,"tag":48,"props":296,"children":297},{},[298],{"type":21,"value":299},"PureGoMe is registered in the Research Software Directory that captures the most relevant metadata, including the identifier, in searchable and indexable form.",{"type":15,"tag":37,"props":301,"children":303},{"id":302},"example-3-gammashiny",[304,306],{"type":21,"value":305},"Example 3: ",{"type":15,"tag":188,"props":307,"children":310},{"href":308,"rel":309},"https://doi.org/10.5281/zenodo.4139005",[192],[311],{"type":21,"value":312},"gammaShiny",{"type":15,"tag":176,"props":314,"children":315},{},[316],{"type":21,"value":317},"gammaShiny is an application that provides enhanced graphical user interfaces for the R gamma package8. It is used to process in-situ gamma-ray spectrometry measurements for luminescence dating.",{"type":15,"tag":44,"props":319,"children":320},{},[321,326,331],{"type":15,"tag":48,"props":322,"children":323},{},[324],{"type":21,"value":325},"gammaShiny has been deposited in the HAL French national archive and it has a persistent globally unique identifier, with the HAL identifier of the metadata record and a SWHID, identifying specifically the software artefact on the Software Heritage universal software source code archive.",{"type":15,"tag":48,"props":327,"children":328},{},[329],{"type":21,"value":330},"Thanks to the HAL platform, where a licence is mandatory, gammaShiny is under a GNU General Public Licence v3.0.",{"type":15,"tag":48,"props":332,"children":333},{},[334],{"type":21,"value":335},"The archived versions of gammaShiny’s source code in Software Heritage include a codemeta.json file, identifiable with a SWHID, where other metadata is available including dependencies named in CodeMeta (\"softwareRequirements\").",{"type":15,"tag":30,"props":337,"children":339},{"id":338},"do-you-agree",[340],{"type":21,"value":341},"Do you agree?",{"type":15,"tag":176,"props":343,"children":344},{},[345,347,354],{"type":21,"value":346},"The examples were taken from ",{"type":15,"tag":188,"props":348,"children":351},{"href":349,"rel":350},"https://doi.org/10.1038/s41597-022-01710-x",[192],[352],{"type":21,"value":353},"this paper",{"type":21,"value":355},".\nIn the Results section of the paper you will find the authors' analysis of the software, which contains the statements above, mapped to the FAIR4RS Principles.",{"type":15,"tag":176,"props":357,"children":358},{},[359],{"type":21,"value":360},"Do you agree with their assessment?",{"title":7,"searchDepth":362,"depth":362,"links":363},2,[364],{"id":26,"depth":362,"text":8,"children":365},[366,367,368],{"id":32,"depth":10,"text":35},{"id":171,"depth":10,"text":174},{"id":338,"depth":10,"text":341},"markdown","local_fs:modules:fairsoftware:exercise2.md","local_fs","modules/fairsoftware/exercise2.md","md",[375,409],{"_path":376,"_dir":377,"_draft":6,"_partial":6,"_locale":7,"title":378,"description":7,"body":379,"_type":369,"_id":407,"_source":371,"_file":408,"_extension":373},"/main/about","main","About",{"type":12,"children":380,"toc":403},[381,387,392,398],{"type":15,"tag":24,"props":382,"children":384},{"id":383},"about-the-research-software-support",[385],{"type":21,"value":386},"About the Research Software Support",{"type":15,"tag":176,"props":388,"children":389},{},[390],{"type":21,"value":391},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":24,"props":393,"children":395},{"id":394},"target-audience",[396],{"type":21,"value":397},"Target audience",{"type":15,"tag":176,"props":399,"children":400},{},[401],{"type":21,"value":402},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":362,"depth":362,"links":404},[405,406],{"id":383,"depth":362,"text":386},{"id":394,"depth":362,"text":397},"local_fs:main:about.md","main/about.md",{"_path":410,"_dir":377,"_draft":6,"_partial":6,"_locale":7,"title":411,"description":7,"body":412,"_type":369,"_id":534,"_source":371,"_file":535,"_extension":373},"/main/contribute","Contribute",{"type":12,"children":413,"toc":529},[414,420,425,431,436],{"type":15,"tag":24,"props":415,"children":417},{"id":416},"contributing-to-the-research-software-support",[418],{"type":21,"value":419},"Contributing to the Research Software Support",{"type":15,"tag":176,"props":421,"children":422},{},[423],{"type":21,"value":424},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":30,"props":426,"children":428},{"id":427},"what-can-i-do",[429],{"type":21,"value":430},"What can I do?",{"type":15,"tag":176,"props":432,"children":433},{},[434],{"type":21,"value":435},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":44,"props":437,"children":438},{},[439,453,494,517],{"type":15,"tag":48,"props":440,"children":441},{},[442,444,451],{"type":21,"value":443},"Contribute to the content discussion in the ",{"type":15,"tag":188,"props":445,"children":448},{"href":446,"rel":447},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[192],[449],{"type":21,"value":450},"chapter issues",{"type":21,"value":452},", e.g. by listing good resources for information.",{"type":15,"tag":48,"props":454,"children":455},{},[456,462,464],{"type":15,"tag":188,"props":457,"children":459},{"href":458},"#elements-of-a-module",[460],{"type":21,"value":461},"Author a lesson",{"type":21,"value":463},", e.g. by:\n",{"type":15,"tag":44,"props":465,"children":466},{},[467,476,485],{"type":15,"tag":48,"props":468,"children":469},{},[470],{"type":15,"tag":188,"props":471,"children":473},{"href":472},"#slides",[474],{"type":21,"value":475},"Creating slides",{"type":15,"tag":48,"props":477,"children":478},{},[479],{"type":15,"tag":188,"props":480,"children":482},{"href":481},"#exercises",[483],{"type":21,"value":484},"Designing an exercise",{"type":15,"tag":48,"props":486,"children":487},{},[488],{"type":15,"tag":188,"props":489,"children":491},{"href":490},"#online-resources",[492],{"type":21,"value":493},"Curating online resources",{"type":15,"tag":48,"props":495,"children":496},{},[497,499,506,508,515],{"type":21,"value":498},"Review a lesson module; both by looking at ",{"type":15,"tag":188,"props":500,"children":503},{"href":501,"rel":502},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[192],[504],{"type":21,"value":505},"open PRs",{"type":21,"value":507},", as well as flagging issues for improvement in the ",{"type":15,"tag":188,"props":509,"children":512},{"href":510,"rel":511},"https://esciencecenter-digital-skills.github.io/research-software-support/",[192],[513],{"type":21,"value":514},"existing content",{"type":21,"value":516},".",{"type":15,"tag":48,"props":518,"children":519},{},[520,527],{"type":15,"tag":188,"props":521,"children":524},{"href":522,"rel":523},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[192],[525],{"type":21,"value":526},"Provide feedback",{"type":21,"value":528}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":362,"depth":362,"links":530},[531],{"id":416,"depth":362,"text":419,"children":532},[533],{"id":427,"depth":10,"text":430},"local_fs:main:contribute.md","main/contribute.md",1715800937575] \ No newline at end of file +[{"data":1,"prerenderedAt":536},["Reactive",2],{"content-query-q85y8uYjRW":3,"content-query-AT44bg6JPw":374},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":369,"_id":370,"_source":371,"_file":372,"_extension":373},"/modules/fairsoftware/exercise2","fairsoftware",false,"","Mapping the principles","exercise",3,{"type":12,"children":13,"toc":361},"root",[14,23,29,36,43,81,87,113,119,132,138,169,175,181,196,201,239,252,257,300,313,318,336,342,356],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-2",[20],{"type":21,"value":22},"text","Exercise 2",{"type":15,"tag":24,"props":25,"children":27},"h2",{"id":26},"mapping-the-principles",[28],{"type":21,"value":8},{"type":15,"tag":30,"props":31,"children":33},"h3",{"id":32},"the-fair4rs-principles-are",[34],{"type":21,"value":35},"The FAIR4RS Principles are:",{"type":15,"tag":37,"props":38,"children":40},"h4",{"id":39},"f-software-and-its-associated-metadata-is-easy-for-both-humans-and-machines-to-find",[41],{"type":21,"value":42},"F: Software, and its associated metadata, is easy for both humans and machines to find.",{"type":15,"tag":44,"props":45,"children":46},"ul",{},[47,66,71,76],{"type":15,"tag":48,"props":49,"children":50},"li",{},[51,53],{"type":21,"value":52},"F1. Software is assigned a globally unique and persistent identifier.\n",{"type":15,"tag":44,"props":54,"children":55},{},[56,61],{"type":15,"tag":48,"props":57,"children":58},{},[59],{"type":21,"value":60},"F1.1. Components of the software representing levels of granularity are assigned distinct identifiers.",{"type":15,"tag":48,"props":62,"children":63},{},[64],{"type":21,"value":65},"F1.2. Different versions of the software are assigned distinct identifiers.",{"type":15,"tag":48,"props":67,"children":68},{},[69],{"type":21,"value":70},"F2. Software is described with rich metadata.",{"type":15,"tag":48,"props":72,"children":73},{},[74],{"type":21,"value":75},"F3. Metadata clearly and explicitly include the identifier of the software they describe.",{"type":15,"tag":48,"props":77,"children":78},{},[79],{"type":21,"value":80},"F4. Metadata are FAIR, searchable and indexable.",{"type":15,"tag":37,"props":82,"children":84},{"id":83},"a-software-and-its-metadata-is-retrievable-via-standardised-protocols",[85],{"type":21,"value":86},"A: Software, and its metadata, is retrievable via standardised protocols.",{"type":15,"tag":44,"props":88,"children":89},{},[90,108],{"type":15,"tag":48,"props":91,"children":92},{},[93,95],{"type":21,"value":94},"A1. Software is retrievable by its identifier using a standardised communications protocol.\n",{"type":15,"tag":44,"props":96,"children":97},{},[98,103],{"type":15,"tag":48,"props":99,"children":100},{},[101],{"type":21,"value":102},"A1.1. The protocol is open, free, and universally implementable.",{"type":15,"tag":48,"props":104,"children":105},{},[106],{"type":21,"value":107},"A1.2. The protocol allows for an authentication and authorization procedure, where necessary.",{"type":15,"tag":48,"props":109,"children":110},{},[111],{"type":21,"value":112},"A2. Metadata are accessible, even when the software is no longer available.",{"type":15,"tag":37,"props":114,"children":116},{"id":115},"i-software-interoperates-with-other-software-by-exchanging-data-andor-metadata-andor-through-interaction-via-application-programming-interfaces-apis-described-through-standards",[117],{"type":21,"value":118},"I: Software interoperates with other software by exchanging data and/or metadata, and/or through interaction via application programming interfaces (APIs), described through standards.",{"type":15,"tag":44,"props":120,"children":121},{},[122,127],{"type":15,"tag":48,"props":123,"children":124},{},[125],{"type":21,"value":126},"I1. Software reads, writes and exchanges data in a way that meets domain-relevant community standards.",{"type":15,"tag":48,"props":128,"children":129},{},[130],{"type":21,"value":131},"I2. Software includes qualified references to other objects.",{"type":15,"tag":37,"props":133,"children":135},{"id":134},"r-software-is-both-usable-can-be-executed-and-reusable-can-be-understood-modified-built-upon-or-incorporated-into-other-software",[136],{"type":21,"value":137},"R: Software is both usable (can be executed) and reusable (can be understood, modified, built upon, or incorporated into other software).",{"type":15,"tag":44,"props":139,"children":140},{},[141,159,164],{"type":15,"tag":48,"props":142,"children":143},{},[144,146],{"type":21,"value":145},"R1. Software is described with a plurality of accurate and relevant attributes.\n",{"type":15,"tag":44,"props":147,"children":148},{},[149,154],{"type":15,"tag":48,"props":150,"children":151},{},[152],{"type":21,"value":153},"R1.1. Software is given a clear and accessible license.",{"type":15,"tag":48,"props":155,"children":156},{},[157],{"type":21,"value":158},"R1.2. Software is associated with detailed provenance.",{"type":15,"tag":48,"props":160,"children":161},{},[162],{"type":21,"value":163},"R2. Software includes qualified references to other software.",{"type":15,"tag":48,"props":165,"children":166},{},[167],{"type":21,"value":168},"R3. Software meets domain-relevant community standards.",{"type":15,"tag":30,"props":170,"children":172},{"id":171},"three-examples",[173],{"type":21,"value":174},"Three examples",{"type":15,"tag":176,"props":177,"children":178},"p",{},[179],{"type":21,"value":180},"The following three examples of software have been described with statements that can be mapped to the FAIR4RS Principles. With each statement, identify the principle(s) it maps to, and the (sub)facet(s) of the principle(s) it addresses. A single statement may map to multiple (sub)facets.",{"type":15,"tag":37,"props":182,"children":184},{"id":183},"example-1-comet",[185,187],{"type":21,"value":186},"Example 1: ",{"type":15,"tag":188,"props":189,"children":193},"a",{"href":190,"rel":191},"https://doi.org/10.1002/pmic.201200439",[192],"nofollow",[194],{"type":21,"value":195},"Comet",{"type":15,"tag":176,"props":197,"children":198},{},[199],{"type":21,"value":200},"Comet is a command-line tool and desktop application for tandem mass spectrometry sequence database search6.",{"type":15,"tag":44,"props":202,"children":203},{},[204,209,214,219,224,229,234],{"type":15,"tag":48,"props":205,"children":206},{},[207],{"type":21,"value":208},"Comet is licensed under the Apache 2.0 open source licence.",{"type":15,"tag":48,"props":210,"children":211},{},[212],{"type":21,"value":213},"Comet is registered in the bio.tools catalogue of bioinformatics tools, where it has a globally unique and persistent identifier, and rich metadata that includes the identifier and is searchable and indexable.",{"type":15,"tag":48,"props":215,"children":216},{},[217],{"type":21,"value":218},"The metadata in bio.tools is independent from the Comet repository, and will stay accessible should the software itself become inaccessible.",{"type":15,"tag":48,"props":220,"children":221},{},[222],{"type":21,"value":223},"The publicly accessible project repository on GitHub includes detailed information about the development of Comet.",{"type":15,"tag":48,"props":225,"children":226},{},[227],{"type":21,"value":228},"The code includes dependencies to external software packages, such as Thermo Scientific’s MSFileReader library.",{"type":15,"tag":48,"props":230,"children":231},{},[232],{"type":21,"value":233},"Comet can be downloaded via the browser following the links provided in the metadata using https.",{"type":15,"tag":48,"props":235,"children":236},{},[237],{"type":21,"value":238},"Comet uses standard data types from the proteomics domain for its input and output data that are documented in the metadata as functional annotations.",{"type":15,"tag":37,"props":240,"children":242},{"id":241},"example-2-puregome",[243,245],{"type":21,"value":244},"Example 2: ",{"type":15,"tag":188,"props":246,"children":249},{"href":247,"rel":248},"https://doi.org/10.5281/zenodo.4337242",[192],[250],{"type":21,"value":251},"PureGoMe",{"type":15,"tag":176,"props":253,"children":254},{},[255],{"type":21,"value":256},"PuReGoMe is a project aimed at understanding Dutch public sentiment during the COVID-19 outbreak period by analysing real-time Twitter data. It provides a collection of Python scripts and Jupyter notebooks for this purpose.",{"type":15,"tag":44,"props":258,"children":259},{},[260,265,270,275,280,285,290,295],{"type":15,"tag":48,"props":261,"children":262},{},[263],{"type":21,"value":264},"PureGoMe can be downloaded from the project repository, while metadata is accessible independently from the registry.",{"type":15,"tag":48,"props":266,"children":267},{},[268],{"type":21,"value":269},"PuReGoMe's GitHub repository has detailed records of the development history.",{"type":15,"tag":48,"props":271,"children":272},{},[273],{"type":21,"value":274},"The code includes dependencies to other software, such as various Python libraries.",{"type":15,"tag":48,"props":276,"children":277},{},[278],{"type":21,"value":279},"PuReGoMe has a (versioned) DOI from Zenodo.",{"type":15,"tag":48,"props":281,"children":282},{},[283],{"type":21,"value":284},"PuReGoMe uses the Apache 2.0 open source licence.",{"type":15,"tag":48,"props":286,"children":287},{},[288],{"type":21,"value":289},"PuReGoMe uses standard file formats (e.g., CSV files) for data exchange.",{"type":15,"tag":48,"props":291,"children":292},{},[293],{"type":21,"value":294},"PuReGoMe refers to other objects such as websites.",{"type":15,"tag":48,"props":296,"children":297},{},[298],{"type":21,"value":299},"PureGoMe is registered in the Research Software Directory that captures the most relevant metadata, including the identifier, in searchable and indexable form.",{"type":15,"tag":37,"props":301,"children":303},{"id":302},"example-3-gammashiny",[304,306],{"type":21,"value":305},"Example 3: ",{"type":15,"tag":188,"props":307,"children":310},{"href":308,"rel":309},"https://doi.org/10.5281/zenodo.4139005",[192],[311],{"type":21,"value":312},"gammaShiny",{"type":15,"tag":176,"props":314,"children":315},{},[316],{"type":21,"value":317},"gammaShiny is an application that provides enhanced graphical user interfaces for the R gamma package8. It is used to process in-situ gamma-ray spectrometry measurements for luminescence dating.",{"type":15,"tag":44,"props":319,"children":320},{},[321,326,331],{"type":15,"tag":48,"props":322,"children":323},{},[324],{"type":21,"value":325},"gammaShiny has been deposited in the HAL French national archive and it has a persistent globally unique identifier, with the HAL identifier of the metadata record and a SWHID, identifying specifically the software artefact on the Software Heritage universal software source code archive.",{"type":15,"tag":48,"props":327,"children":328},{},[329],{"type":21,"value":330},"Thanks to the HAL platform, where a licence is mandatory, gammaShiny is under a GNU General Public Licence v3.0.",{"type":15,"tag":48,"props":332,"children":333},{},[334],{"type":21,"value":335},"The archived versions of gammaShiny’s source code in Software Heritage include a codemeta.json file, identifiable with a SWHID, where other metadata is available including dependencies named in CodeMeta (\"softwareRequirements\").",{"type":15,"tag":30,"props":337,"children":339},{"id":338},"do-you-agree",[340],{"type":21,"value":341},"Do you agree?",{"type":15,"tag":176,"props":343,"children":344},{},[345,347,354],{"type":21,"value":346},"The examples were taken from ",{"type":15,"tag":188,"props":348,"children":351},{"href":349,"rel":350},"https://doi.org/10.1038/s41597-022-01710-x",[192],[352],{"type":21,"value":353},"this paper",{"type":21,"value":355},".\nIn the Results section of the paper you will find the authors' analysis of the software, which contains the statements above, mapped to the FAIR4RS Principles.",{"type":15,"tag":176,"props":357,"children":358},{},[359],{"type":21,"value":360},"Do you agree with their assessment?",{"title":7,"searchDepth":362,"depth":362,"links":363},2,[364],{"id":26,"depth":362,"text":8,"children":365},[366,367,368],{"id":32,"depth":10,"text":35},{"id":171,"depth":10,"text":174},{"id":338,"depth":10,"text":341},"markdown","local_fs:modules:fairsoftware:exercise2.md","local_fs","modules/fairsoftware/exercise2.md","md",[375,409],{"_path":376,"_dir":377,"_draft":6,"_partial":6,"_locale":7,"title":378,"description":7,"body":379,"_type":369,"_id":407,"_source":371,"_file":408,"_extension":373},"/main/about","main","About",{"type":12,"children":380,"toc":403},[381,387,392,398],{"type":15,"tag":24,"props":382,"children":384},{"id":383},"about-the-research-software-support",[385],{"type":21,"value":386},"About the Research Software Support",{"type":15,"tag":176,"props":388,"children":389},{},[390],{"type":21,"value":391},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":24,"props":393,"children":395},{"id":394},"target-audience",[396],{"type":21,"value":397},"Target audience",{"type":15,"tag":176,"props":399,"children":400},{},[401],{"type":21,"value":402},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":362,"depth":362,"links":404},[405,406],{"id":383,"depth":362,"text":386},{"id":394,"depth":362,"text":397},"local_fs:main:about.md","main/about.md",{"_path":410,"_dir":377,"_draft":6,"_partial":6,"_locale":7,"title":411,"description":7,"body":412,"_type":369,"_id":534,"_source":371,"_file":535,"_extension":373},"/main/contribute","Contribute",{"type":12,"children":413,"toc":529},[414,420,425,431,436],{"type":15,"tag":24,"props":415,"children":417},{"id":416},"contributing-to-the-research-software-support",[418],{"type":21,"value":419},"Contributing to the Research Software Support",{"type":15,"tag":176,"props":421,"children":422},{},[423],{"type":21,"value":424},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":30,"props":426,"children":428},{"id":427},"what-can-i-do",[429],{"type":21,"value":430},"What can I do?",{"type":15,"tag":176,"props":432,"children":433},{},[434],{"type":21,"value":435},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":44,"props":437,"children":438},{},[439,453,494,517],{"type":15,"tag":48,"props":440,"children":441},{},[442,444,451],{"type":21,"value":443},"Contribute to the content discussion in the ",{"type":15,"tag":188,"props":445,"children":448},{"href":446,"rel":447},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[192],[449],{"type":21,"value":450},"chapter issues",{"type":21,"value":452},", e.g. by listing good resources for information.",{"type":15,"tag":48,"props":454,"children":455},{},[456,462,464],{"type":15,"tag":188,"props":457,"children":459},{"href":458},"#elements-of-a-module",[460],{"type":21,"value":461},"Author a lesson",{"type":21,"value":463},", e.g. by:\n",{"type":15,"tag":44,"props":465,"children":466},{},[467,476,485],{"type":15,"tag":48,"props":468,"children":469},{},[470],{"type":15,"tag":188,"props":471,"children":473},{"href":472},"#slides",[474],{"type":21,"value":475},"Creating slides",{"type":15,"tag":48,"props":477,"children":478},{},[479],{"type":15,"tag":188,"props":480,"children":482},{"href":481},"#exercises",[483],{"type":21,"value":484},"Designing an exercise",{"type":15,"tag":48,"props":486,"children":487},{},[488],{"type":15,"tag":188,"props":489,"children":491},{"href":490},"#online-resources",[492],{"type":21,"value":493},"Curating online resources",{"type":15,"tag":48,"props":495,"children":496},{},[497,499,506,508,515],{"type":21,"value":498},"Review a lesson module; both by looking at ",{"type":15,"tag":188,"props":500,"children":503},{"href":501,"rel":502},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[192],[504],{"type":21,"value":505},"open PRs",{"type":21,"value":507},", as well as flagging issues for improvement in the ",{"type":15,"tag":188,"props":509,"children":512},{"href":510,"rel":511},"https://esciencecenter-digital-skills.github.io/research-software-support/",[192],[513],{"type":21,"value":514},"existing content",{"type":21,"value":516},".",{"type":15,"tag":48,"props":518,"children":519},{},[520,527],{"type":15,"tag":188,"props":521,"children":524},{"href":522,"rel":523},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[192],[525],{"type":21,"value":526},"Provide feedback",{"type":21,"value":528}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":362,"depth":362,"links":530},[531],{"id":416,"depth":362,"text":419,"children":532},[533],{"id":427,"depth":10,"text":430},"local_fs:main:contribute.md","main/contribute.md",1715801014783] \ No newline at end of file diff --git a/modules/fairsoftware/exercise2/index.html b/modules/fairsoftware/exercise2/index.html index 6e61b54a..0f6e7f55 100644 --- a/modules/fairsoftware/exercise2/index.html +++ b/modules/fairsoftware/exercise2/index.html @@ -2,7 +2,7 @@ Mapping the principles - + - - - - - - - - + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - + + -

    Module: fairsoftware

    Exercise 2

    Mapping the principles

    The FAIR4RS Principles are:

    F: Software, and its associated metadata, is easy for both humans and machines to find.

    • F1. Software is assigned a globally unique and persistent identifier. +

      Module: fairsoftware

      Exercise 2

      Mapping the principles

      The FAIR4RS Principles are:

      F: Software, and its associated metadata, is easy for both humans and machines to find.

      • F1. Software is assigned a globally unique and persistent identifier.
        • F1.1. Components of the software representing levels of granularity are assigned distinct identifiers.
        • F1.2. Different versions of the software are assigned distinct identifiers.
      • F2. Software is described with rich metadata.
      • F3. Metadata clearly and explicitly include the identifier of the software they describe.
      • F4. Metadata are FAIR, searchable and indexable.

      A: Software, and its metadata, is retrievable via standardised protocols.

      • A1. Software is retrievable by its identifier using a standardised communications protocol.
        • A1.1. The protocol is open, free, and universally implementable.
        • A1.2. The protocol allows for an authentication and authorization procedure, where necessary.
      • A2. Metadata are accessible, even when the software is no longer available.

      I: Software interoperates with other software by exchanging data and/or metadata, and/or through interaction via application programming interfaces (APIs), described through standards.

      • I1. Software reads, writes and exchanges data in a way that meets domain-relevant community standards.
      • I2. Software includes qualified references to other objects.

      R: Software is both usable (can be executed) and reusable (can be understood, modified, built upon, or incorporated into other software).

      • R1. Software is described with a plurality of accurate and relevant attributes.
        • R1.1. Software is given a clear and accessible license.
        • R1.2. Software is associated with detailed provenance.
      • R2. Software includes qualified references to other software.
      • R3. Software meets domain-relevant community standards.

      Three examples

      The following three examples of software have been described with statements that can be mapped to the FAIR4RS Principles. With each statement, identify the principle(s) it maps to, and the (sub)facet(s) of the principle(s) it addresses. A single statement may map to multiple (sub)facets.

      Example 1: Comet

      Comet is a command-line tool and desktop application for tandem mass spectrometry sequence database search6.

      • Comet is licensed under the Apache 2.0 open source licence.
      • Comet is registered in the bio.tools catalogue of bioinformatics tools, where it has a globally unique and persistent identifier, and rich metadata that includes the identifier and is searchable and indexable.
      • The metadata in bio.tools is independent from the Comet repository, and will stay accessible should the software itself become inaccessible.
      • The publicly accessible project repository on GitHub includes detailed information about the development of Comet.
      • The code includes dependencies to external software packages, such as Thermo Scientific’s MSFileReader library.
      • Comet can be downloaded via the browser following the links provided in the metadata using https.
      • Comet uses standard data types from the proteomics domain for its input and output data that are documented in the metadata as functional annotations.

      Example 2: PureGoMe

      PuReGoMe is a project aimed at understanding Dutch public sentiment during the COVID-19 outbreak period by analysing real-time Twitter data. It provides a collection of Python scripts and Jupyter notebooks for this purpose.

      • PureGoMe can be downloaded from the project repository, while metadata is accessible independently from the registry.
      • PuReGoMe's GitHub repository has detailed records of the development history.
      • The code includes dependencies to other software, such as various Python libraries.
      • PuReGoMe has a (versioned) DOI from Zenodo.
      • PuReGoMe uses the Apache 2.0 open source licence.
      • PuReGoMe uses standard file formats (e.g., CSV files) for data exchange.
      • PuReGoMe refers to other objects such as websites.
      • PureGoMe is registered in the Research Software Directory that captures the most relevant metadata, including the identifier, in searchable and indexable form.

      Example 3: gammaShiny

      gammaShiny is an application that provides enhanced graphical user interfaces for the R gamma package8. It is used to process in-situ gamma-ray spectrometry measurements for luminescence dating.

      • gammaShiny has been deposited in the HAL French national archive and it has a persistent globally unique identifier, with the HAL identifier of the metadata record and a SWHID, identifying specifically the software artefact on the Software Heritage universal software source code archive.
      • Thanks to the HAL platform, where a licence is mandatory, gammaShiny is under a GNU General Public Licence v3.0.
      • The archived versions of gammaShiny’s source code in Software Heritage include a codemeta.json file, identifiable with a SWHID, where other metadata is available including dependencies named in CodeMeta ("softwareRequirements").

      Do you agree?

      The examples were taken from this paper. -In the Results section of the paper you will find the authors' analysis of the software, which contains the statements above, mapped to the FAIR4RS Principles.

      Do you agree with their assessment?

      - \ No newline at end of file +In the Results section of the paper you will find the authors' analysis of the software, which contains the statements above, mapped to the FAIR4RS Principles.

      Do you agree with their assessment?

    + \ No newline at end of file diff --git a/modules/fairsoftware/exercise3/_payload.json b/modules/fairsoftware/exercise3/_payload.json index 34f0994e..03ec0a0f 100644 --- a/modules/fairsoftware/exercise3/_payload.json +++ b/modules/fairsoftware/exercise3/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":289},["Reactive",2],{"content-query-ZrCepil2jB":3,"content-query-AT44bg6JPw":123},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":118,"_id":119,"_source":120,"_file":121,"_extension":122},"/modules/fairsoftware/exercise3","fairsoftware",false,"","FAIR in practice","exercise",4,{"type":12,"children":13,"toc":114},"root",[14,23,29,35,40,65,70,88,93,101,106],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-3",[20],{"type":21,"value":22},"text","Exercise 3",{"type":15,"tag":24,"props":25,"children":27},"h2",{"id":26},"fair-in-practice",[28],{"type":21,"value":8},{"type":15,"tag":30,"props":31,"children":32},"p",{},[33],{"type":21,"value":34},"Role playing exercise:\nOne person presents the software, the other person gives feedback.",{"type":15,"tag":30,"props":36,"children":37},{},[38],{"type":21,"value":39},"Tasks for presenter:",{"type":15,"tag":41,"props":42,"children":43},"ul",{},[44,50,55,60],{"type":15,"tag":45,"props":46,"children":47},"li",{},[48],{"type":21,"value":49},"What is the software about?",{"type":15,"tag":45,"props":51,"children":52},{},[53],{"type":21,"value":54},"Who will use it?",{"type":15,"tag":45,"props":56,"children":57},{},[58],{"type":21,"value":59},"What is the expected lifecycle of the software?",{"type":15,"tag":45,"props":61,"children":62},{},[63],{"type":21,"value":64},"What potential users or applications are untapped?",{"type":15,"tag":30,"props":66,"children":67},{},[68],{"type":21,"value":69},"Tasks for reviewer:",{"type":15,"tag":41,"props":71,"children":72},{},[73,78,83],{"type":15,"tag":45,"props":74,"children":75},{},[76],{"type":21,"value":77},"Which FAIR principles are addressed?",{"type":15,"tag":45,"props":79,"children":80},{},[81],{"type":21,"value":82},"How can the software be made more FAIR?",{"type":15,"tag":45,"props":84,"children":85},{},[86],{"type":21,"value":87},"What would be the next step (low-hanging fruit)?",{"type":15,"tag":30,"props":89,"children":90},{},[91],{"type":21,"value":92},"Together:",{"type":15,"tag":41,"props":94,"children":95},{},[96],{"type":15,"tag":45,"props":97,"children":98},{},[99],{"type":21,"value":100},"Define the next steps for the software",{"type":15,"tag":30,"props":102,"children":103},{},[104],{"type":21,"value":105},"Goals:",{"type":15,"tag":41,"props":107,"children":108},{},[109],{"type":15,"tag":45,"props":110,"children":111},{},[112],{"type":21,"value":113},"Frame an assessment positively: always start with assessing the things that have been done that contribute to good management and FAIR software. This is crucial, as well as motivating.",{"title":7,"searchDepth":115,"depth":115,"links":116},2,[117],{"id":26,"depth":115,"text":8},"markdown","local_fs:modules:fairsoftware:exercise3.md","local_fs","modules/fairsoftware/exercise3.md","md",[124,158],{"_path":125,"_dir":126,"_draft":6,"_partial":6,"_locale":7,"title":127,"description":7,"body":128,"_type":118,"_id":156,"_source":120,"_file":157,"_extension":122},"/main/about","main","About",{"type":12,"children":129,"toc":152},[130,136,141,147],{"type":15,"tag":24,"props":131,"children":133},{"id":132},"about-the-research-software-support",[134],{"type":21,"value":135},"About the Research Software Support",{"type":15,"tag":30,"props":137,"children":138},{},[139],{"type":21,"value":140},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":24,"props":142,"children":144},{"id":143},"target-audience",[145],{"type":21,"value":146},"Target audience",{"type":15,"tag":30,"props":148,"children":149},{},[150],{"type":21,"value":151},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":115,"depth":115,"links":153},[154,155],{"id":132,"depth":115,"text":135},{"id":143,"depth":115,"text":146},"local_fs:main:about.md","main/about.md",{"_path":159,"_dir":126,"_draft":6,"_partial":6,"_locale":7,"title":160,"description":7,"body":161,"_type":118,"_id":287,"_source":120,"_file":288,"_extension":122},"/main/contribute","Contribute",{"type":12,"children":162,"toc":281},[163,169,174,181,186],{"type":15,"tag":24,"props":164,"children":166},{"id":165},"contributing-to-the-research-software-support",[167],{"type":21,"value":168},"Contributing to the Research Software Support",{"type":15,"tag":30,"props":170,"children":171},{},[172],{"type":21,"value":173},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":175,"props":176,"children":178},"h3",{"id":177},"what-can-i-do",[179],{"type":21,"value":180},"What can I do?",{"type":15,"tag":30,"props":182,"children":183},{},[184],{"type":21,"value":185},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":41,"props":187,"children":188},{},[189,205,246,269],{"type":15,"tag":45,"props":190,"children":191},{},[192,194,203],{"type":21,"value":193},"Contribute to the content discussion in the ",{"type":15,"tag":195,"props":196,"children":200},"a",{"href":197,"rel":198},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[199],"nofollow",[201],{"type":21,"value":202},"chapter issues",{"type":21,"value":204},", e.g. by listing good resources for information.",{"type":15,"tag":45,"props":206,"children":207},{},[208,214,216],{"type":15,"tag":195,"props":209,"children":211},{"href":210},"#elements-of-a-module",[212],{"type":21,"value":213},"Author a lesson",{"type":21,"value":215},", e.g. by:\n",{"type":15,"tag":41,"props":217,"children":218},{},[219,228,237],{"type":15,"tag":45,"props":220,"children":221},{},[222],{"type":15,"tag":195,"props":223,"children":225},{"href":224},"#slides",[226],{"type":21,"value":227},"Creating slides",{"type":15,"tag":45,"props":229,"children":230},{},[231],{"type":15,"tag":195,"props":232,"children":234},{"href":233},"#exercises",[235],{"type":21,"value":236},"Designing an exercise",{"type":15,"tag":45,"props":238,"children":239},{},[240],{"type":15,"tag":195,"props":241,"children":243},{"href":242},"#online-resources",[244],{"type":21,"value":245},"Curating online resources",{"type":15,"tag":45,"props":247,"children":248},{},[249,251,258,260,267],{"type":21,"value":250},"Review a lesson module; both by looking at ",{"type":15,"tag":195,"props":252,"children":255},{"href":253,"rel":254},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[199],[256],{"type":21,"value":257},"open PRs",{"type":21,"value":259},", as well as flagging issues for improvement in the ",{"type":15,"tag":195,"props":261,"children":264},{"href":262,"rel":263},"https://esciencecenter-digital-skills.github.io/research-software-support/",[199],[265],{"type":21,"value":266},"existing content",{"type":21,"value":268},".",{"type":15,"tag":45,"props":270,"children":271},{},[272,279],{"type":15,"tag":195,"props":273,"children":276},{"href":274,"rel":275},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[199],[277],{"type":21,"value":278},"Provide feedback",{"type":21,"value":280}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":115,"depth":115,"links":282},[283],{"id":165,"depth":115,"text":168,"children":284},[285],{"id":177,"depth":286,"text":180},3,"local_fs:main:contribute.md","main/contribute.md",1715800937578] \ No newline at end of file +[{"data":1,"prerenderedAt":289},["Reactive",2],{"content-query-ZrCepil2jB":3,"content-query-AT44bg6JPw":123},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":118,"_id":119,"_source":120,"_file":121,"_extension":122},"/modules/fairsoftware/exercise3","fairsoftware",false,"","FAIR in practice","exercise",4,{"type":12,"children":13,"toc":114},"root",[14,23,29,35,40,65,70,88,93,101,106],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-3",[20],{"type":21,"value":22},"text","Exercise 3",{"type":15,"tag":24,"props":25,"children":27},"h2",{"id":26},"fair-in-practice",[28],{"type":21,"value":8},{"type":15,"tag":30,"props":31,"children":32},"p",{},[33],{"type":21,"value":34},"Role playing exercise:\nOne person presents the software, the other person gives feedback.",{"type":15,"tag":30,"props":36,"children":37},{},[38],{"type":21,"value":39},"Tasks for presenter:",{"type":15,"tag":41,"props":42,"children":43},"ul",{},[44,50,55,60],{"type":15,"tag":45,"props":46,"children":47},"li",{},[48],{"type":21,"value":49},"What is the software about?",{"type":15,"tag":45,"props":51,"children":52},{},[53],{"type":21,"value":54},"Who will use it?",{"type":15,"tag":45,"props":56,"children":57},{},[58],{"type":21,"value":59},"What is the expected lifecycle of the software?",{"type":15,"tag":45,"props":61,"children":62},{},[63],{"type":21,"value":64},"What potential users or applications are untapped?",{"type":15,"tag":30,"props":66,"children":67},{},[68],{"type":21,"value":69},"Tasks for reviewer:",{"type":15,"tag":41,"props":71,"children":72},{},[73,78,83],{"type":15,"tag":45,"props":74,"children":75},{},[76],{"type":21,"value":77},"Which FAIR principles are addressed?",{"type":15,"tag":45,"props":79,"children":80},{},[81],{"type":21,"value":82},"How can the software be made more FAIR?",{"type":15,"tag":45,"props":84,"children":85},{},[86],{"type":21,"value":87},"What would be the next step (low-hanging fruit)?",{"type":15,"tag":30,"props":89,"children":90},{},[91],{"type":21,"value":92},"Together:",{"type":15,"tag":41,"props":94,"children":95},{},[96],{"type":15,"tag":45,"props":97,"children":98},{},[99],{"type":21,"value":100},"Define the next steps for the software",{"type":15,"tag":30,"props":102,"children":103},{},[104],{"type":21,"value":105},"Goals:",{"type":15,"tag":41,"props":107,"children":108},{},[109],{"type":15,"tag":45,"props":110,"children":111},{},[112],{"type":21,"value":113},"Frame an assessment positively: always start with assessing the things that have been done that contribute to good management and FAIR software. This is crucial, as well as motivating.",{"title":7,"searchDepth":115,"depth":115,"links":116},2,[117],{"id":26,"depth":115,"text":8},"markdown","local_fs:modules:fairsoftware:exercise3.md","local_fs","modules/fairsoftware/exercise3.md","md",[124,158],{"_path":125,"_dir":126,"_draft":6,"_partial":6,"_locale":7,"title":127,"description":7,"body":128,"_type":118,"_id":156,"_source":120,"_file":157,"_extension":122},"/main/about","main","About",{"type":12,"children":129,"toc":152},[130,136,141,147],{"type":15,"tag":24,"props":131,"children":133},{"id":132},"about-the-research-software-support",[134],{"type":21,"value":135},"About the Research Software Support",{"type":15,"tag":30,"props":137,"children":138},{},[139],{"type":21,"value":140},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":24,"props":142,"children":144},{"id":143},"target-audience",[145],{"type":21,"value":146},"Target audience",{"type":15,"tag":30,"props":148,"children":149},{},[150],{"type":21,"value":151},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":115,"depth":115,"links":153},[154,155],{"id":132,"depth":115,"text":135},{"id":143,"depth":115,"text":146},"local_fs:main:about.md","main/about.md",{"_path":159,"_dir":126,"_draft":6,"_partial":6,"_locale":7,"title":160,"description":7,"body":161,"_type":118,"_id":287,"_source":120,"_file":288,"_extension":122},"/main/contribute","Contribute",{"type":12,"children":162,"toc":281},[163,169,174,181,186],{"type":15,"tag":24,"props":164,"children":166},{"id":165},"contributing-to-the-research-software-support",[167],{"type":21,"value":168},"Contributing to the Research Software Support",{"type":15,"tag":30,"props":170,"children":171},{},[172],{"type":21,"value":173},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":175,"props":176,"children":178},"h3",{"id":177},"what-can-i-do",[179],{"type":21,"value":180},"What can I do?",{"type":15,"tag":30,"props":182,"children":183},{},[184],{"type":21,"value":185},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":41,"props":187,"children":188},{},[189,205,246,269],{"type":15,"tag":45,"props":190,"children":191},{},[192,194,203],{"type":21,"value":193},"Contribute to the content discussion in the ",{"type":15,"tag":195,"props":196,"children":200},"a",{"href":197,"rel":198},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[199],"nofollow",[201],{"type":21,"value":202},"chapter issues",{"type":21,"value":204},", e.g. by listing good resources for information.",{"type":15,"tag":45,"props":206,"children":207},{},[208,214,216],{"type":15,"tag":195,"props":209,"children":211},{"href":210},"#elements-of-a-module",[212],{"type":21,"value":213},"Author a lesson",{"type":21,"value":215},", e.g. by:\n",{"type":15,"tag":41,"props":217,"children":218},{},[219,228,237],{"type":15,"tag":45,"props":220,"children":221},{},[222],{"type":15,"tag":195,"props":223,"children":225},{"href":224},"#slides",[226],{"type":21,"value":227},"Creating slides",{"type":15,"tag":45,"props":229,"children":230},{},[231],{"type":15,"tag":195,"props":232,"children":234},{"href":233},"#exercises",[235],{"type":21,"value":236},"Designing an exercise",{"type":15,"tag":45,"props":238,"children":239},{},[240],{"type":15,"tag":195,"props":241,"children":243},{"href":242},"#online-resources",[244],{"type":21,"value":245},"Curating online resources",{"type":15,"tag":45,"props":247,"children":248},{},[249,251,258,260,267],{"type":21,"value":250},"Review a lesson module; both by looking at ",{"type":15,"tag":195,"props":252,"children":255},{"href":253,"rel":254},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[199],[256],{"type":21,"value":257},"open PRs",{"type":21,"value":259},", as well as flagging issues for improvement in the ",{"type":15,"tag":195,"props":261,"children":264},{"href":262,"rel":263},"https://esciencecenter-digital-skills.github.io/research-software-support/",[199],[265],{"type":21,"value":266},"existing content",{"type":21,"value":268},".",{"type":15,"tag":45,"props":270,"children":271},{},[272,279],{"type":15,"tag":195,"props":273,"children":276},{"href":274,"rel":275},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[199],[277],{"type":21,"value":278},"Provide feedback",{"type":21,"value":280}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":115,"depth":115,"links":282},[283],{"id":165,"depth":115,"text":168,"children":284},[285],{"id":177,"depth":286,"text":180},3,"local_fs:main:contribute.md","main/contribute.md",1715801014786] \ No newline at end of file diff --git a/modules/fairsoftware/exercise3/index.html b/modules/fairsoftware/exercise3/index.html index c4445541..96df287c 100644 --- a/modules/fairsoftware/exercise3/index.html +++ b/modules/fairsoftware/exercise3/index.html @@ -2,7 +2,7 @@ FAIR in practice - + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - - + + -

    Module: fairsoftware

    Exercise 3

    FAIR in practice

    Role playing exercise: -One person presents the software, the other person gives feedback.

    Tasks for presenter:

    • What is the software about?
    • Who will use it?
    • What is the expected lifecycle of the software?
    • What potential users or applications are untapped?

    Tasks for reviewer:

    • Which FAIR principles are addressed?
    • How can the software be made more FAIR?
    • What would be the next step (low-hanging fruit)?

    Together:

    • Define the next steps for the software

    Goals:

    • Frame an assessment positively: always start with assessing the things that have been done that contribute to good management and FAIR software. This is crucial, as well as motivating.
    - \ No newline at end of file +

    Module: fairsoftware

    Exercise 3

    FAIR in practice

    Role playing exercise: +One person presents the software, the other person gives feedback.

    Tasks for presenter:

    • What is the software about?
    • Who will use it?
    • What is the expected lifecycle of the software?
    • What potential users or applications are untapped?

    Tasks for reviewer:

    • Which FAIR principles are addressed?
    • How can the software be made more FAIR?
    • What would be the next step (low-hanging fruit)?

    Together:

    • Define the next steps for the software

    Goals:

    • Frame an assessment positively: always start with assessing the things that have been done that contribute to good management and FAIR software. This is crucial, as well as motivating.
    + \ No newline at end of file diff --git a/modules/fairsoftware/info/_payload.json b/modules/fairsoftware/info/_payload.json index 49c66f42..276ec914 100644 --- a/modules/fairsoftware/info/_payload.json +++ b/modules/fairsoftware/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-7FnyqI8tyC":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/fairsoftware/info","fairsoftware",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:fairsoftware:info.md","local_fs","modules/fairsoftware/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715800937072] \ No newline at end of file +[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-7FnyqI8tyC":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/fairsoftware/info","fairsoftware",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:fairsoftware:info.md","local_fs","modules/fairsoftware/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715801014242] \ No newline at end of file diff --git a/modules/fairsoftware/info/index.html b/modules/fairsoftware/info/index.html index e6fd0713..a5d06486 100644 --- a/modules/fairsoftware/info/index.html +++ b/modules/fairsoftware/info/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - + + + - - + + -

    Module: fairsoftware

    Learning objectives for the FAIR software module

    - \ No newline at end of file +

    Module: fairsoftware

    Learning objectives for the FAIR software module

    + \ No newline at end of file diff --git a/modules/fairsoftware/reading/_payload.json b/modules/fairsoftware/reading/_payload.json index 6a68d0b9..7dbf425a 100644 --- a/modules/fairsoftware/reading/_payload.json +++ b/modules/fairsoftware/reading/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":243},["Reactive",2],{"content-query-r8HvLWbVIW":3,"content-query-AT44bg6JPw":79},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":74,"_id":75,"_source":76,"_file":77,"_extension":78},"/modules/fairsoftware/reading","fairsoftware",false,"","Reading material","reading",5,{"type":12,"children":13,"toc":67},"root",[14,22,29,35,42],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"reading-material",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"fair-software",[27],{"type":21,"value":28},"FAIR software",{"type":15,"tag":30,"props":31,"children":32},"p",{},[33],{"type":21,"value":34},"Follow the links below to read about other resources related to FAIR research software.",{"type":15,"tag":36,"props":37,"children":39},"h3",{"id":38},"fair-research-software-principles-adoption",[40],{"type":21,"value":41},"FAIR Research Software Principles adoption",{"type":15,"tag":30,"props":43,"children":44},{},[45,47,56,58,65],{"type":21,"value":46},"The FAIR4RS Principles were ",{"type":15,"tag":48,"props":49,"children":53},"a",{"href":50,"rel":51},"https://doi.org/10.15497/RDA00068",[52],"nofollow",[54],{"type":21,"value":55},"released in 2022",{"type":21,"value":57},", and since then there have been many efforts for adopting them.\nThe blog post ",{"type":15,"tag":48,"props":59,"children":62},{"href":60,"rel":61},"https://www.researchsoft.org/blog/2024-03/",[52],[63],{"type":21,"value":64},"The FAIR for Research Software Principles after two years: an adoption update",{"type":21,"value":66}," contains a summary of these efforts.",{"title":7,"searchDepth":68,"depth":68,"links":69},2,[70],{"id":25,"depth":68,"text":28,"children":71},[72],{"id":38,"depth":73,"text":41},3,"markdown","local_fs:modules:fairsoftware:reading.md","local_fs","modules/fairsoftware/reading.md","md",[80,114],{"_path":81,"_dir":82,"_draft":6,"_partial":6,"_locale":7,"title":83,"description":7,"body":84,"_type":74,"_id":112,"_source":76,"_file":113,"_extension":78},"/main/about","main","About",{"type":12,"children":85,"toc":108},[86,92,97,103],{"type":15,"tag":23,"props":87,"children":89},{"id":88},"about-the-research-software-support",[90],{"type":21,"value":91},"About the Research Software Support",{"type":15,"tag":30,"props":93,"children":94},{},[95],{"type":21,"value":96},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":98,"children":100},{"id":99},"target-audience",[101],{"type":21,"value":102},"Target audience",{"type":15,"tag":30,"props":104,"children":105},{},[106],{"type":21,"value":107},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":68,"depth":68,"links":109},[110,111],{"id":88,"depth":68,"text":91},{"id":99,"depth":68,"text":102},"local_fs:main:about.md","main/about.md",{"_path":115,"_dir":82,"_draft":6,"_partial":6,"_locale":7,"title":116,"description":7,"body":117,"_type":74,"_id":241,"_source":76,"_file":242,"_extension":78},"/main/contribute","Contribute",{"type":12,"children":118,"toc":236},[119,125,130,136,141],{"type":15,"tag":23,"props":120,"children":122},{"id":121},"contributing-to-the-research-software-support",[123],{"type":21,"value":124},"Contributing to the Research Software Support",{"type":15,"tag":30,"props":126,"children":127},{},[128],{"type":21,"value":129},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":36,"props":131,"children":133},{"id":132},"what-can-i-do",[134],{"type":21,"value":135},"What can I do?",{"type":15,"tag":30,"props":137,"children":138},{},[139],{"type":21,"value":140},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":142,"props":143,"children":144},"ul",{},[145,160,201,224],{"type":15,"tag":146,"props":147,"children":148},"li",{},[149,151,158],{"type":21,"value":150},"Contribute to the content discussion in the ",{"type":15,"tag":48,"props":152,"children":155},{"href":153,"rel":154},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[52],[156],{"type":21,"value":157},"chapter issues",{"type":21,"value":159},", e.g. by listing good resources for information.",{"type":15,"tag":146,"props":161,"children":162},{},[163,169,171],{"type":15,"tag":48,"props":164,"children":166},{"href":165},"#elements-of-a-module",[167],{"type":21,"value":168},"Author a lesson",{"type":21,"value":170},", e.g. by:\n",{"type":15,"tag":142,"props":172,"children":173},{},[174,183,192],{"type":15,"tag":146,"props":175,"children":176},{},[177],{"type":15,"tag":48,"props":178,"children":180},{"href":179},"#slides",[181],{"type":21,"value":182},"Creating slides",{"type":15,"tag":146,"props":184,"children":185},{},[186],{"type":15,"tag":48,"props":187,"children":189},{"href":188},"#exercises",[190],{"type":21,"value":191},"Designing an exercise",{"type":15,"tag":146,"props":193,"children":194},{},[195],{"type":15,"tag":48,"props":196,"children":198},{"href":197},"#online-resources",[199],{"type":21,"value":200},"Curating online resources",{"type":15,"tag":146,"props":202,"children":203},{},[204,206,213,215,222],{"type":21,"value":205},"Review a lesson module; both by looking at ",{"type":15,"tag":48,"props":207,"children":210},{"href":208,"rel":209},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[52],[211],{"type":21,"value":212},"open PRs",{"type":21,"value":214},", as well as flagging issues for improvement in the ",{"type":15,"tag":48,"props":216,"children":219},{"href":217,"rel":218},"https://esciencecenter-digital-skills.github.io/research-software-support/",[52],[220],{"type":21,"value":221},"existing content",{"type":21,"value":223},".",{"type":15,"tag":146,"props":225,"children":226},{},[227,234],{"type":15,"tag":48,"props":228,"children":231},{"href":229,"rel":230},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[52],[232],{"type":21,"value":233},"Provide feedback",{"type":21,"value":235}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":68,"depth":68,"links":237},[238],{"id":121,"depth":68,"text":124,"children":239},[240],{"id":132,"depth":73,"text":135},"local_fs:main:contribute.md","main/contribute.md",1715800937592] \ No newline at end of file +[{"data":1,"prerenderedAt":243},["Reactive",2],{"content-query-r8HvLWbVIW":3,"content-query-AT44bg6JPw":79},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":74,"_id":75,"_source":76,"_file":77,"_extension":78},"/modules/fairsoftware/reading","fairsoftware",false,"","Reading material","reading",5,{"type":12,"children":13,"toc":67},"root",[14,22,29,35,42],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"reading-material",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"fair-software",[27],{"type":21,"value":28},"FAIR software",{"type":15,"tag":30,"props":31,"children":32},"p",{},[33],{"type":21,"value":34},"Follow the links below to read about other resources related to FAIR research software.",{"type":15,"tag":36,"props":37,"children":39},"h3",{"id":38},"fair-research-software-principles-adoption",[40],{"type":21,"value":41},"FAIR Research Software Principles adoption",{"type":15,"tag":30,"props":43,"children":44},{},[45,47,56,58,65],{"type":21,"value":46},"The FAIR4RS Principles were ",{"type":15,"tag":48,"props":49,"children":53},"a",{"href":50,"rel":51},"https://doi.org/10.15497/RDA00068",[52],"nofollow",[54],{"type":21,"value":55},"released in 2022",{"type":21,"value":57},", and since then there have been many efforts for adopting them.\nThe blog post ",{"type":15,"tag":48,"props":59,"children":62},{"href":60,"rel":61},"https://www.researchsoft.org/blog/2024-03/",[52],[63],{"type":21,"value":64},"The FAIR for Research Software Principles after two years: an adoption update",{"type":21,"value":66}," contains a summary of these efforts.",{"title":7,"searchDepth":68,"depth":68,"links":69},2,[70],{"id":25,"depth":68,"text":28,"children":71},[72],{"id":38,"depth":73,"text":41},3,"markdown","local_fs:modules:fairsoftware:reading.md","local_fs","modules/fairsoftware/reading.md","md",[80,114],{"_path":81,"_dir":82,"_draft":6,"_partial":6,"_locale":7,"title":83,"description":7,"body":84,"_type":74,"_id":112,"_source":76,"_file":113,"_extension":78},"/main/about","main","About",{"type":12,"children":85,"toc":108},[86,92,97,103],{"type":15,"tag":23,"props":87,"children":89},{"id":88},"about-the-research-software-support",[90],{"type":21,"value":91},"About the Research Software Support",{"type":15,"tag":30,"props":93,"children":94},{},[95],{"type":21,"value":96},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":98,"children":100},{"id":99},"target-audience",[101],{"type":21,"value":102},"Target audience",{"type":15,"tag":30,"props":104,"children":105},{},[106],{"type":21,"value":107},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":68,"depth":68,"links":109},[110,111],{"id":88,"depth":68,"text":91},{"id":99,"depth":68,"text":102},"local_fs:main:about.md","main/about.md",{"_path":115,"_dir":82,"_draft":6,"_partial":6,"_locale":7,"title":116,"description":7,"body":117,"_type":74,"_id":241,"_source":76,"_file":242,"_extension":78},"/main/contribute","Contribute",{"type":12,"children":118,"toc":236},[119,125,130,136,141],{"type":15,"tag":23,"props":120,"children":122},{"id":121},"contributing-to-the-research-software-support",[123],{"type":21,"value":124},"Contributing to the Research Software Support",{"type":15,"tag":30,"props":126,"children":127},{},[128],{"type":21,"value":129},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":36,"props":131,"children":133},{"id":132},"what-can-i-do",[134],{"type":21,"value":135},"What can I do?",{"type":15,"tag":30,"props":137,"children":138},{},[139],{"type":21,"value":140},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":142,"props":143,"children":144},"ul",{},[145,160,201,224],{"type":15,"tag":146,"props":147,"children":148},"li",{},[149,151,158],{"type":21,"value":150},"Contribute to the content discussion in the ",{"type":15,"tag":48,"props":152,"children":155},{"href":153,"rel":154},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[52],[156],{"type":21,"value":157},"chapter issues",{"type":21,"value":159},", e.g. by listing good resources for information.",{"type":15,"tag":146,"props":161,"children":162},{},[163,169,171],{"type":15,"tag":48,"props":164,"children":166},{"href":165},"#elements-of-a-module",[167],{"type":21,"value":168},"Author a lesson",{"type":21,"value":170},", e.g. by:\n",{"type":15,"tag":142,"props":172,"children":173},{},[174,183,192],{"type":15,"tag":146,"props":175,"children":176},{},[177],{"type":15,"tag":48,"props":178,"children":180},{"href":179},"#slides",[181],{"type":21,"value":182},"Creating slides",{"type":15,"tag":146,"props":184,"children":185},{},[186],{"type":15,"tag":48,"props":187,"children":189},{"href":188},"#exercises",[190],{"type":21,"value":191},"Designing an exercise",{"type":15,"tag":146,"props":193,"children":194},{},[195],{"type":15,"tag":48,"props":196,"children":198},{"href":197},"#online-resources",[199],{"type":21,"value":200},"Curating online resources",{"type":15,"tag":146,"props":202,"children":203},{},[204,206,213,215,222],{"type":21,"value":205},"Review a lesson module; both by looking at ",{"type":15,"tag":48,"props":207,"children":210},{"href":208,"rel":209},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[52],[211],{"type":21,"value":212},"open PRs",{"type":21,"value":214},", as well as flagging issues for improvement in the ",{"type":15,"tag":48,"props":216,"children":219},{"href":217,"rel":218},"https://esciencecenter-digital-skills.github.io/research-software-support/",[52],[220],{"type":21,"value":221},"existing content",{"type":21,"value":223},".",{"type":15,"tag":146,"props":225,"children":226},{},[227,234],{"type":15,"tag":48,"props":228,"children":231},{"href":229,"rel":230},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[52],[232],{"type":21,"value":233},"Provide feedback",{"type":21,"value":235}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":68,"depth":68,"links":237},[238],{"id":121,"depth":68,"text":124,"children":239},[240],{"id":132,"depth":73,"text":135},"local_fs:main:contribute.md","main/contribute.md",1715801014793] \ No newline at end of file diff --git a/modules/fairsoftware/reading/index.html b/modules/fairsoftware/reading/index.html index b6c4ce7d..389f7943 100644 --- a/modules/fairsoftware/reading/index.html +++ b/modules/fairsoftware/reading/index.html @@ -2,7 +2,7 @@ Reading material - + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - - + + -

    Module: fairsoftware

    Reading material

    FAIR software

    Follow the links below to read about other resources related to FAIR research software.

    FAIR Research Software Principles adoption

    The FAIR4RS Principles were released in 2022, and since then there have been many efforts for adopting them. -The blog post The FAIR for Research Software Principles after two years: an adoption update contains a summary of these efforts.

    - \ No newline at end of file +

    Module: fairsoftware

    Reading material

    FAIR software

    Follow the links below to read about other resources related to FAIR research software.

    FAIR Research Software Principles adoption

    The FAIR4RS Principles were released in 2022, and since then there have been many efforts for adopting them. +The blog post The FAIR for Research Software Principles after two years: an adoption update contains a summary of these efforts.

    + \ No newline at end of file diff --git a/modules/fairsoftware/slides-fairsoftware/_payload.json b/modules/fairsoftware/slides-fairsoftware/_payload.json index 37b95e59..c23b3337 100644 --- a/modules/fairsoftware/slides-fairsoftware/_payload.json +++ b/modules/fairsoftware/slides-fairsoftware/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1064},["Reactive",2],{"content-query-md0S2SJMLS":3,"content-query-AT44bg6JPw":901},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":896,"_id":897,"_source":898,"_file":899,"_extension":900},"/modules/fairsoftware/slides-fairsoftware","fairsoftware",false,"","FAIR software","slides",1,{"type":12,"children":13,"toc":880},"root",[14,19,26,29,40,50,69,74,86,91,96,101,104,111,119,123,128,131,139,154,159,162,168,176,181,184,192,197,200,206,211,257,262,267,272,295,298,304,341,346,349,357,369,377,382,385,393,398,401,407,415,471,476,481,486,489,495,503,533,538,541,547,555,584,589,594,597,603,611,694,699,702,709,714,727,739,762,767,772,777,782,787,790,796,803,807,812,817,820,826,853,856,866,875],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h1",{"id":22},"fair-software",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":30,"props":31,"children":33},"h2",{"id":32},"ceci-nest-pas-une-photo",[34],{"type":15,"tag":35,"props":36,"children":37},"em",{},[38],{"type":25,"value":39},"Ceci n'est pas une photo",{"type":15,"tag":41,"props":42,"children":43},"center",{},[44],{"type":15,"tag":45,"props":46,"children":49},"img",{"src":47,"width":48},"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Black_hole_-_Messier_87_crop_max_res.jpg/1280px-Black_hole_-_Messier_87_crop_max_res.jpg","55%",[],{"type":15,"tag":51,"props":52,"children":53},"p",{},[54],{"type":15,"tag":55,"props":56,"children":57},"small",{},[58,67],{"type":15,"tag":59,"props":60,"children":64},"a",{"href":61,"rel":62},"https://doi.org/10.3847/2041-8213/ab0ec7",[63],"nofollow",[65],{"type":25,"value":66},"The Event Horizon Telescope Collaboration et al. 2019",{"type":25,"value":68}," (CC BY 3.0)",{"type":15,"tag":51,"props":70,"children":71},{},[72],{"type":25,"value":73},"Note:",{"type":15,"tag":51,"props":75,"children":76},{},[77,79,84],{"type":25,"value":78},"Software plays an important role in science. A first thought may be its role in data collection and analysis. Further, it may play a role in designing experiments, based on models generated. It may ",{"type":15,"tag":35,"props":80,"children":81},{},[82],{"type":25,"value":83},"be",{"type":25,"value":85}," the experiment itself, simulate a research outcome based on data or ideas entered; it may also be the \"brain\" behind controlling crucial instrumentation.",{"type":15,"tag":51,"props":87,"children":88},{},[89],{"type":25,"value":90},"What scientific software can you think of?",{"type":15,"tag":51,"props":92,"children":93},{},[94],{"type":25,"value":95},"What role does it play?",{"type":15,"tag":51,"props":97,"children":98},{},[99],{"type":25,"value":100},"An example here: the Event Horizon Telescope, which took a \"picture\" of a black hole.\nThe \"telescope\" is not a single tool, but complex: a \"planet-scale array of eight ground-based radio telescopes\" (wikipedia).\nThe separate telescopes collect data that is synchronized with atomic clocks, and the data is combined at highly specialised supercomputers.\nThe data can be converted into an image using custom software.",{"type":15,"tag":16,"props":102,"children":103},{},[],{"type":15,"tag":41,"props":105,"children":106},{},[107],{"type":15,"tag":45,"props":108,"children":110},{"src":109,"width":48},"media/definition.png",[],{"type":15,"tag":51,"props":112,"children":113},{},[114],{"type":15,"tag":55,"props":115,"children":116},{},[117],{"type":25,"value":118},"definition of Research Software from the FAIR4RS working group",{"type":15,"tag":51,"props":120,"children":121},{},[122],{"type":25,"value":73},{"type":15,"tag":51,"props":124,"children":125},{},[126],{"type":25,"value":127},"A definition of research software, from the FAIR4RS working group.\nIt is important that not all software that is used in research is research software.\nFor example, a text editor that is used to write a paper is not research software.\nNor is powerpoint, a web browser, or the software used to guide the telescope.\nEven tools like R or Python are not necessarily research software.\nThe code written in R or Python for an analysis would be research software, however.\nJust like a custom-made Excel macro that is used to analyse data.\nOr a custom-made web application that is used to collect data.",{"type":15,"tag":16,"props":129,"children":130},{},[],{"type":15,"tag":41,"props":132,"children":133},{},[134],{"type":15,"tag":45,"props":135,"children":138},{"src":136,"width":137},"media/unescoopenscience.png","50%",[],{"type":15,"tag":51,"props":140,"children":141},{},[142],{"type":15,"tag":55,"props":143,"children":144},{},[145,152],{"type":15,"tag":59,"props":146,"children":149},{"href":147,"rel":148},"https://creativecommons.org/2021/12/02/unesco-recommendation-on-open-science-ratified/",[63],[150],{"type":25,"value":151},"UNESCO Recommendation on Open Science, 2021",{"type":25,"value":153}," (CC BY IGO 3.0)",{"type":15,"tag":51,"props":155,"children":156},{},[157],{"type":25,"value":158},"Note:\nOpen Science encompasses many aspects of science.\nIt is a movement that aims to make science — which includes software — more open, transparent, and accessible.\nThis is supported by many organisations, including UNESCO.",{"type":15,"tag":16,"props":160,"children":161},{},[],{"type":15,"tag":30,"props":163,"children":165},{"id":164},"the-fair-principles",[166],{"type":25,"value":167},"The FAIR principles",{"type":15,"tag":41,"props":169,"children":170},{},[171],{"type":15,"tag":45,"props":172,"children":175},{"src":173,"width":174},"media/fair.png","60%",[],{"type":15,"tag":51,"props":177,"children":178},{},[179],{"type":25,"value":180},"Note:\nthe FAIR principles standardize values that help openness, transparency, and accessibility.",{"type":15,"tag":16,"props":182,"children":183},{},[],{"type":15,"tag":51,"props":185,"children":186},{},[187],{"type":15,"tag":45,"props":188,"children":191},{"alt":189,"src":190},"screenshot Wilkinson 2016","media/fairwilkinson.png",[],{"type":15,"tag":51,"props":193,"children":194},{},[195],{"type":25,"value":196},"Note:\nFAIR principles were originally designed for data, but are also applicable to software.\nDesigned also with other digital objects in mind, though actual description was data-specific.\nThis has been extended meanwhile.",{"type":15,"tag":16,"props":198,"children":199},{},[],{"type":15,"tag":30,"props":201,"children":203},{"id":202},"software-is-not-data",[204],{"type":25,"value":205},"Software is not data",{"type":15,"tag":51,"props":207,"children":208},{},[209],{"type":25,"value":210},"Software is...",{"type":15,"tag":212,"props":213,"children":214},"ul",{},[215,227,237,247],{"type":15,"tag":216,"props":217,"children":218},"li",{},[219,225],{"type":15,"tag":220,"props":221,"children":222},"strong",{},[223],{"type":25,"value":224},"complex",{"type":25,"value":226},": code is creatively generated, interconnected and multi-layered",{"type":15,"tag":216,"props":228,"children":229},{},[230,235],{"type":15,"tag":220,"props":231,"children":232},{},[233],{"type":25,"value":234},"interdependent",{"type":25,"value":236},": it builds upon and therefore depends on other software",{"type":15,"tag":216,"props":238,"children":239},{},[240,245],{"type":15,"tag":220,"props":241,"children":242},{},[243],{"type":25,"value":244},"executable",{"type":25,"value":246},": it is not static, but can be run",{"type":15,"tag":216,"props":248,"children":249},{},[250,255],{"type":15,"tag":220,"props":251,"children":252},{},[253],{"type":25,"value":254},"dynamic",{"type":25,"value":256},": it can break over time, and versioning is common",{"type":15,"tag":51,"props":258,"children":259},{},[260],{"type":25,"value":261},"Note:\nWhile technically, software is a special kind of data (in that it is representation of information in a digital state), they are in essence quite different.",{"type":15,"tag":51,"props":263,"children":264},{},[265],{"type":25,"value":266},"Software and data both are digital objects, sharing certain characteristics: they can be assigned a DOI, and they can have a license.",{"type":15,"tag":51,"props":268,"children":269},{},[270],{"type":25,"value":271},"Software is quite different from data, however. Consider:",{"type":15,"tag":212,"props":273,"children":274},{},[275,280,285,290],{"type":15,"tag":216,"props":276,"children":277},{},[278],{"type":25,"value":279},"Complexity; it is not a single file, but a collection of files that are interconnected and multi-layered, and do not necessarily stand on their own. Software is also the result of a creative process that provides a tool to do something, and not the result of a measurement or observation.",{"type":15,"tag":216,"props":281,"children":282},{},[283],{"type":25,"value":284},"Interdependence; software is often built using other software, and rarely built completely from scratch. This makes it dependent on other existing applications, which themselves may also change over time.",{"type":15,"tag":216,"props":286,"children":287},{},[288],{"type":25,"value":289},"Executability; software is in its dryest form a set of instructions that can be an archive of a procedure. However, the main goal of software is that these instructions can be executed. Data, by contrast, stand on their own.",{"type":15,"tag":216,"props":291,"children":292},{},[293],{"type":25,"value":294},"Dynamic vs static; its interdependence and context-dependency drives software to require maintenance to retain its value, and this maintenance is not straightforward. Maintenance is also counter to academic culture; it does not fit in existing structures (both in terms of reward/recognition, but also in terms of funding and understanding of what is needed). Versioning of software is very common, while data is often static (though versions may happen).",{"type":15,"tag":16,"props":296,"children":297},{},[],{"type":15,"tag":30,"props":299,"children":301},{"id":300},"software-opportunities",[302],{"type":25,"value":303},"Software opportunities",{"type":15,"tag":212,"props":305,"children":306},{},[307,317,329],{"type":15,"tag":216,"props":308,"children":309},{},[310,312],{"type":25,"value":311},"Software is a ",{"type":15,"tag":220,"props":313,"children":314},{},[315],{"type":25,"value":316},"living thing",{"type":15,"tag":216,"props":318,"children":319},{},[320,322,327],{"type":25,"value":321},"Creative process allows for ",{"type":15,"tag":220,"props":323,"children":324},{},[325],{"type":25,"value":326},"early adoption",{"type":25,"value":328}," of good practices",{"type":15,"tag":216,"props":330,"children":331},{},[332,334,339],{"type":25,"value":333},"Openness and transparency are ",{"type":15,"tag":220,"props":335,"children":336},{},[337],{"type":25,"value":338},"inherent",{"type":25,"value":340}," to software",{"type":15,"tag":51,"props":342,"children":343},{},[344],{"type":25,"value":345},"Note:\nThe different nature of software also provides opportunities.\nSoftware is a living thing, and therefore it is easier to adopt good practices early on.\nCrucially, there is a community driven openness in software that long predates the open science movement.\nThis is not to say that software is inherently open, but that there is a broad open culture, which also comes with existing tools and pathways to facilitate openness and transparency.\nConsider GitHub (and other code hosting platforms), which are designed for this purpose.\nConsider also version control software, a good software development practice that builds in provenance.",{"type":15,"tag":16,"props":347,"children":348},{},[],{"type":15,"tag":51,"props":350,"children":351},{},[352],{"type":15,"tag":45,"props":353,"children":356},{"alt":354,"src":355},"FAIR for Research Software paper","media/fair4rs_paper.png",[],{"type":15,"tag":51,"props":358,"children":359},{},[360,362],{"type":25,"value":361},"Fair 4 Research Software (FAIR4RS) working group (2022)\n",{"type":15,"tag":59,"props":363,"children":366},{"href":364,"rel":365},"https://doi.org/10.1038/s41597-022-01710-x",[63],[367],{"type":25,"value":368},"doi:10.1038/s41597-022-01710-x",{"type":15,"tag":51,"props":370,"children":371},{},[372],{"type":15,"tag":45,"props":373,"children":376},{"alt":374,"src":375},"Contributing Organizations","media/fair4rs_logos.png",[],{"type":15,"tag":51,"props":378,"children":379},{},[380],{"type":25,"value":381},"Note:\nIn 2022, the results of extensive community consultation were published in the FAIR for Research Software paper.\nThe group behind this was a collaboration between the Research Software Alliance, the Research Data Alliance, and FORCE11.",{"type":15,"tag":16,"props":383,"children":384},{},[],{"type":15,"tag":51,"props":386,"children":387},{},[388],{"type":15,"tag":45,"props":389,"children":392},{"alt":390,"src":391},"FAIR for Research Software principles","media/fair4rs_principles.png",[],{"type":15,"tag":51,"props":394,"children":395},{},[396],{"type":25,"value":397},"Note:\nThese are the interpretations given to the FAIR principles for software by the working group.\nIn many cases these are rephrased to better fit software, but in some cases they are also extended.",{"type":15,"tag":16,"props":399,"children":400},{},[],{"type":15,"tag":30,"props":402,"children":404},{"id":403},"findability",[405],{"type":25,"value":406},"Findability",{"type":15,"tag":51,"props":408,"children":409},{},[410],{"type":15,"tag":45,"props":411,"children":414},{"alt":412,"src":413},"FAIR4RS Findability","media/fair4rs_F.png",[],{"type":15,"tag":212,"props":416,"children":417},{},[418,432,445,458],{"type":15,"tag":216,"props":419,"children":420},{},[421,423,427],{"type":25,"value":422},"Archive on Zenodo for DOI and persistence",{"type":15,"tag":424,"props":425,"children":426},"br",{},[],{"type":15,"tag":55,"props":428,"children":429},{},[430],{"type":25,"value":431}," Note that persistence on GitHub is not guaranteed!",{"type":15,"tag":216,"props":433,"children":434},{},[435,437,440],{"type":25,"value":436},"Use (semantic) versioning with updates",{"type":15,"tag":424,"props":438,"children":439},{},[],{"type":15,"tag":55,"props":441,"children":442},{},[443],{"type":25,"value":444}," Zenodo assigns a DOI to each version ",{"type":15,"tag":216,"props":446,"children":447},{},[448,450,453],{"type":25,"value":449},"Include metadata, explicitly containing the DOI",{"type":15,"tag":424,"props":451,"children":452},{},[],{"type":15,"tag":55,"props":454,"children":455},{},[456],{"type":25,"value":457}," but also license, version, dependencies, etc. ",{"type":15,"tag":216,"props":459,"children":460},{},[461,463,466],{"type":25,"value":462},"Register the software in a community registry",{"type":15,"tag":424,"props":464,"children":465},{},[],{"type":15,"tag":55,"props":467,"children":468},{},[469],{"type":25,"value":470}," such as PyPI or CRAN, depending on the language/domain ",{"type":15,"tag":51,"props":472,"children":473},{},[474],{"type":25,"value":475},"Note:\nFor software findability, a few things need to work together:",{"type":15,"tag":51,"props":477,"children":478},{},[479],{"type":25,"value":480},"The software needs to be archived on a platform that provides a DOI and persistence. GitHub is not guaranteed to provide this, and while it is a useful tool is not a suitable archive for software.\nGitHub does work well together with Zenodo, which provides both.\nTogether they also provide functionality for versioning: when releasing a new version on GitHub, and using the Zenodo integration, Zenodo will update the entry and assign a new DOI to the new version.",{"type":15,"tag":51,"props":482,"children":483},{},[484],{"type":25,"value":485},"For software-specific findability, though, Zenodo is insufficient. Here, you can think of more specific registries, such as PyPI, CRAN, or Bioconductor; depending on the language and domain of the software.",{"type":15,"tag":16,"props":487,"children":488},{},[],{"type":15,"tag":30,"props":490,"children":492},{"id":491},"accessibility",[493],{"type":25,"value":494},"Accessibility",{"type":15,"tag":51,"props":496,"children":497},{},[498],{"type":15,"tag":45,"props":499,"children":502},{"alt":500,"src":501},"FAIR4RS Accessibility","media/fair4rs_A.png",[],{"type":15,"tag":212,"props":504,"children":505},{},[506,528],{"type":15,"tag":216,"props":507,"children":508},{},[509,511,514],{"type":25,"value":510},"Community registries provide standard download protocols",{"type":15,"tag":424,"props":512,"children":513},{},[],{"type":15,"tag":55,"props":515,"children":516},{},[517,519,526],{"type":25,"value":518}," e.g. ",{"type":15,"tag":520,"props":521,"children":523},"code",{"className":522},[],[524],{"type":25,"value":525},"pip install my_software",{"type":25,"value":527}," ",{"type":15,"tag":216,"props":529,"children":530},{},[531],{"type":25,"value":532},"Metadata on Zenodo is part of the persistent archive",{"type":15,"tag":51,"props":534,"children":535},{},[536],{"type":25,"value":537},"Note:\nA lot of accessibility is covered by the findability principles, but there are a few additional things to consider.\nSpecifically, software may still be FAIR as long as its metadata is accessible.\nThe code of the software itself, not the actual functional engine, could be considered metadata.",{"type":15,"tag":16,"props":539,"children":540},{},[],{"type":15,"tag":30,"props":542,"children":544},{"id":543},"interoperability",[545],{"type":25,"value":546},"Interoperability",{"type":15,"tag":51,"props":548,"children":549},{},[550],{"type":15,"tag":45,"props":551,"children":554},{"alt":552,"src":553},"FAIR4RS Interoperability","media/fair4rs_I.png",[],{"type":15,"tag":212,"props":556,"children":557},{},[558,571],{"type":15,"tag":216,"props":559,"children":560},{},[561,563,566],{"type":25,"value":562},"Input and output both needs to meet community standards",{"type":15,"tag":424,"props":564,"children":565},{},[],{"type":15,"tag":55,"props":567,"children":568},{},[569],{"type":25,"value":570}," e.g. file formats, data models, ontologies ",{"type":15,"tag":216,"props":572,"children":573},{},[574,576,579],{"type":25,"value":575},"References to external objects should be unambiguous",{"type":15,"tag":424,"props":577,"children":578},{},[],{"type":15,"tag":55,"props":580,"children":581},{},[582],{"type":25,"value":583}," use URLs, DOIs, version numbers etc. ",{"type":15,"tag":51,"props":585,"children":586},{},[587],{"type":25,"value":588},"Note:\nAs with data, interoperability refers partly to formats and standards (in this case: inputs, outputs, or other objects used). For example CSV, JSON, and XML are interoperable formats, while PDF is not.\nThese standards may also be domain-specific, such as the use of ontologies in the life sciences.",{"type":15,"tag":51,"props":590,"children":591},{},[592],{"type":25,"value":593},"The second sub-principle refers to the use of unambiguous references to external objects, such as libraries, data, or models. A clear link allows the right object to be used by the software.",{"type":15,"tag":16,"props":595,"children":596},{},[],{"type":15,"tag":30,"props":598,"children":600},{"id":599},"reusability",[601],{"type":25,"value":602},"Reusability",{"type":15,"tag":51,"props":604,"children":605},{},[606],{"type":15,"tag":45,"props":607,"children":610},{"alt":608,"src":609},"FAIR4RS Reusability","media/fair4rs_R.png",[],{"type":15,"tag":212,"props":612,"children":613},{},[614,635,655,668,681],{"type":15,"tag":216,"props":615,"children":616},{},[617,619,622],{"type":25,"value":618},"Include a software-specific license",{"type":15,"tag":424,"props":620,"children":621},{},[],{"type":15,"tag":55,"props":623,"children":624},{},[625,627,633],{"type":25,"value":626},"as a file called ",{"type":15,"tag":520,"props":628,"children":630},{"className":629},[],[631],{"type":25,"value":632},"LICENSE",{"type":25,"value":634}," in the project's root",{"type":15,"tag":216,"props":636,"children":637},{},[638,640,643],{"type":25,"value":639},"Many Open Source software licenses exist",{"type":15,"tag":424,"props":641,"children":642},{},[],{"type":15,"tag":55,"props":644,"children":645},{},[646,648],{"type":25,"value":647}," see ",{"type":15,"tag":59,"props":649,"children":652},{"href":650,"rel":651},"https://choosealicense.com/",[63],[653],{"type":25,"value":654},"choosealicense.com",{"type":15,"tag":216,"props":656,"children":657},{},[658,660,663],{"type":25,"value":659},"License choice is not always straightforward",{"type":15,"tag":424,"props":661,"children":662},{},[],{"type":15,"tag":55,"props":664,"children":665},{},[666],{"type":25,"value":667}," confirm with dependencies, copyright holder(s), and specialists ",{"type":15,"tag":216,"props":669,"children":670},{},[671,673,676],{"type":25,"value":672},"Use version control (e.g. Git) with a public host (e.g. GitHub)",{"type":15,"tag":424,"props":674,"children":675},{},[],{"type":15,"tag":55,"props":677,"children":678},{},[679],{"type":25,"value":680}," history and provenance is a public part of the repository ",{"type":15,"tag":216,"props":682,"children":683},{},[684,686,689],{"type":25,"value":685},"Dependencies should be listed, and unambiguous",{"type":15,"tag":424,"props":687,"children":688},{},[],{"type":15,"tag":55,"props":690,"children":691},{},[692],{"type":25,"value":693}," use a standardized file/protocol, and version numbers",{"type":15,"tag":51,"props":695,"children":696},{},[697],{"type":25,"value":698},"Note:\nLicenses are an important part of reusability.\nWithout a license, copyright disallows reuse.\nIn an open science context especially, Open Source licenses are the default choice.\nThey are numerous, but the choice is not always straightforward.\nIt is advised to learn about the different licenses, about important considerations (e.g. dependencies and the role and identity of copyright holders) and to consult with specialists when in doubt.",{"type":15,"tag":16,"props":700,"children":701},{},[],{"type":15,"tag":703,"props":704,"children":706},"h3",{"id":705},"fair-is-not-a-quality-checklist",[707],{"type":25,"value":708},"FAIR is not a quality checklist",{"type":15,"tag":51,"props":710,"children":711},{},[712],{"type":25,"value":713},"Software quality is addressed insofar as it affects:",{"type":15,"tag":212,"props":715,"children":716},{},[717,722],{"type":15,"tag":216,"props":718,"children":719},{},[720],{"type":25,"value":721},"usability, an aspect of interoperability",{"type":15,"tag":216,"props":723,"children":724},{},[725],{"type":25,"value":726},"maintainability, an important element of reuse",{"type":15,"tag":51,"props":728,"children":729},{},[730,732,737],{"type":25,"value":731},"Quality aspects ",{"type":15,"tag":35,"props":733,"children":734},{},[735],{"type":25,"value":736},"not",{"type":25,"value":738}," part of FAIR:",{"type":15,"tag":212,"props":740,"children":741},{},[742,747,752,757],{"type":15,"tag":216,"props":743,"children":744},{},[745],{"type":25,"value":746},"computational efficiency                                             ",{"type":15,"tag":216,"props":748,"children":749},{},[750],{"type":25,"value":751},"functional correctness",{"type":15,"tag":216,"props":753,"children":754},{},[755],{"type":25,"value":756},"security",{"type":15,"tag":216,"props":758,"children":759},{},[760],{"type":25,"value":761},"...",{"type":15,"tag":51,"props":763,"children":764},{},[765],{"type":25,"value":766},"Note:\nThe FAIR principles are limited in scope when it comes to software.\nIt is important to realize that their primary goal is not to address software quality itself.\nFAIR software can be of poor quality, and good quality software may not be FAIR.",{"type":15,"tag":51,"props":768,"children":769},{},[770],{"type":25,"value":771},"Some quality aspects are addressed by FAIR, in particular usability and maintainability.\nBecause software is dynamic and interdependent, its reusability requires that it is maintained to continue to work (or that a conserved context is provided, such as a virtual machine with required dependencies).",{"type":15,"tag":51,"props":773,"children":774},{},[775],{"type":25,"value":776},"Secondary to maintainability are quality aspects like tests, modularized architecture, developer documentation, and so on.",{"type":15,"tag":51,"props":778,"children":779},{},[780],{"type":25,"value":781},"Interoperable software is usable by others, and therefore it is important that it is well documented and that it is easy to install and run.\nThis ties into quality aspects like user documentation, installation instructions, and so on.",{"type":15,"tag":51,"props":783,"children":784},{},[785],{"type":25,"value":786},"Note though, that there is no mention of correctness, nor of efficiency or security.\nSoftware may adhere perfectly to FAIR, yet produce the wrong results, in a painfully slow and inefficient process, while leaking personal information.",{"type":15,"tag":16,"props":788,"children":789},{},[],{"type":15,"tag":30,"props":791,"children":793},{"id":792},"fair-is-a-spectrum",[794],{"type":25,"value":795},"FAIR is a spectrum",{"type":15,"tag":41,"props":797,"children":798},{},[799],{"type":15,"tag":45,"props":800,"children":802},{"src":801,"width":174},"media/spectrum.png",[],{"type":15,"tag":51,"props":804,"children":805},{},[806],{"type":25,"value":73},{"type":15,"tag":51,"props":808,"children":809},{},[810],{"type":25,"value":811},"FAIR is not a checklist, but a set of principles.\nAs such, it informs a spectrum of software sustainability, and not a binary \"FAIR or not FAIR\".",{"type":15,"tag":51,"props":813,"children":814},{},[815],{"type":25,"value":816},"FAIR is not a perfect metric, but it is helpful, and tailored to specific values of open science.",{"type":15,"tag":16,"props":818,"children":819},{},[],{"type":15,"tag":30,"props":821,"children":823},{"id":822},"take-home-messages",[824],{"type":25,"value":825},"Take home messages",{"type":15,"tag":212,"props":827,"children":828},{},[829,834,839,843,848],{"type":15,"tag":216,"props":830,"children":831},{},[832],{"type":25,"value":833},"Software is an important part of research",{"type":15,"tag":216,"props":835,"children":836},{},[837],{"type":25,"value":838},"FAIR4RS principles guide towards accessibility and openness of research software",{"type":15,"tag":216,"props":840,"children":841},{},[842],{"type":25,"value":708},{"type":15,"tag":216,"props":844,"children":845},{},[846],{"type":25,"value":847},"Software places unique demands on FAIR, and provides unique opportunities",{"type":15,"tag":216,"props":849,"children":850},{},[851],{"type":25,"value":852},"FAIRness is a spectrum",{"type":15,"tag":16,"props":854,"children":855},{},[],{"type":15,"tag":51,"props":857,"children":858},{},[859],{"type":15,"tag":59,"props":860,"children":863},{"href":861,"rel":862},"http://www.esciencecenter.nl",[63],[864],{"type":25,"value":865},"www.esciencecenter.nl",{"type":15,"tag":51,"props":867,"children":868},{},[869],{"type":15,"tag":59,"props":870,"children":872},{"href":871},"mailto:info@esciencecenter.nl",[873],{"type":25,"value":874},"info@esciencecenter.nl",{"type":15,"tag":51,"props":876,"children":877},{},[878],{"type":25,"value":879},"020 - 460 47 70",{"title":7,"searchDepth":881,"depth":881,"links":882},2,[883,884,885,886,887,888,889,890,894,895],{"id":32,"depth":881,"text":39},{"id":164,"depth":881,"text":167},{"id":202,"depth":881,"text":205},{"id":300,"depth":881,"text":303},{"id":403,"depth":881,"text":406},{"id":491,"depth":881,"text":494},{"id":543,"depth":881,"text":546},{"id":599,"depth":881,"text":602,"children":891},[892],{"id":705,"depth":893,"text":708},3,{"id":792,"depth":881,"text":795},{"id":822,"depth":881,"text":825},"markdown","local_fs:modules:fairsoftware:slides-fairsoftware.pmd","local_fs","modules/fairsoftware/slides-fairsoftware.pmd","pmd",[902,937],{"_path":903,"_dir":904,"_draft":6,"_partial":6,"_locale":7,"title":905,"description":7,"body":906,"_type":896,"_id":934,"_source":898,"_file":935,"_extension":936},"/main/about","main","About",{"type":12,"children":907,"toc":930},[908,914,919,925],{"type":15,"tag":30,"props":909,"children":911},{"id":910},"about-the-research-software-support",[912],{"type":25,"value":913},"About the Research Software Support",{"type":15,"tag":51,"props":915,"children":916},{},[917],{"type":25,"value":918},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":30,"props":920,"children":922},{"id":921},"target-audience",[923],{"type":25,"value":924},"Target audience",{"type":15,"tag":51,"props":926,"children":927},{},[928],{"type":25,"value":929},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":881,"depth":881,"links":931},[932,933],{"id":910,"depth":881,"text":913},{"id":921,"depth":881,"text":924},"local_fs:main:about.md","main/about.md","md",{"_path":938,"_dir":904,"_draft":6,"_partial":6,"_locale":7,"title":939,"description":7,"body":940,"_type":896,"_id":1062,"_source":898,"_file":1063,"_extension":936},"/main/contribute","Contribute",{"type":12,"children":941,"toc":1057},[942,948,953,959,964],{"type":15,"tag":30,"props":943,"children":945},{"id":944},"contributing-to-the-research-software-support",[946],{"type":25,"value":947},"Contributing to the Research Software Support",{"type":15,"tag":51,"props":949,"children":950},{},[951],{"type":25,"value":952},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":703,"props":954,"children":956},{"id":955},"what-can-i-do",[957],{"type":25,"value":958},"What can I do?",{"type":15,"tag":51,"props":960,"children":961},{},[962],{"type":25,"value":963},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":212,"props":965,"children":966},{},[967,981,1022,1045],{"type":15,"tag":216,"props":968,"children":969},{},[970,972,979],{"type":25,"value":971},"Contribute to the content discussion in the ",{"type":15,"tag":59,"props":973,"children":976},{"href":974,"rel":975},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[63],[977],{"type":25,"value":978},"chapter issues",{"type":25,"value":980},", e.g. by listing good resources for information.",{"type":15,"tag":216,"props":982,"children":983},{},[984,990,992],{"type":15,"tag":59,"props":985,"children":987},{"href":986},"#elements-of-a-module",[988],{"type":25,"value":989},"Author a lesson",{"type":25,"value":991},", e.g. by:\n",{"type":15,"tag":212,"props":993,"children":994},{},[995,1004,1013],{"type":15,"tag":216,"props":996,"children":997},{},[998],{"type":15,"tag":59,"props":999,"children":1001},{"href":1000},"#slides",[1002],{"type":25,"value":1003},"Creating slides",{"type":15,"tag":216,"props":1005,"children":1006},{},[1007],{"type":15,"tag":59,"props":1008,"children":1010},{"href":1009},"#exercises",[1011],{"type":25,"value":1012},"Designing an exercise",{"type":15,"tag":216,"props":1014,"children":1015},{},[1016],{"type":15,"tag":59,"props":1017,"children":1019},{"href":1018},"#online-resources",[1020],{"type":25,"value":1021},"Curating online resources",{"type":15,"tag":216,"props":1023,"children":1024},{},[1025,1027,1034,1036,1043],{"type":25,"value":1026},"Review a lesson module; both by looking at ",{"type":15,"tag":59,"props":1028,"children":1031},{"href":1029,"rel":1030},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[63],[1032],{"type":25,"value":1033},"open PRs",{"type":25,"value":1035},", as well as flagging issues for improvement in the ",{"type":15,"tag":59,"props":1037,"children":1040},{"href":1038,"rel":1039},"https://esciencecenter-digital-skills.github.io/research-software-support/",[63],[1041],{"type":25,"value":1042},"existing content",{"type":25,"value":1044},".",{"type":15,"tag":216,"props":1046,"children":1047},{},[1048,1055],{"type":15,"tag":59,"props":1049,"children":1052},{"href":1050,"rel":1051},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[63],[1053],{"type":25,"value":1054},"Provide feedback",{"type":25,"value":1056}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":881,"depth":881,"links":1058},[1059],{"id":944,"depth":881,"text":947,"children":1060},[1061],{"id":955,"depth":893,"text":958},"local_fs:main:contribute.md","main/contribute.md",1715800937559] \ No newline at end of file +[{"data":1,"prerenderedAt":1064},["Reactive",2],{"content-query-md0S2SJMLS":3,"content-query-AT44bg6JPw":901},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":896,"_id":897,"_source":898,"_file":899,"_extension":900},"/modules/fairsoftware/slides-fairsoftware","fairsoftware",false,"","FAIR software","slides",1,{"type":12,"children":13,"toc":880},"root",[14,19,26,29,40,50,69,74,86,91,96,101,104,111,119,123,128,131,139,154,159,162,168,176,181,184,192,197,200,206,211,257,262,267,272,295,298,304,341,346,349,357,369,377,382,385,393,398,401,407,415,471,476,481,486,489,495,503,533,538,541,547,555,584,589,594,597,603,611,694,699,702,709,714,727,739,762,767,772,777,782,787,790,796,803,807,812,817,820,826,853,856,866,875],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h1",{"id":22},"fair-software",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":30,"props":31,"children":33},"h2",{"id":32},"ceci-nest-pas-une-photo",[34],{"type":15,"tag":35,"props":36,"children":37},"em",{},[38],{"type":25,"value":39},"Ceci n'est pas une photo",{"type":15,"tag":41,"props":42,"children":43},"center",{},[44],{"type":15,"tag":45,"props":46,"children":49},"img",{"src":47,"width":48},"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Black_hole_-_Messier_87_crop_max_res.jpg/1280px-Black_hole_-_Messier_87_crop_max_res.jpg","55%",[],{"type":15,"tag":51,"props":52,"children":53},"p",{},[54],{"type":15,"tag":55,"props":56,"children":57},"small",{},[58,67],{"type":15,"tag":59,"props":60,"children":64},"a",{"href":61,"rel":62},"https://doi.org/10.3847/2041-8213/ab0ec7",[63],"nofollow",[65],{"type":25,"value":66},"The Event Horizon Telescope Collaboration et al. 2019",{"type":25,"value":68}," (CC BY 3.0)",{"type":15,"tag":51,"props":70,"children":71},{},[72],{"type":25,"value":73},"Note:",{"type":15,"tag":51,"props":75,"children":76},{},[77,79,84],{"type":25,"value":78},"Software plays an important role in science. A first thought may be its role in data collection and analysis. Further, it may play a role in designing experiments, based on models generated. It may ",{"type":15,"tag":35,"props":80,"children":81},{},[82],{"type":25,"value":83},"be",{"type":25,"value":85}," the experiment itself, simulate a research outcome based on data or ideas entered; it may also be the \"brain\" behind controlling crucial instrumentation.",{"type":15,"tag":51,"props":87,"children":88},{},[89],{"type":25,"value":90},"What scientific software can you think of?",{"type":15,"tag":51,"props":92,"children":93},{},[94],{"type":25,"value":95},"What role does it play?",{"type":15,"tag":51,"props":97,"children":98},{},[99],{"type":25,"value":100},"An example here: the Event Horizon Telescope, which took a \"picture\" of a black hole.\nThe \"telescope\" is not a single tool, but complex: a \"planet-scale array of eight ground-based radio telescopes\" (wikipedia).\nThe separate telescopes collect data that is synchronized with atomic clocks, and the data is combined at highly specialised supercomputers.\nThe data can be converted into an image using custom software.",{"type":15,"tag":16,"props":102,"children":103},{},[],{"type":15,"tag":41,"props":105,"children":106},{},[107],{"type":15,"tag":45,"props":108,"children":110},{"src":109,"width":48},"media/definition.png",[],{"type":15,"tag":51,"props":112,"children":113},{},[114],{"type":15,"tag":55,"props":115,"children":116},{},[117],{"type":25,"value":118},"definition of Research Software from the FAIR4RS working group",{"type":15,"tag":51,"props":120,"children":121},{},[122],{"type":25,"value":73},{"type":15,"tag":51,"props":124,"children":125},{},[126],{"type":25,"value":127},"A definition of research software, from the FAIR4RS working group.\nIt is important that not all software that is used in research is research software.\nFor example, a text editor that is used to write a paper is not research software.\nNor is powerpoint, a web browser, or the software used to guide the telescope.\nEven tools like R or Python are not necessarily research software.\nThe code written in R or Python for an analysis would be research software, however.\nJust like a custom-made Excel macro that is used to analyse data.\nOr a custom-made web application that is used to collect data.",{"type":15,"tag":16,"props":129,"children":130},{},[],{"type":15,"tag":41,"props":132,"children":133},{},[134],{"type":15,"tag":45,"props":135,"children":138},{"src":136,"width":137},"media/unescoopenscience.png","50%",[],{"type":15,"tag":51,"props":140,"children":141},{},[142],{"type":15,"tag":55,"props":143,"children":144},{},[145,152],{"type":15,"tag":59,"props":146,"children":149},{"href":147,"rel":148},"https://creativecommons.org/2021/12/02/unesco-recommendation-on-open-science-ratified/",[63],[150],{"type":25,"value":151},"UNESCO Recommendation on Open Science, 2021",{"type":25,"value":153}," (CC BY IGO 3.0)",{"type":15,"tag":51,"props":155,"children":156},{},[157],{"type":25,"value":158},"Note:\nOpen Science encompasses many aspects of science.\nIt is a movement that aims to make science — which includes software — more open, transparent, and accessible.\nThis is supported by many organisations, including UNESCO.",{"type":15,"tag":16,"props":160,"children":161},{},[],{"type":15,"tag":30,"props":163,"children":165},{"id":164},"the-fair-principles",[166],{"type":25,"value":167},"The FAIR principles",{"type":15,"tag":41,"props":169,"children":170},{},[171],{"type":15,"tag":45,"props":172,"children":175},{"src":173,"width":174},"media/fair.png","60%",[],{"type":15,"tag":51,"props":177,"children":178},{},[179],{"type":25,"value":180},"Note:\nthe FAIR principles standardize values that help openness, transparency, and accessibility.",{"type":15,"tag":16,"props":182,"children":183},{},[],{"type":15,"tag":51,"props":185,"children":186},{},[187],{"type":15,"tag":45,"props":188,"children":191},{"alt":189,"src":190},"screenshot Wilkinson 2016","media/fairwilkinson.png",[],{"type":15,"tag":51,"props":193,"children":194},{},[195],{"type":25,"value":196},"Note:\nFAIR principles were originally designed for data, but are also applicable to software.\nDesigned also with other digital objects in mind, though actual description was data-specific.\nThis has been extended meanwhile.",{"type":15,"tag":16,"props":198,"children":199},{},[],{"type":15,"tag":30,"props":201,"children":203},{"id":202},"software-is-not-data",[204],{"type":25,"value":205},"Software is not data",{"type":15,"tag":51,"props":207,"children":208},{},[209],{"type":25,"value":210},"Software is...",{"type":15,"tag":212,"props":213,"children":214},"ul",{},[215,227,237,247],{"type":15,"tag":216,"props":217,"children":218},"li",{},[219,225],{"type":15,"tag":220,"props":221,"children":222},"strong",{},[223],{"type":25,"value":224},"complex",{"type":25,"value":226},": code is creatively generated, interconnected and multi-layered",{"type":15,"tag":216,"props":228,"children":229},{},[230,235],{"type":15,"tag":220,"props":231,"children":232},{},[233],{"type":25,"value":234},"interdependent",{"type":25,"value":236},": it builds upon and therefore depends on other software",{"type":15,"tag":216,"props":238,"children":239},{},[240,245],{"type":15,"tag":220,"props":241,"children":242},{},[243],{"type":25,"value":244},"executable",{"type":25,"value":246},": it is not static, but can be run",{"type":15,"tag":216,"props":248,"children":249},{},[250,255],{"type":15,"tag":220,"props":251,"children":252},{},[253],{"type":25,"value":254},"dynamic",{"type":25,"value":256},": it can break over time, and versioning is common",{"type":15,"tag":51,"props":258,"children":259},{},[260],{"type":25,"value":261},"Note:\nWhile technically, software is a special kind of data (in that it is representation of information in a digital state), they are in essence quite different.",{"type":15,"tag":51,"props":263,"children":264},{},[265],{"type":25,"value":266},"Software and data both are digital objects, sharing certain characteristics: they can be assigned a DOI, and they can have a license.",{"type":15,"tag":51,"props":268,"children":269},{},[270],{"type":25,"value":271},"Software is quite different from data, however. Consider:",{"type":15,"tag":212,"props":273,"children":274},{},[275,280,285,290],{"type":15,"tag":216,"props":276,"children":277},{},[278],{"type":25,"value":279},"Complexity; it is not a single file, but a collection of files that are interconnected and multi-layered, and do not necessarily stand on their own. Software is also the result of a creative process that provides a tool to do something, and not the result of a measurement or observation.",{"type":15,"tag":216,"props":281,"children":282},{},[283],{"type":25,"value":284},"Interdependence; software is often built using other software, and rarely built completely from scratch. This makes it dependent on other existing applications, which themselves may also change over time.",{"type":15,"tag":216,"props":286,"children":287},{},[288],{"type":25,"value":289},"Executability; software is in its dryest form a set of instructions that can be an archive of a procedure. However, the main goal of software is that these instructions can be executed. Data, by contrast, stand on their own.",{"type":15,"tag":216,"props":291,"children":292},{},[293],{"type":25,"value":294},"Dynamic vs static; its interdependence and context-dependency drives software to require maintenance to retain its value, and this maintenance is not straightforward. Maintenance is also counter to academic culture; it does not fit in existing structures (both in terms of reward/recognition, but also in terms of funding and understanding of what is needed). Versioning of software is very common, while data is often static (though versions may happen).",{"type":15,"tag":16,"props":296,"children":297},{},[],{"type":15,"tag":30,"props":299,"children":301},{"id":300},"software-opportunities",[302],{"type":25,"value":303},"Software opportunities",{"type":15,"tag":212,"props":305,"children":306},{},[307,317,329],{"type":15,"tag":216,"props":308,"children":309},{},[310,312],{"type":25,"value":311},"Software is a ",{"type":15,"tag":220,"props":313,"children":314},{},[315],{"type":25,"value":316},"living thing",{"type":15,"tag":216,"props":318,"children":319},{},[320,322,327],{"type":25,"value":321},"Creative process allows for ",{"type":15,"tag":220,"props":323,"children":324},{},[325],{"type":25,"value":326},"early adoption",{"type":25,"value":328}," of good practices",{"type":15,"tag":216,"props":330,"children":331},{},[332,334,339],{"type":25,"value":333},"Openness and transparency are ",{"type":15,"tag":220,"props":335,"children":336},{},[337],{"type":25,"value":338},"inherent",{"type":25,"value":340}," to software",{"type":15,"tag":51,"props":342,"children":343},{},[344],{"type":25,"value":345},"Note:\nThe different nature of software also provides opportunities.\nSoftware is a living thing, and therefore it is easier to adopt good practices early on.\nCrucially, there is a community driven openness in software that long predates the open science movement.\nThis is not to say that software is inherently open, but that there is a broad open culture, which also comes with existing tools and pathways to facilitate openness and transparency.\nConsider GitHub (and other code hosting platforms), which are designed for this purpose.\nConsider also version control software, a good software development practice that builds in provenance.",{"type":15,"tag":16,"props":347,"children":348},{},[],{"type":15,"tag":51,"props":350,"children":351},{},[352],{"type":15,"tag":45,"props":353,"children":356},{"alt":354,"src":355},"FAIR for Research Software paper","media/fair4rs_paper.png",[],{"type":15,"tag":51,"props":358,"children":359},{},[360,362],{"type":25,"value":361},"Fair 4 Research Software (FAIR4RS) working group (2022)\n",{"type":15,"tag":59,"props":363,"children":366},{"href":364,"rel":365},"https://doi.org/10.1038/s41597-022-01710-x",[63],[367],{"type":25,"value":368},"doi:10.1038/s41597-022-01710-x",{"type":15,"tag":51,"props":370,"children":371},{},[372],{"type":15,"tag":45,"props":373,"children":376},{"alt":374,"src":375},"Contributing Organizations","media/fair4rs_logos.png",[],{"type":15,"tag":51,"props":378,"children":379},{},[380],{"type":25,"value":381},"Note:\nIn 2022, the results of extensive community consultation were published in the FAIR for Research Software paper.\nThe group behind this was a collaboration between the Research Software Alliance, the Research Data Alliance, and FORCE11.",{"type":15,"tag":16,"props":383,"children":384},{},[],{"type":15,"tag":51,"props":386,"children":387},{},[388],{"type":15,"tag":45,"props":389,"children":392},{"alt":390,"src":391},"FAIR for Research Software principles","media/fair4rs_principles.png",[],{"type":15,"tag":51,"props":394,"children":395},{},[396],{"type":25,"value":397},"Note:\nThese are the interpretations given to the FAIR principles for software by the working group.\nIn many cases these are rephrased to better fit software, but in some cases they are also extended.",{"type":15,"tag":16,"props":399,"children":400},{},[],{"type":15,"tag":30,"props":402,"children":404},{"id":403},"findability",[405],{"type":25,"value":406},"Findability",{"type":15,"tag":51,"props":408,"children":409},{},[410],{"type":15,"tag":45,"props":411,"children":414},{"alt":412,"src":413},"FAIR4RS Findability","media/fair4rs_F.png",[],{"type":15,"tag":212,"props":416,"children":417},{},[418,432,445,458],{"type":15,"tag":216,"props":419,"children":420},{},[421,423,427],{"type":25,"value":422},"Archive on Zenodo for DOI and persistence",{"type":15,"tag":424,"props":425,"children":426},"br",{},[],{"type":15,"tag":55,"props":428,"children":429},{},[430],{"type":25,"value":431}," Note that persistence on GitHub is not guaranteed!",{"type":15,"tag":216,"props":433,"children":434},{},[435,437,440],{"type":25,"value":436},"Use (semantic) versioning with updates",{"type":15,"tag":424,"props":438,"children":439},{},[],{"type":15,"tag":55,"props":441,"children":442},{},[443],{"type":25,"value":444}," Zenodo assigns a DOI to each version ",{"type":15,"tag":216,"props":446,"children":447},{},[448,450,453],{"type":25,"value":449},"Include metadata, explicitly containing the DOI",{"type":15,"tag":424,"props":451,"children":452},{},[],{"type":15,"tag":55,"props":454,"children":455},{},[456],{"type":25,"value":457}," but also license, version, dependencies, etc. ",{"type":15,"tag":216,"props":459,"children":460},{},[461,463,466],{"type":25,"value":462},"Register the software in a community registry",{"type":15,"tag":424,"props":464,"children":465},{},[],{"type":15,"tag":55,"props":467,"children":468},{},[469],{"type":25,"value":470}," such as PyPI or CRAN, depending on the language/domain ",{"type":15,"tag":51,"props":472,"children":473},{},[474],{"type":25,"value":475},"Note:\nFor software findability, a few things need to work together:",{"type":15,"tag":51,"props":477,"children":478},{},[479],{"type":25,"value":480},"The software needs to be archived on a platform that provides a DOI and persistence. GitHub is not guaranteed to provide this, and while it is a useful tool is not a suitable archive for software.\nGitHub does work well together with Zenodo, which provides both.\nTogether they also provide functionality for versioning: when releasing a new version on GitHub, and using the Zenodo integration, Zenodo will update the entry and assign a new DOI to the new version.",{"type":15,"tag":51,"props":482,"children":483},{},[484],{"type":25,"value":485},"For software-specific findability, though, Zenodo is insufficient. Here, you can think of more specific registries, such as PyPI, CRAN, or Bioconductor; depending on the language and domain of the software.",{"type":15,"tag":16,"props":487,"children":488},{},[],{"type":15,"tag":30,"props":490,"children":492},{"id":491},"accessibility",[493],{"type":25,"value":494},"Accessibility",{"type":15,"tag":51,"props":496,"children":497},{},[498],{"type":15,"tag":45,"props":499,"children":502},{"alt":500,"src":501},"FAIR4RS Accessibility","media/fair4rs_A.png",[],{"type":15,"tag":212,"props":504,"children":505},{},[506,528],{"type":15,"tag":216,"props":507,"children":508},{},[509,511,514],{"type":25,"value":510},"Community registries provide standard download protocols",{"type":15,"tag":424,"props":512,"children":513},{},[],{"type":15,"tag":55,"props":515,"children":516},{},[517,519,526],{"type":25,"value":518}," e.g. ",{"type":15,"tag":520,"props":521,"children":523},"code",{"className":522},[],[524],{"type":25,"value":525},"pip install my_software",{"type":25,"value":527}," ",{"type":15,"tag":216,"props":529,"children":530},{},[531],{"type":25,"value":532},"Metadata on Zenodo is part of the persistent archive",{"type":15,"tag":51,"props":534,"children":535},{},[536],{"type":25,"value":537},"Note:\nA lot of accessibility is covered by the findability principles, but there are a few additional things to consider.\nSpecifically, software may still be FAIR as long as its metadata is accessible.\nThe code of the software itself, not the actual functional engine, could be considered metadata.",{"type":15,"tag":16,"props":539,"children":540},{},[],{"type":15,"tag":30,"props":542,"children":544},{"id":543},"interoperability",[545],{"type":25,"value":546},"Interoperability",{"type":15,"tag":51,"props":548,"children":549},{},[550],{"type":15,"tag":45,"props":551,"children":554},{"alt":552,"src":553},"FAIR4RS Interoperability","media/fair4rs_I.png",[],{"type":15,"tag":212,"props":556,"children":557},{},[558,571],{"type":15,"tag":216,"props":559,"children":560},{},[561,563,566],{"type":25,"value":562},"Input and output both needs to meet community standards",{"type":15,"tag":424,"props":564,"children":565},{},[],{"type":15,"tag":55,"props":567,"children":568},{},[569],{"type":25,"value":570}," e.g. file formats, data models, ontologies ",{"type":15,"tag":216,"props":572,"children":573},{},[574,576,579],{"type":25,"value":575},"References to external objects should be unambiguous",{"type":15,"tag":424,"props":577,"children":578},{},[],{"type":15,"tag":55,"props":580,"children":581},{},[582],{"type":25,"value":583}," use URLs, DOIs, version numbers etc. ",{"type":15,"tag":51,"props":585,"children":586},{},[587],{"type":25,"value":588},"Note:\nAs with data, interoperability refers partly to formats and standards (in this case: inputs, outputs, or other objects used). For example CSV, JSON, and XML are interoperable formats, while PDF is not.\nThese standards may also be domain-specific, such as the use of ontologies in the life sciences.",{"type":15,"tag":51,"props":590,"children":591},{},[592],{"type":25,"value":593},"The second sub-principle refers to the use of unambiguous references to external objects, such as libraries, data, or models. A clear link allows the right object to be used by the software.",{"type":15,"tag":16,"props":595,"children":596},{},[],{"type":15,"tag":30,"props":598,"children":600},{"id":599},"reusability",[601],{"type":25,"value":602},"Reusability",{"type":15,"tag":51,"props":604,"children":605},{},[606],{"type":15,"tag":45,"props":607,"children":610},{"alt":608,"src":609},"FAIR4RS Reusability","media/fair4rs_R.png",[],{"type":15,"tag":212,"props":612,"children":613},{},[614,635,655,668,681],{"type":15,"tag":216,"props":615,"children":616},{},[617,619,622],{"type":25,"value":618},"Include a software-specific license",{"type":15,"tag":424,"props":620,"children":621},{},[],{"type":15,"tag":55,"props":623,"children":624},{},[625,627,633],{"type":25,"value":626},"as a file called ",{"type":15,"tag":520,"props":628,"children":630},{"className":629},[],[631],{"type":25,"value":632},"LICENSE",{"type":25,"value":634}," in the project's root",{"type":15,"tag":216,"props":636,"children":637},{},[638,640,643],{"type":25,"value":639},"Many Open Source software licenses exist",{"type":15,"tag":424,"props":641,"children":642},{},[],{"type":15,"tag":55,"props":644,"children":645},{},[646,648],{"type":25,"value":647}," see ",{"type":15,"tag":59,"props":649,"children":652},{"href":650,"rel":651},"https://choosealicense.com/",[63],[653],{"type":25,"value":654},"choosealicense.com",{"type":15,"tag":216,"props":656,"children":657},{},[658,660,663],{"type":25,"value":659},"License choice is not always straightforward",{"type":15,"tag":424,"props":661,"children":662},{},[],{"type":15,"tag":55,"props":664,"children":665},{},[666],{"type":25,"value":667}," confirm with dependencies, copyright holder(s), and specialists ",{"type":15,"tag":216,"props":669,"children":670},{},[671,673,676],{"type":25,"value":672},"Use version control (e.g. Git) with a public host (e.g. GitHub)",{"type":15,"tag":424,"props":674,"children":675},{},[],{"type":15,"tag":55,"props":677,"children":678},{},[679],{"type":25,"value":680}," history and provenance is a public part of the repository ",{"type":15,"tag":216,"props":682,"children":683},{},[684,686,689],{"type":25,"value":685},"Dependencies should be listed, and unambiguous",{"type":15,"tag":424,"props":687,"children":688},{},[],{"type":15,"tag":55,"props":690,"children":691},{},[692],{"type":25,"value":693}," use a standardized file/protocol, and version numbers",{"type":15,"tag":51,"props":695,"children":696},{},[697],{"type":25,"value":698},"Note:\nLicenses are an important part of reusability.\nWithout a license, copyright disallows reuse.\nIn an open science context especially, Open Source licenses are the default choice.\nThey are numerous, but the choice is not always straightforward.\nIt is advised to learn about the different licenses, about important considerations (e.g. dependencies and the role and identity of copyright holders) and to consult with specialists when in doubt.",{"type":15,"tag":16,"props":700,"children":701},{},[],{"type":15,"tag":703,"props":704,"children":706},"h3",{"id":705},"fair-is-not-a-quality-checklist",[707],{"type":25,"value":708},"FAIR is not a quality checklist",{"type":15,"tag":51,"props":710,"children":711},{},[712],{"type":25,"value":713},"Software quality is addressed insofar as it affects:",{"type":15,"tag":212,"props":715,"children":716},{},[717,722],{"type":15,"tag":216,"props":718,"children":719},{},[720],{"type":25,"value":721},"usability, an aspect of interoperability",{"type":15,"tag":216,"props":723,"children":724},{},[725],{"type":25,"value":726},"maintainability, an important element of reuse",{"type":15,"tag":51,"props":728,"children":729},{},[730,732,737],{"type":25,"value":731},"Quality aspects ",{"type":15,"tag":35,"props":733,"children":734},{},[735],{"type":25,"value":736},"not",{"type":25,"value":738}," part of FAIR:",{"type":15,"tag":212,"props":740,"children":741},{},[742,747,752,757],{"type":15,"tag":216,"props":743,"children":744},{},[745],{"type":25,"value":746},"computational efficiency                                             ",{"type":15,"tag":216,"props":748,"children":749},{},[750],{"type":25,"value":751},"functional correctness",{"type":15,"tag":216,"props":753,"children":754},{},[755],{"type":25,"value":756},"security",{"type":15,"tag":216,"props":758,"children":759},{},[760],{"type":25,"value":761},"...",{"type":15,"tag":51,"props":763,"children":764},{},[765],{"type":25,"value":766},"Note:\nThe FAIR principles are limited in scope when it comes to software.\nIt is important to realize that their primary goal is not to address software quality itself.\nFAIR software can be of poor quality, and good quality software may not be FAIR.",{"type":15,"tag":51,"props":768,"children":769},{},[770],{"type":25,"value":771},"Some quality aspects are addressed by FAIR, in particular usability and maintainability.\nBecause software is dynamic and interdependent, its reusability requires that it is maintained to continue to work (or that a conserved context is provided, such as a virtual machine with required dependencies).",{"type":15,"tag":51,"props":773,"children":774},{},[775],{"type":25,"value":776},"Secondary to maintainability are quality aspects like tests, modularized architecture, developer documentation, and so on.",{"type":15,"tag":51,"props":778,"children":779},{},[780],{"type":25,"value":781},"Interoperable software is usable by others, and therefore it is important that it is well documented and that it is easy to install and run.\nThis ties into quality aspects like user documentation, installation instructions, and so on.",{"type":15,"tag":51,"props":783,"children":784},{},[785],{"type":25,"value":786},"Note though, that there is no mention of correctness, nor of efficiency or security.\nSoftware may adhere perfectly to FAIR, yet produce the wrong results, in a painfully slow and inefficient process, while leaking personal information.",{"type":15,"tag":16,"props":788,"children":789},{},[],{"type":15,"tag":30,"props":791,"children":793},{"id":792},"fair-is-a-spectrum",[794],{"type":25,"value":795},"FAIR is a spectrum",{"type":15,"tag":41,"props":797,"children":798},{},[799],{"type":15,"tag":45,"props":800,"children":802},{"src":801,"width":174},"media/spectrum.png",[],{"type":15,"tag":51,"props":804,"children":805},{},[806],{"type":25,"value":73},{"type":15,"tag":51,"props":808,"children":809},{},[810],{"type":25,"value":811},"FAIR is not a checklist, but a set of principles.\nAs such, it informs a spectrum of software sustainability, and not a binary \"FAIR or not FAIR\".",{"type":15,"tag":51,"props":813,"children":814},{},[815],{"type":25,"value":816},"FAIR is not a perfect metric, but it is helpful, and tailored to specific values of open science.",{"type":15,"tag":16,"props":818,"children":819},{},[],{"type":15,"tag":30,"props":821,"children":823},{"id":822},"take-home-messages",[824],{"type":25,"value":825},"Take home messages",{"type":15,"tag":212,"props":827,"children":828},{},[829,834,839,843,848],{"type":15,"tag":216,"props":830,"children":831},{},[832],{"type":25,"value":833},"Software is an important part of research",{"type":15,"tag":216,"props":835,"children":836},{},[837],{"type":25,"value":838},"FAIR4RS principles guide towards accessibility and openness of research software",{"type":15,"tag":216,"props":840,"children":841},{},[842],{"type":25,"value":708},{"type":15,"tag":216,"props":844,"children":845},{},[846],{"type":25,"value":847},"Software places unique demands on FAIR, and provides unique opportunities",{"type":15,"tag":216,"props":849,"children":850},{},[851],{"type":25,"value":852},"FAIRness is a spectrum",{"type":15,"tag":16,"props":854,"children":855},{},[],{"type":15,"tag":51,"props":857,"children":858},{},[859],{"type":15,"tag":59,"props":860,"children":863},{"href":861,"rel":862},"http://www.esciencecenter.nl",[63],[864],{"type":25,"value":865},"www.esciencecenter.nl",{"type":15,"tag":51,"props":867,"children":868},{},[869],{"type":15,"tag":59,"props":870,"children":872},{"href":871},"mailto:info@esciencecenter.nl",[873],{"type":25,"value":874},"info@esciencecenter.nl",{"type":15,"tag":51,"props":876,"children":877},{},[878],{"type":25,"value":879},"020 - 460 47 70",{"title":7,"searchDepth":881,"depth":881,"links":882},2,[883,884,885,886,887,888,889,890,894,895],{"id":32,"depth":881,"text":39},{"id":164,"depth":881,"text":167},{"id":202,"depth":881,"text":205},{"id":300,"depth":881,"text":303},{"id":403,"depth":881,"text":406},{"id":491,"depth":881,"text":494},{"id":543,"depth":881,"text":546},{"id":599,"depth":881,"text":602,"children":891},[892],{"id":705,"depth":893,"text":708},3,{"id":792,"depth":881,"text":795},{"id":822,"depth":881,"text":825},"markdown","local_fs:modules:fairsoftware:slides-fairsoftware.pmd","local_fs","modules/fairsoftware/slides-fairsoftware.pmd","pmd",[902,937],{"_path":903,"_dir":904,"_draft":6,"_partial":6,"_locale":7,"title":905,"description":7,"body":906,"_type":896,"_id":934,"_source":898,"_file":935,"_extension":936},"/main/about","main","About",{"type":12,"children":907,"toc":930},[908,914,919,925],{"type":15,"tag":30,"props":909,"children":911},{"id":910},"about-the-research-software-support",[912],{"type":25,"value":913},"About the Research Software Support",{"type":15,"tag":51,"props":915,"children":916},{},[917],{"type":25,"value":918},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":30,"props":920,"children":922},{"id":921},"target-audience",[923],{"type":25,"value":924},"Target audience",{"type":15,"tag":51,"props":926,"children":927},{},[928],{"type":25,"value":929},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":881,"depth":881,"links":931},[932,933],{"id":910,"depth":881,"text":913},{"id":921,"depth":881,"text":924},"local_fs:main:about.md","main/about.md","md",{"_path":938,"_dir":904,"_draft":6,"_partial":6,"_locale":7,"title":939,"description":7,"body":940,"_type":896,"_id":1062,"_source":898,"_file":1063,"_extension":936},"/main/contribute","Contribute",{"type":12,"children":941,"toc":1057},[942,948,953,959,964],{"type":15,"tag":30,"props":943,"children":945},{"id":944},"contributing-to-the-research-software-support",[946],{"type":25,"value":947},"Contributing to the Research Software Support",{"type":15,"tag":51,"props":949,"children":950},{},[951],{"type":25,"value":952},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":703,"props":954,"children":956},{"id":955},"what-can-i-do",[957],{"type":25,"value":958},"What can I do?",{"type":15,"tag":51,"props":960,"children":961},{},[962],{"type":25,"value":963},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":212,"props":965,"children":966},{},[967,981,1022,1045],{"type":15,"tag":216,"props":968,"children":969},{},[970,972,979],{"type":25,"value":971},"Contribute to the content discussion in the ",{"type":15,"tag":59,"props":973,"children":976},{"href":974,"rel":975},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[63],[977],{"type":25,"value":978},"chapter issues",{"type":25,"value":980},", e.g. by listing good resources for information.",{"type":15,"tag":216,"props":982,"children":983},{},[984,990,992],{"type":15,"tag":59,"props":985,"children":987},{"href":986},"#elements-of-a-module",[988],{"type":25,"value":989},"Author a lesson",{"type":25,"value":991},", e.g. by:\n",{"type":15,"tag":212,"props":993,"children":994},{},[995,1004,1013],{"type":15,"tag":216,"props":996,"children":997},{},[998],{"type":15,"tag":59,"props":999,"children":1001},{"href":1000},"#slides",[1002],{"type":25,"value":1003},"Creating slides",{"type":15,"tag":216,"props":1005,"children":1006},{},[1007],{"type":15,"tag":59,"props":1008,"children":1010},{"href":1009},"#exercises",[1011],{"type":25,"value":1012},"Designing an exercise",{"type":15,"tag":216,"props":1014,"children":1015},{},[1016],{"type":15,"tag":59,"props":1017,"children":1019},{"href":1018},"#online-resources",[1020],{"type":25,"value":1021},"Curating online resources",{"type":15,"tag":216,"props":1023,"children":1024},{},[1025,1027,1034,1036,1043],{"type":25,"value":1026},"Review a lesson module; both by looking at ",{"type":15,"tag":59,"props":1028,"children":1031},{"href":1029,"rel":1030},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[63],[1032],{"type":25,"value":1033},"open PRs",{"type":25,"value":1035},", as well as flagging issues for improvement in the ",{"type":15,"tag":59,"props":1037,"children":1040},{"href":1038,"rel":1039},"https://esciencecenter-digital-skills.github.io/research-software-support/",[63],[1041],{"type":25,"value":1042},"existing content",{"type":25,"value":1044},".",{"type":15,"tag":216,"props":1046,"children":1047},{},[1048,1055],{"type":15,"tag":59,"props":1049,"children":1052},{"href":1050,"rel":1051},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[63],[1053],{"type":25,"value":1054},"Provide feedback",{"type":25,"value":1056}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":881,"depth":881,"links":1058},[1059],{"id":944,"depth":881,"text":947,"children":1060},[1061],{"id":955,"depth":893,"text":958},"local_fs:main:contribute.md","main/contribute.md",1715801014769] \ No newline at end of file diff --git a/modules/fairsoftware/slides-fairsoftware/index.html b/modules/fairsoftware/slides-fairsoftware/index.html index 1e93c8a1..d4be7935 100644 --- a/modules/fairsoftware/slides-fairsoftware/index.html +++ b/modules/fairsoftware/slides-fairsoftware/index.html @@ -2,7 +2,7 @@ FAIR software - + - - - - - - - - + + + + + + + + - + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/hpc/info/_payload.json b/modules/hpc/info/_payload.json index 1f2a7a8e..94292329 100644 --- a/modules/hpc/info/_payload.json +++ b/modules/hpc/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-WiCGRYK3uV":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/hpc/info","hpc",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:hpc:info.md","local_fs","modules/hpc/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715800937086] \ No newline at end of file +[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-WiCGRYK3uV":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/hpc/info","hpc",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:hpc:info.md","local_fs","modules/hpc/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715801014257] \ No newline at end of file diff --git a/modules/hpc/info/index.html b/modules/hpc/info/index.html index 15e1f720..6c6f3e4e 100644 --- a/modules/hpc/info/index.html +++ b/modules/hpc/info/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - + + + - - + + -

    Module: hpc

    Learning objectives for the FAIR software module

    - \ No newline at end of file +

    Module: hpc

    Learning objectives for the FAIR software module

    + \ No newline at end of file diff --git a/modules/licenses/copyright/_payload.json b/modules/licenses/copyright/_payload.json index 623f13d0..7a5cda0d 100644 --- a/modules/licenses/copyright/_payload.json +++ b/modules/licenses/copyright/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":231},["Reactive",2],{"content-query-z4ODH6dS11":3,"content-query-AT44bg6JPw":64},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":59,"_id":60,"_source":61,"_file":62,"_extension":63},"/modules/licenses/copyright","licenses",false,"","Copyright and software","reading",2,{"type":12,"children":13,"toc":56},"root",[14,22,28,41,46,51],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"copyright-and-software",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":25},"p",{},[26],{"type":21,"value":27},"Creative works, like books, paintings and music, but also scientific articles and software, are covered by copyright. Copyright is a legal construct that gives the owner of the copyright on a work the exclusive right to reproduce, modify, publicly perform and distribute the work. As a result, anyone who is not the copyright holder needs to have permission from the copyright holder to also be able to do so.",{"type":15,"tag":23,"props":29,"children":30},{},[31,33,39],{"type":21,"value":32},"Newly created works are automatically covered by copyright. This copyright is owned by the creator of the work, unless they were employed and created the work as part of their employment, in which case their employer owns the work. If multiple persons or organisations contribute to a work, then they each own a share of the copyright, and all need to give permission for others to be able to do any of the things protected by copyright. This permission is called a ",{"type":15,"tag":34,"props":35,"children":36},"em",{},[37],{"type":21,"value":38},"license",{"type":21,"value":40},".",{"type":15,"tag":23,"props":42,"children":43},{},[44],{"type":21,"value":45},"Creative works can depend on each other. Books for example can be translated, or turned into a stage play or a TV series. This creates a new work, which is known as a derivative work. A derivative work has its own copyright, because creating a translation or adaptation is itself a creative process. Like in a collaborative work, both the owner of the original copyright and the owner of the copyright on the derived adaptation need to give permission to reproduce and distribute the derived work.",{"type":15,"tag":23,"props":47,"children":48},{},[49],{"type":21,"value":50},"Software is a bit different from books or films or even databases because software is not only a collection of words and symbols, but also a machine that is used for something. As a result, working processes around software are quite different from those around books or films. Although it's bad practice, researchers quite often take a script from a colleague and modify it a bit so that it does what they want. A film director would be surprised indeed if you suggested they take a script from an existing film, change the dialog in the third act a bit, and then shoot it, but in software that's common. No novelist downloads ready-made paragraphs and chapters from the Internet and glues them together into a novel, but this is essentially how all modern software is developed.",{"type":15,"tag":23,"props":52,"children":53},{},[54],{"type":21,"value":55},"As a result, software and copyright is a bit of a specialist topic, but one that cannot be avoided because of the automatic nature of copyright and the fact that science is a collaborative enterprise. Universities therefore need a policy to govern what their employees should do and can't do with respect to the software they develop and use, and that policy needs to include something specifically about licensing software.",{"title":7,"searchDepth":10,"depth":10,"links":57},[58],{"id":18,"depth":10,"text":8},"markdown","local_fs:modules:licenses:copyright.md","local_fs","modules/licenses/copyright.md","md",[65,99],{"_path":66,"_dir":67,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":59,"_id":97,"_source":61,"_file":98,"_extension":63},"/main/about","main","About",{"type":12,"children":70,"toc":93},[71,77,82,88],{"type":15,"tag":16,"props":72,"children":74},{"id":73},"about-the-research-software-support",[75],{"type":21,"value":76},"About the Research Software Support",{"type":15,"tag":23,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":83,"children":85},{"id":84},"target-audience",[86],{"type":21,"value":87},"Target audience",{"type":15,"tag":23,"props":89,"children":90},{},[91],{"type":21,"value":92},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":10,"depth":10,"links":94},[95,96],{"id":73,"depth":10,"text":76},{"id":84,"depth":10,"text":87},"local_fs:main:about.md","main/about.md",{"_path":100,"_dir":67,"_draft":6,"_partial":6,"_locale":7,"title":101,"description":7,"body":102,"_type":59,"_id":229,"_source":61,"_file":230,"_extension":63},"/main/contribute","Contribute",{"type":12,"children":103,"toc":223},[104,110,115,122,127],{"type":15,"tag":16,"props":105,"children":107},{"id":106},"contributing-to-the-research-software-support",[108],{"type":21,"value":109},"Contributing to the Research Software Support",{"type":15,"tag":23,"props":111,"children":112},{},[113],{"type":21,"value":114},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":116,"props":117,"children":119},"h3",{"id":118},"what-can-i-do",[120],{"type":21,"value":121},"What can I do?",{"type":15,"tag":23,"props":123,"children":124},{},[125],{"type":21,"value":126},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":128,"props":129,"children":130},"ul",{},[131,148,189,211],{"type":15,"tag":132,"props":133,"children":134},"li",{},[135,137,146],{"type":21,"value":136},"Contribute to the content discussion in the ",{"type":15,"tag":138,"props":139,"children":143},"a",{"href":140,"rel":141},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[142],"nofollow",[144],{"type":21,"value":145},"chapter issues",{"type":21,"value":147},", e.g. by listing good resources for information.",{"type":15,"tag":132,"props":149,"children":150},{},[151,157,159],{"type":15,"tag":138,"props":152,"children":154},{"href":153},"#elements-of-a-module",[155],{"type":21,"value":156},"Author a lesson",{"type":21,"value":158},", e.g. by:\n",{"type":15,"tag":128,"props":160,"children":161},{},[162,171,180],{"type":15,"tag":132,"props":163,"children":164},{},[165],{"type":15,"tag":138,"props":166,"children":168},{"href":167},"#slides",[169],{"type":21,"value":170},"Creating slides",{"type":15,"tag":132,"props":172,"children":173},{},[174],{"type":15,"tag":138,"props":175,"children":177},{"href":176},"#exercises",[178],{"type":21,"value":179},"Designing an exercise",{"type":15,"tag":132,"props":181,"children":182},{},[183],{"type":15,"tag":138,"props":184,"children":186},{"href":185},"#online-resources",[187],{"type":21,"value":188},"Curating online resources",{"type":15,"tag":132,"props":190,"children":191},{},[192,194,201,203,210],{"type":21,"value":193},"Review a lesson module; both by looking at ",{"type":15,"tag":138,"props":195,"children":198},{"href":196,"rel":197},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[142],[199],{"type":21,"value":200},"open PRs",{"type":21,"value":202},", as well as flagging issues for improvement in the ",{"type":15,"tag":138,"props":204,"children":207},{"href":205,"rel":206},"https://esciencecenter-digital-skills.github.io/research-software-support/",[142],[208],{"type":21,"value":209},"existing content",{"type":21,"value":40},{"type":15,"tag":132,"props":212,"children":213},{},[214,221],{"type":15,"tag":138,"props":215,"children":218},{"href":216,"rel":217},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[142],[219],{"type":21,"value":220},"Provide feedback",{"type":21,"value":222}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":10,"depth":10,"links":224},[225],{"id":106,"depth":10,"text":109,"children":226},[227],{"id":118,"depth":228,"text":121},3,"local_fs:main:contribute.md","main/contribute.md",1715800937675] \ No newline at end of file +[{"data":1,"prerenderedAt":231},["Reactive",2],{"content-query-z4ODH6dS11":3,"content-query-AT44bg6JPw":64},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":59,"_id":60,"_source":61,"_file":62,"_extension":63},"/modules/licenses/copyright","licenses",false,"","Copyright and software","reading",2,{"type":12,"children":13,"toc":56},"root",[14,22,28,41,46,51],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"copyright-and-software",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":25},"p",{},[26],{"type":21,"value":27},"Creative works, like books, paintings and music, but also scientific articles and software, are covered by copyright. Copyright is a legal construct that gives the owner of the copyright on a work the exclusive right to reproduce, modify, publicly perform and distribute the work. As a result, anyone who is not the copyright holder needs to have permission from the copyright holder to also be able to do so.",{"type":15,"tag":23,"props":29,"children":30},{},[31,33,39],{"type":21,"value":32},"Newly created works are automatically covered by copyright. This copyright is owned by the creator of the work, unless they were employed and created the work as part of their employment, in which case their employer owns the work. If multiple persons or organisations contribute to a work, then they each own a share of the copyright, and all need to give permission for others to be able to do any of the things protected by copyright. This permission is called a ",{"type":15,"tag":34,"props":35,"children":36},"em",{},[37],{"type":21,"value":38},"license",{"type":21,"value":40},".",{"type":15,"tag":23,"props":42,"children":43},{},[44],{"type":21,"value":45},"Creative works can depend on each other. Books for example can be translated, or turned into a stage play or a TV series. This creates a new work, which is known as a derivative work. A derivative work has its own copyright, because creating a translation or adaptation is itself a creative process. Like in a collaborative work, both the owner of the original copyright and the owner of the copyright on the derived adaptation need to give permission to reproduce and distribute the derived work.",{"type":15,"tag":23,"props":47,"children":48},{},[49],{"type":21,"value":50},"Software is a bit different from books or films or even databases because software is not only a collection of words and symbols, but also a machine that is used for something. As a result, working processes around software are quite different from those around books or films. Although it's bad practice, researchers quite often take a script from a colleague and modify it a bit so that it does what they want. A film director would be surprised indeed if you suggested they take a script from an existing film, change the dialog in the third act a bit, and then shoot it, but in software that's common. No novelist downloads ready-made paragraphs and chapters from the Internet and glues them together into a novel, but this is essentially how all modern software is developed.",{"type":15,"tag":23,"props":52,"children":53},{},[54],{"type":21,"value":55},"As a result, software and copyright is a bit of a specialist topic, but one that cannot be avoided because of the automatic nature of copyright and the fact that science is a collaborative enterprise. Universities therefore need a policy to govern what their employees should do and can't do with respect to the software they develop and use, and that policy needs to include something specifically about licensing software.",{"title":7,"searchDepth":10,"depth":10,"links":57},[58],{"id":18,"depth":10,"text":8},"markdown","local_fs:modules:licenses:copyright.md","local_fs","modules/licenses/copyright.md","md",[65,99],{"_path":66,"_dir":67,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":59,"_id":97,"_source":61,"_file":98,"_extension":63},"/main/about","main","About",{"type":12,"children":70,"toc":93},[71,77,82,88],{"type":15,"tag":16,"props":72,"children":74},{"id":73},"about-the-research-software-support",[75],{"type":21,"value":76},"About the Research Software Support",{"type":15,"tag":23,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":83,"children":85},{"id":84},"target-audience",[86],{"type":21,"value":87},"Target audience",{"type":15,"tag":23,"props":89,"children":90},{},[91],{"type":21,"value":92},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":10,"depth":10,"links":94},[95,96],{"id":73,"depth":10,"text":76},{"id":84,"depth":10,"text":87},"local_fs:main:about.md","main/about.md",{"_path":100,"_dir":67,"_draft":6,"_partial":6,"_locale":7,"title":101,"description":7,"body":102,"_type":59,"_id":229,"_source":61,"_file":230,"_extension":63},"/main/contribute","Contribute",{"type":12,"children":103,"toc":223},[104,110,115,122,127],{"type":15,"tag":16,"props":105,"children":107},{"id":106},"contributing-to-the-research-software-support",[108],{"type":21,"value":109},"Contributing to the Research Software Support",{"type":15,"tag":23,"props":111,"children":112},{},[113],{"type":21,"value":114},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":116,"props":117,"children":119},"h3",{"id":118},"what-can-i-do",[120],{"type":21,"value":121},"What can I do?",{"type":15,"tag":23,"props":123,"children":124},{},[125],{"type":21,"value":126},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":128,"props":129,"children":130},"ul",{},[131,148,189,211],{"type":15,"tag":132,"props":133,"children":134},"li",{},[135,137,146],{"type":21,"value":136},"Contribute to the content discussion in the ",{"type":15,"tag":138,"props":139,"children":143},"a",{"href":140,"rel":141},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[142],"nofollow",[144],{"type":21,"value":145},"chapter issues",{"type":21,"value":147},", e.g. by listing good resources for information.",{"type":15,"tag":132,"props":149,"children":150},{},[151,157,159],{"type":15,"tag":138,"props":152,"children":154},{"href":153},"#elements-of-a-module",[155],{"type":21,"value":156},"Author a lesson",{"type":21,"value":158},", e.g. by:\n",{"type":15,"tag":128,"props":160,"children":161},{},[162,171,180],{"type":15,"tag":132,"props":163,"children":164},{},[165],{"type":15,"tag":138,"props":166,"children":168},{"href":167},"#slides",[169],{"type":21,"value":170},"Creating slides",{"type":15,"tag":132,"props":172,"children":173},{},[174],{"type":15,"tag":138,"props":175,"children":177},{"href":176},"#exercises",[178],{"type":21,"value":179},"Designing an exercise",{"type":15,"tag":132,"props":181,"children":182},{},[183],{"type":15,"tag":138,"props":184,"children":186},{"href":185},"#online-resources",[187],{"type":21,"value":188},"Curating online resources",{"type":15,"tag":132,"props":190,"children":191},{},[192,194,201,203,210],{"type":21,"value":193},"Review a lesson module; both by looking at ",{"type":15,"tag":138,"props":195,"children":198},{"href":196,"rel":197},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[142],[199],{"type":21,"value":200},"open PRs",{"type":21,"value":202},", as well as flagging issues for improvement in the ",{"type":15,"tag":138,"props":204,"children":207},{"href":205,"rel":206},"https://esciencecenter-digital-skills.github.io/research-software-support/",[142],[208],{"type":21,"value":209},"existing content",{"type":21,"value":40},{"type":15,"tag":132,"props":212,"children":213},{},[214,221],{"type":15,"tag":138,"props":215,"children":218},{"href":216,"rel":217},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[142],[219],{"type":21,"value":220},"Provide feedback",{"type":21,"value":222}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":10,"depth":10,"links":224},[225],{"id":106,"depth":10,"text":109,"children":226},[227],{"id":118,"depth":228,"text":121},3,"local_fs:main:contribute.md","main/contribute.md",1715801015018] \ No newline at end of file diff --git a/modules/licenses/copyright/index.html b/modules/licenses/copyright/index.html index 6f67c485..53f21b51 100644 --- a/modules/licenses/copyright/index.html +++ b/modules/licenses/copyright/index.html @@ -2,7 +2,7 @@ Copyright and software - + - - - - - - - - + + + + + + + + - - - - - + + + + + - - + + -

    Module: licenses

    Creative works, like books, paintings and music, but also scientific articles and software, are covered by copyright. Copyright is a legal construct that gives the owner of the copyright on a work the exclusive right to reproduce, modify, publicly perform and distribute the work. As a result, anyone who is not the copyright holder needs to have permission from the copyright holder to also be able to do so.

    Newly created works are automatically covered by copyright. This copyright is owned by the creator of the work, unless they were employed and created the work as part of their employment, in which case their employer owns the work. If multiple persons or organisations contribute to a work, then they each own a share of the copyright, and all need to give permission for others to be able to do any of the things protected by copyright. This permission is called a license.

    Creative works can depend on each other. Books for example can be translated, or turned into a stage play or a TV series. This creates a new work, which is known as a derivative work. A derivative work has its own copyright, because creating a translation or adaptation is itself a creative process. Like in a collaborative work, both the owner of the original copyright and the owner of the copyright on the derived adaptation need to give permission to reproduce and distribute the derived work.

    Software is a bit different from books or films or even databases because software is not only a collection of words and symbols, but also a machine that is used for something. As a result, working processes around software are quite different from those around books or films. Although it's bad practice, researchers quite often take a script from a colleague and modify it a bit so that it does what they want. A film director would be surprised indeed if you suggested they take a script from an existing film, change the dialog in the third act a bit, and then shoot it, but in software that's common. No novelist downloads ready-made paragraphs and chapters from the Internet and glues them together into a novel, but this is essentially how all modern software is developed.

    As a result, software and copyright is a bit of a specialist topic, but one that cannot be avoided because of the automatic nature of copyright and the fact that science is a collaborative enterprise. Universities therefore need a policy to govern what their employees should do and can't do with respect to the software they develop and use, and that policy needs to include something specifically about licensing software.

    - \ No newline at end of file +

    Module: licenses

    Creative works, like books, paintings and music, but also scientific articles and software, are covered by copyright. Copyright is a legal construct that gives the owner of the copyright on a work the exclusive right to reproduce, modify, publicly perform and distribute the work. As a result, anyone who is not the copyright holder needs to have permission from the copyright holder to also be able to do so.

    Newly created works are automatically covered by copyright. This copyright is owned by the creator of the work, unless they were employed and created the work as part of their employment, in which case their employer owns the work. If multiple persons or organisations contribute to a work, then they each own a share of the copyright, and all need to give permission for others to be able to do any of the things protected by copyright. This permission is called a license.

    Creative works can depend on each other. Books for example can be translated, or turned into a stage play or a TV series. This creates a new work, which is known as a derivative work. A derivative work has its own copyright, because creating a translation or adaptation is itself a creative process. Like in a collaborative work, both the owner of the original copyright and the owner of the copyright on the derived adaptation need to give permission to reproduce and distribute the derived work.

    Software is a bit different from books or films or even databases because software is not only a collection of words and symbols, but also a machine that is used for something. As a result, working processes around software are quite different from those around books or films. Although it's bad practice, researchers quite often take a script from a colleague and modify it a bit so that it does what they want. A film director would be surprised indeed if you suggested they take a script from an existing film, change the dialog in the third act a bit, and then shoot it, but in software that's common. No novelist downloads ready-made paragraphs and chapters from the Internet and glues them together into a novel, but this is essentially how all modern software is developed.

    As a result, software and copyright is a bit of a specialist topic, but one that cannot be avoided because of the automatic nature of copyright and the fact that science is a collaborative enterprise. Universities therefore need a policy to govern what their employees should do and can't do with respect to the software they develop and use, and that policy needs to include something specifically about licensing software.

    + \ No newline at end of file diff --git a/modules/licenses/ex_choose_a_license/_payload.json b/modules/licenses/ex_choose_a_license/_payload.json index 6cd76a6e..fab53bb4 100644 --- a/modules/licenses/ex_choose_a_license/_payload.json +++ b/modules/licenses/ex_choose_a_license/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":225},["Reactive",2],{"content-query-c3ET3Td0zy":3,"content-query-AT44bg6JPw":59},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":54,"_id":55,"_source":56,"_file":57,"_extension":58},"/modules/licenses/ex_choose_a_license","licenses",false,"","Choose a license for or using your policy","exercise",5,{"type":12,"children":13,"toc":50},"root",[14,23,29,34],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"exercise-1-choose-a-license-for-or-using-your-policy-10-minutes",[20],{"type":21,"value":22},"text","Exercise 1: Choose a license for or using your policy (10 minutes)",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27],{"type":21,"value":28},"One of the concerns typically addressed in a software policy is licensing of software developed at the institution. Policies can choose a single license, or offer a range of options.",{"type":15,"tag":24,"props":30,"children":31},{},[32],{"type":21,"value":33},"Try to find out whether your university has a license policy. What does it say about which license(s) to use? If you don't have a policy yet, which license(s) would you choose for your policy? Why?",{"type":15,"tag":24,"props":35,"children":36},{},[37,39,48],{"type":21,"value":38},"Go to ",{"type":15,"tag":40,"props":41,"children":45},"a",{"href":42,"rel":43},"https://choosealicense.com",[44],"nofollow",[46],{"type":21,"value":47},"Choosealicense.com",{"type":21,"value":49}," and play around with the options to help you choose.",{"title":7,"searchDepth":51,"depth":51,"links":52},2,[53],{"id":18,"depth":51,"text":22},"markdown","local_fs:modules:licenses:ex_choose_a_license.md","local_fs","modules/licenses/ex_choose_a_license.md","md",[60,94],{"_path":61,"_dir":62,"_draft":6,"_partial":6,"_locale":7,"title":63,"description":7,"body":64,"_type":54,"_id":92,"_source":56,"_file":93,"_extension":58},"/main/about","main","About",{"type":12,"children":65,"toc":88},[66,72,77,83],{"type":15,"tag":16,"props":67,"children":69},{"id":68},"about-the-research-software-support",[70],{"type":21,"value":71},"About the Research Software Support",{"type":15,"tag":24,"props":73,"children":74},{},[75],{"type":21,"value":76},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":78,"children":80},{"id":79},"target-audience",[81],{"type":21,"value":82},"Target audience",{"type":15,"tag":24,"props":84,"children":85},{},[86],{"type":21,"value":87},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":51,"depth":51,"links":89},[90,91],{"id":68,"depth":51,"text":71},{"id":79,"depth":51,"text":82},"local_fs:main:about.md","main/about.md",{"_path":95,"_dir":62,"_draft":6,"_partial":6,"_locale":7,"title":96,"description":7,"body":97,"_type":54,"_id":223,"_source":56,"_file":224,"_extension":58},"/main/contribute","Contribute",{"type":12,"children":98,"toc":217},[99,105,110,117,122],{"type":15,"tag":16,"props":100,"children":102},{"id":101},"contributing-to-the-research-software-support",[103],{"type":21,"value":104},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":106,"children":107},{},[108],{"type":21,"value":109},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":111,"props":112,"children":114},"h3",{"id":113},"what-can-i-do",[115],{"type":21,"value":116},"What can I do?",{"type":15,"tag":24,"props":118,"children":119},{},[120],{"type":21,"value":121},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":123,"props":124,"children":125},"ul",{},[126,141,182,205],{"type":15,"tag":127,"props":128,"children":129},"li",{},[130,132,139],{"type":21,"value":131},"Contribute to the content discussion in the ",{"type":15,"tag":40,"props":133,"children":136},{"href":134,"rel":135},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[44],[137],{"type":21,"value":138},"chapter issues",{"type":21,"value":140},", e.g. by listing good resources for information.",{"type":15,"tag":127,"props":142,"children":143},{},[144,150,152],{"type":15,"tag":40,"props":145,"children":147},{"href":146},"#elements-of-a-module",[148],{"type":21,"value":149},"Author a lesson",{"type":21,"value":151},", e.g. by:\n",{"type":15,"tag":123,"props":153,"children":154},{},[155,164,173],{"type":15,"tag":127,"props":156,"children":157},{},[158],{"type":15,"tag":40,"props":159,"children":161},{"href":160},"#slides",[162],{"type":21,"value":163},"Creating slides",{"type":15,"tag":127,"props":165,"children":166},{},[167],{"type":15,"tag":40,"props":168,"children":170},{"href":169},"#exercises",[171],{"type":21,"value":172},"Designing an exercise",{"type":15,"tag":127,"props":174,"children":175},{},[176],{"type":15,"tag":40,"props":177,"children":179},{"href":178},"#online-resources",[180],{"type":21,"value":181},"Curating online resources",{"type":15,"tag":127,"props":183,"children":184},{},[185,187,194,196,203],{"type":21,"value":186},"Review a lesson module; both by looking at ",{"type":15,"tag":40,"props":188,"children":191},{"href":189,"rel":190},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[44],[192],{"type":21,"value":193},"open PRs",{"type":21,"value":195},", as well as flagging issues for improvement in the ",{"type":15,"tag":40,"props":197,"children":200},{"href":198,"rel":199},"https://esciencecenter-digital-skills.github.io/research-software-support/",[44],[201],{"type":21,"value":202},"existing content",{"type":21,"value":204},".",{"type":15,"tag":127,"props":206,"children":207},{},[208,215],{"type":15,"tag":40,"props":209,"children":212},{"href":210,"rel":211},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[44],[213],{"type":21,"value":214},"Provide feedback",{"type":21,"value":216}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":51,"depth":51,"links":218},[219],{"id":101,"depth":51,"text":104,"children":220},[221],{"id":113,"depth":222,"text":116},3,"local_fs:main:contribute.md","main/contribute.md",1715800937758] \ No newline at end of file +[{"data":1,"prerenderedAt":225},["Reactive",2],{"content-query-c3ET3Td0zy":3,"content-query-AT44bg6JPw":59},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":54,"_id":55,"_source":56,"_file":57,"_extension":58},"/modules/licenses/ex_choose_a_license","licenses",false,"","Choose a license for or using your policy","exercise",5,{"type":12,"children":13,"toc":50},"root",[14,23,29,34],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"exercise-1-choose-a-license-for-or-using-your-policy-10-minutes",[20],{"type":21,"value":22},"text","Exercise 1: Choose a license for or using your policy (10 minutes)",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27],{"type":21,"value":28},"One of the concerns typically addressed in a software policy is licensing of software developed at the institution. Policies can choose a single license, or offer a range of options.",{"type":15,"tag":24,"props":30,"children":31},{},[32],{"type":21,"value":33},"Try to find out whether your university has a license policy. What does it say about which license(s) to use? If you don't have a policy yet, which license(s) would you choose for your policy? Why?",{"type":15,"tag":24,"props":35,"children":36},{},[37,39,48],{"type":21,"value":38},"Go to ",{"type":15,"tag":40,"props":41,"children":45},"a",{"href":42,"rel":43},"https://choosealicense.com",[44],"nofollow",[46],{"type":21,"value":47},"Choosealicense.com",{"type":21,"value":49}," and play around with the options to help you choose.",{"title":7,"searchDepth":51,"depth":51,"links":52},2,[53],{"id":18,"depth":51,"text":22},"markdown","local_fs:modules:licenses:ex_choose_a_license.md","local_fs","modules/licenses/ex_choose_a_license.md","md",[60,94],{"_path":61,"_dir":62,"_draft":6,"_partial":6,"_locale":7,"title":63,"description":7,"body":64,"_type":54,"_id":92,"_source":56,"_file":93,"_extension":58},"/main/about","main","About",{"type":12,"children":65,"toc":88},[66,72,77,83],{"type":15,"tag":16,"props":67,"children":69},{"id":68},"about-the-research-software-support",[70],{"type":21,"value":71},"About the Research Software Support",{"type":15,"tag":24,"props":73,"children":74},{},[75],{"type":21,"value":76},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":78,"children":80},{"id":79},"target-audience",[81],{"type":21,"value":82},"Target audience",{"type":15,"tag":24,"props":84,"children":85},{},[86],{"type":21,"value":87},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":51,"depth":51,"links":89},[90,91],{"id":68,"depth":51,"text":71},{"id":79,"depth":51,"text":82},"local_fs:main:about.md","main/about.md",{"_path":95,"_dir":62,"_draft":6,"_partial":6,"_locale":7,"title":96,"description":7,"body":97,"_type":54,"_id":223,"_source":56,"_file":224,"_extension":58},"/main/contribute","Contribute",{"type":12,"children":98,"toc":217},[99,105,110,117,122],{"type":15,"tag":16,"props":100,"children":102},{"id":101},"contributing-to-the-research-software-support",[103],{"type":21,"value":104},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":106,"children":107},{},[108],{"type":21,"value":109},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":111,"props":112,"children":114},"h3",{"id":113},"what-can-i-do",[115],{"type":21,"value":116},"What can I do?",{"type":15,"tag":24,"props":118,"children":119},{},[120],{"type":21,"value":121},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":123,"props":124,"children":125},"ul",{},[126,141,182,205],{"type":15,"tag":127,"props":128,"children":129},"li",{},[130,132,139],{"type":21,"value":131},"Contribute to the content discussion in the ",{"type":15,"tag":40,"props":133,"children":136},{"href":134,"rel":135},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[44],[137],{"type":21,"value":138},"chapter issues",{"type":21,"value":140},", e.g. by listing good resources for information.",{"type":15,"tag":127,"props":142,"children":143},{},[144,150,152],{"type":15,"tag":40,"props":145,"children":147},{"href":146},"#elements-of-a-module",[148],{"type":21,"value":149},"Author a lesson",{"type":21,"value":151},", e.g. by:\n",{"type":15,"tag":123,"props":153,"children":154},{},[155,164,173],{"type":15,"tag":127,"props":156,"children":157},{},[158],{"type":15,"tag":40,"props":159,"children":161},{"href":160},"#slides",[162],{"type":21,"value":163},"Creating slides",{"type":15,"tag":127,"props":165,"children":166},{},[167],{"type":15,"tag":40,"props":168,"children":170},{"href":169},"#exercises",[171],{"type":21,"value":172},"Designing an exercise",{"type":15,"tag":127,"props":174,"children":175},{},[176],{"type":15,"tag":40,"props":177,"children":179},{"href":178},"#online-resources",[180],{"type":21,"value":181},"Curating online resources",{"type":15,"tag":127,"props":183,"children":184},{},[185,187,194,196,203],{"type":21,"value":186},"Review a lesson module; both by looking at ",{"type":15,"tag":40,"props":188,"children":191},{"href":189,"rel":190},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[44],[192],{"type":21,"value":193},"open PRs",{"type":21,"value":195},", as well as flagging issues for improvement in the ",{"type":15,"tag":40,"props":197,"children":200},{"href":198,"rel":199},"https://esciencecenter-digital-skills.github.io/research-software-support/",[44],[201],{"type":21,"value":202},"existing content",{"type":21,"value":204},".",{"type":15,"tag":127,"props":206,"children":207},{},[208,215],{"type":15,"tag":40,"props":209,"children":212},{"href":210,"rel":211},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[44],[213],{"type":21,"value":214},"Provide feedback",{"type":21,"value":216}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":51,"depth":51,"links":218},[219],{"id":101,"depth":51,"text":104,"children":220},[221],{"id":113,"depth":222,"text":116},3,"local_fs:main:contribute.md","main/contribute.md",1715801015046] \ No newline at end of file diff --git a/modules/licenses/ex_choose_a_license/index.html b/modules/licenses/ex_choose_a_license/index.html index 93c12efc..5b1eb5f2 100644 --- a/modules/licenses/ex_choose_a_license/index.html +++ b/modules/licenses/ex_choose_a_license/index.html @@ -2,7 +2,7 @@ Choose a license for or using your policy - + - - - - - - - - + + + + + + + + - - - - - + + + + + - - + + -

    Module: licenses

    Exercise 1: Choose a license for or using your policy (10 minutes)

    One of the concerns typically addressed in a software policy is licensing of software developed at the institution. Policies can choose a single license, or offer a range of options.

    Try to find out whether your university has a license policy. What does it say about which license(s) to use? If you don't have a policy yet, which license(s) would you choose for your policy? Why?

    Go to Choosealicense.com and play around with the options to help you choose.

    - \ No newline at end of file +

    Module: licenses

    Exercise 1: Choose a license for or using your policy (10 minutes)

    One of the concerns typically addressed in a software policy is licensing of software developed at the institution. Policies can choose a single license, or offer a range of options.

    Try to find out whether your university has a license policy. What does it say about which license(s) to use? If you don't have a policy yet, which license(s) would you choose for your policy? Why?

    Go to Choosealicense.com and play around with the options to help you choose.

    + \ No newline at end of file diff --git a/modules/licenses/ex_have_licensing_policy/_payload.json b/modules/licenses/ex_have_licensing_policy/_payload.json index 0df8758a..2e40d2bf 100644 --- a/modules/licenses/ex_have_licensing_policy/_payload.json +++ b/modules/licenses/ex_have_licensing_policy/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":233},["Reactive",2],{"content-query-pIsfZ6iySk":3,"content-query-AT44bg6JPw":67},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":62,"_id":63,"_source":64,"_file":65,"_extension":66},"/modules/licenses/ex_have_licensing_policy","licenses",false,"","Does your university have a software licensing policy?","exercise",6,{"type":12,"children":13,"toc":58},"root",[14,23],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"exercise-2-does-your-university-have-a-software-licensing-policy",[20],{"type":21,"value":22},"text","Exercise 2: Does your university have a software licensing policy?",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27,29,38,40,47,49,56],{"type":21,"value":28},"Try and find out whether your university has a software (licensing) policy. If you can find it, compare it with the ones from ",{"type":15,"tag":30,"props":31,"children":35},"a",{"href":32,"rel":33},"https://zenodo.org/record/4629662",[34],"nofollow",[36],{"type":21,"value":37},"TU Delft",{"type":21,"value":39},", ",{"type":15,"tag":30,"props":41,"children":44},{"href":42,"rel":43},"https://zenodo.org/records/7307162",[34],[45],{"type":21,"value":46},"ASTRON",{"type":21,"value":48}," and ",{"type":15,"tag":30,"props":50,"children":53},{"href":51,"rel":52},"https://www.esciencecenter.nl/wp-content/uploads/2020/05/nlesc_ip_policy_2017.pdf",[34],[54],{"type":21,"value":55},"the Netherlands eScience Center",{"type":21,"value":57},". What elements are commonly found? Which differences do you see, and what is their respective motivation?",{"title":7,"searchDepth":59,"depth":59,"links":60},2,[61],{"id":18,"depth":59,"text":22},"markdown","local_fs:modules:licenses:ex_have_licensing_policy.md","local_fs","modules/licenses/ex_have_licensing_policy.md","md",[68,102],{"_path":69,"_dir":70,"_draft":6,"_partial":6,"_locale":7,"title":71,"description":7,"body":72,"_type":62,"_id":100,"_source":64,"_file":101,"_extension":66},"/main/about","main","About",{"type":12,"children":73,"toc":96},[74,80,85,91],{"type":15,"tag":16,"props":75,"children":77},{"id":76},"about-the-research-software-support",[78],{"type":21,"value":79},"About the Research Software Support",{"type":15,"tag":24,"props":81,"children":82},{},[83],{"type":21,"value":84},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":86,"children":88},{"id":87},"target-audience",[89],{"type":21,"value":90},"Target audience",{"type":15,"tag":24,"props":92,"children":93},{},[94],{"type":21,"value":95},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":59,"depth":59,"links":97},[98,99],{"id":76,"depth":59,"text":79},{"id":87,"depth":59,"text":90},"local_fs:main:about.md","main/about.md",{"_path":103,"_dir":70,"_draft":6,"_partial":6,"_locale":7,"title":104,"description":7,"body":105,"_type":62,"_id":231,"_source":64,"_file":232,"_extension":66},"/main/contribute","Contribute",{"type":12,"children":106,"toc":225},[107,113,118,125,130],{"type":15,"tag":16,"props":108,"children":110},{"id":109},"contributing-to-the-research-software-support",[111],{"type":21,"value":112},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":114,"children":115},{},[116],{"type":21,"value":117},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":119,"props":120,"children":122},"h3",{"id":121},"what-can-i-do",[123],{"type":21,"value":124},"What can I do?",{"type":15,"tag":24,"props":126,"children":127},{},[128],{"type":21,"value":129},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":131,"props":132,"children":133},"ul",{},[134,149,190,213],{"type":15,"tag":135,"props":136,"children":137},"li",{},[138,140,147],{"type":21,"value":139},"Contribute to the content discussion in the ",{"type":15,"tag":30,"props":141,"children":144},{"href":142,"rel":143},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[34],[145],{"type":21,"value":146},"chapter issues",{"type":21,"value":148},", e.g. by listing good resources for information.",{"type":15,"tag":135,"props":150,"children":151},{},[152,158,160],{"type":15,"tag":30,"props":153,"children":155},{"href":154},"#elements-of-a-module",[156],{"type":21,"value":157},"Author a lesson",{"type":21,"value":159},", e.g. by:\n",{"type":15,"tag":131,"props":161,"children":162},{},[163,172,181],{"type":15,"tag":135,"props":164,"children":165},{},[166],{"type":15,"tag":30,"props":167,"children":169},{"href":168},"#slides",[170],{"type":21,"value":171},"Creating slides",{"type":15,"tag":135,"props":173,"children":174},{},[175],{"type":15,"tag":30,"props":176,"children":178},{"href":177},"#exercises",[179],{"type":21,"value":180},"Designing an exercise",{"type":15,"tag":135,"props":182,"children":183},{},[184],{"type":15,"tag":30,"props":185,"children":187},{"href":186},"#online-resources",[188],{"type":21,"value":189},"Curating online resources",{"type":15,"tag":135,"props":191,"children":192},{},[193,195,202,204,211],{"type":21,"value":194},"Review a lesson module; both by looking at ",{"type":15,"tag":30,"props":196,"children":199},{"href":197,"rel":198},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[34],[200],{"type":21,"value":201},"open PRs",{"type":21,"value":203},", as well as flagging issues for improvement in the ",{"type":15,"tag":30,"props":205,"children":208},{"href":206,"rel":207},"https://esciencecenter-digital-skills.github.io/research-software-support/",[34],[209],{"type":21,"value":210},"existing content",{"type":21,"value":212},".",{"type":15,"tag":135,"props":214,"children":215},{},[216,223],{"type":15,"tag":30,"props":217,"children":220},{"href":218,"rel":219},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[34],[221],{"type":21,"value":222},"Provide feedback",{"type":21,"value":224}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":59,"depth":59,"links":226},[227],{"id":109,"depth":59,"text":112,"children":228},[229],{"id":121,"depth":230,"text":124},3,"local_fs:main:contribute.md","main/contribute.md",1715800937781] \ No newline at end of file +[{"data":1,"prerenderedAt":233},["Reactive",2],{"content-query-pIsfZ6iySk":3,"content-query-AT44bg6JPw":67},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":62,"_id":63,"_source":64,"_file":65,"_extension":66},"/modules/licenses/ex_have_licensing_policy","licenses",false,"","Does your university have a software licensing policy?","exercise",6,{"type":12,"children":13,"toc":58},"root",[14,23],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"exercise-2-does-your-university-have-a-software-licensing-policy",[20],{"type":21,"value":22},"text","Exercise 2: Does your university have a software licensing policy?",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27,29,38,40,47,49,56],{"type":21,"value":28},"Try and find out whether your university has a software (licensing) policy. If you can find it, compare it with the ones from ",{"type":15,"tag":30,"props":31,"children":35},"a",{"href":32,"rel":33},"https://zenodo.org/record/4629662",[34],"nofollow",[36],{"type":21,"value":37},"TU Delft",{"type":21,"value":39},", ",{"type":15,"tag":30,"props":41,"children":44},{"href":42,"rel":43},"https://zenodo.org/records/7307162",[34],[45],{"type":21,"value":46},"ASTRON",{"type":21,"value":48}," and ",{"type":15,"tag":30,"props":50,"children":53},{"href":51,"rel":52},"https://www.esciencecenter.nl/wp-content/uploads/2020/05/nlesc_ip_policy_2017.pdf",[34],[54],{"type":21,"value":55},"the Netherlands eScience Center",{"type":21,"value":57},". What elements are commonly found? Which differences do you see, and what is their respective motivation?",{"title":7,"searchDepth":59,"depth":59,"links":60},2,[61],{"id":18,"depth":59,"text":22},"markdown","local_fs:modules:licenses:ex_have_licensing_policy.md","local_fs","modules/licenses/ex_have_licensing_policy.md","md",[68,102],{"_path":69,"_dir":70,"_draft":6,"_partial":6,"_locale":7,"title":71,"description":7,"body":72,"_type":62,"_id":100,"_source":64,"_file":101,"_extension":66},"/main/about","main","About",{"type":12,"children":73,"toc":96},[74,80,85,91],{"type":15,"tag":16,"props":75,"children":77},{"id":76},"about-the-research-software-support",[78],{"type":21,"value":79},"About the Research Software Support",{"type":15,"tag":24,"props":81,"children":82},{},[83],{"type":21,"value":84},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":86,"children":88},{"id":87},"target-audience",[89],{"type":21,"value":90},"Target audience",{"type":15,"tag":24,"props":92,"children":93},{},[94],{"type":21,"value":95},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":59,"depth":59,"links":97},[98,99],{"id":76,"depth":59,"text":79},{"id":87,"depth":59,"text":90},"local_fs:main:about.md","main/about.md",{"_path":103,"_dir":70,"_draft":6,"_partial":6,"_locale":7,"title":104,"description":7,"body":105,"_type":62,"_id":231,"_source":64,"_file":232,"_extension":66},"/main/contribute","Contribute",{"type":12,"children":106,"toc":225},[107,113,118,125,130],{"type":15,"tag":16,"props":108,"children":110},{"id":109},"contributing-to-the-research-software-support",[111],{"type":21,"value":112},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":114,"children":115},{},[116],{"type":21,"value":117},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":119,"props":120,"children":122},"h3",{"id":121},"what-can-i-do",[123],{"type":21,"value":124},"What can I do?",{"type":15,"tag":24,"props":126,"children":127},{},[128],{"type":21,"value":129},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":131,"props":132,"children":133},"ul",{},[134,149,190,213],{"type":15,"tag":135,"props":136,"children":137},"li",{},[138,140,147],{"type":21,"value":139},"Contribute to the content discussion in the ",{"type":15,"tag":30,"props":141,"children":144},{"href":142,"rel":143},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[34],[145],{"type":21,"value":146},"chapter issues",{"type":21,"value":148},", e.g. by listing good resources for information.",{"type":15,"tag":135,"props":150,"children":151},{},[152,158,160],{"type":15,"tag":30,"props":153,"children":155},{"href":154},"#elements-of-a-module",[156],{"type":21,"value":157},"Author a lesson",{"type":21,"value":159},", e.g. by:\n",{"type":15,"tag":131,"props":161,"children":162},{},[163,172,181],{"type":15,"tag":135,"props":164,"children":165},{},[166],{"type":15,"tag":30,"props":167,"children":169},{"href":168},"#slides",[170],{"type":21,"value":171},"Creating slides",{"type":15,"tag":135,"props":173,"children":174},{},[175],{"type":15,"tag":30,"props":176,"children":178},{"href":177},"#exercises",[179],{"type":21,"value":180},"Designing an exercise",{"type":15,"tag":135,"props":182,"children":183},{},[184],{"type":15,"tag":30,"props":185,"children":187},{"href":186},"#online-resources",[188],{"type":21,"value":189},"Curating online resources",{"type":15,"tag":135,"props":191,"children":192},{},[193,195,202,204,211],{"type":21,"value":194},"Review a lesson module; both by looking at ",{"type":15,"tag":30,"props":196,"children":199},{"href":197,"rel":198},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[34],[200],{"type":21,"value":201},"open PRs",{"type":21,"value":203},", as well as flagging issues for improvement in the ",{"type":15,"tag":30,"props":205,"children":208},{"href":206,"rel":207},"https://esciencecenter-digital-skills.github.io/research-software-support/",[34],[209],{"type":21,"value":210},"existing content",{"type":21,"value":212},".",{"type":15,"tag":135,"props":214,"children":215},{},[216,223],{"type":15,"tag":30,"props":217,"children":220},{"href":218,"rel":219},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[34],[221],{"type":21,"value":222},"Provide feedback",{"type":21,"value":224}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":59,"depth":59,"links":226},[227],{"id":109,"depth":59,"text":112,"children":228},[229],{"id":121,"depth":230,"text":124},3,"local_fs:main:contribute.md","main/contribute.md",1715801015061] \ No newline at end of file diff --git a/modules/licenses/ex_have_licensing_policy/index.html b/modules/licenses/ex_have_licensing_policy/index.html index ceb0071d..87681a5e 100644 --- a/modules/licenses/ex_have_licensing_policy/index.html +++ b/modules/licenses/ex_have_licensing_policy/index.html @@ -2,7 +2,7 @@ Does your university have a software licensing policy? - + - - - - - - - - + + + + + + + + - - - - - + + + + + - - + + -

    Module: licenses

    Exercise 2: Does your university have a software licensing policy?

    Try and find out whether your university has a software (licensing) policy. If you can find it, compare it with the ones from TU Delft, ASTRON and the Netherlands eScience Center. What elements are commonly found? Which differences do you see, and what is their respective motivation?

    - \ No newline at end of file +

    Module: licenses

    Exercise 2: Does your university have a software licensing policy?

    Try and find out whether your university has a software (licensing) policy. If you can find it, compare it with the ones from TU Delft, ASTRON and the Netherlands eScience Center. What elements are commonly found? Which differences do you see, and what is their respective motivation?

    + \ No newline at end of file diff --git a/modules/licenses/ex_licenses_in_use/_payload.json b/modules/licenses/ex_licenses_in_use/_payload.json index 116c9822..32236825 100644 --- a/modules/licenses/ex_licenses_in_use/_payload.json +++ b/modules/licenses/ex_licenses_in_use/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":215},["Reactive",2],{"content-query-0AB8cBqNI9":3,"content-query-AT44bg6JPw":49},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":44,"_id":45,"_source":46,"_file":47,"_extension":48},"/modules/licenses/ex_licenses_in_use","licenses",false,"","What licenses do researchers at your university use?","exercise",7,{"type":12,"children":13,"toc":40},"root",[14,23],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"exercise-3-what-licenses-do-researchers-at-your-university-use",[20],{"type":21,"value":22},"text","Exercise 3: What licenses do researchers at your university use?",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27,29,38],{"type":21,"value":28},"Search on ",{"type":15,"tag":30,"props":31,"children":35},"a",{"href":32,"rel":33},"https://github.com/",[34],"nofollow",[36],{"type":21,"value":37},"GitHub",{"type":21,"value":39}," or other software repositories for software created by researchers at your university. What licenses do they use? Do they adhere to a policy (if there is one?)",{"title":7,"searchDepth":41,"depth":41,"links":42},2,[43],{"id":18,"depth":41,"text":22},"markdown","local_fs:modules:licenses:ex_licenses_in_use.md","local_fs","modules/licenses/ex_licenses_in_use.md","md",[50,84],{"_path":51,"_dir":52,"_draft":6,"_partial":6,"_locale":7,"title":53,"description":7,"body":54,"_type":44,"_id":82,"_source":46,"_file":83,"_extension":48},"/main/about","main","About",{"type":12,"children":55,"toc":78},[56,62,67,73],{"type":15,"tag":16,"props":57,"children":59},{"id":58},"about-the-research-software-support",[60],{"type":21,"value":61},"About the Research Software Support",{"type":15,"tag":24,"props":63,"children":64},{},[65],{"type":21,"value":66},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":68,"children":70},{"id":69},"target-audience",[71],{"type":21,"value":72},"Target audience",{"type":15,"tag":24,"props":74,"children":75},{},[76],{"type":21,"value":77},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":41,"depth":41,"links":79},[80,81],{"id":58,"depth":41,"text":61},{"id":69,"depth":41,"text":72},"local_fs:main:about.md","main/about.md",{"_path":85,"_dir":52,"_draft":6,"_partial":6,"_locale":7,"title":86,"description":7,"body":87,"_type":44,"_id":213,"_source":46,"_file":214,"_extension":48},"/main/contribute","Contribute",{"type":12,"children":88,"toc":207},[89,95,100,107,112],{"type":15,"tag":16,"props":90,"children":92},{"id":91},"contributing-to-the-research-software-support",[93],{"type":21,"value":94},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":96,"children":97},{},[98],{"type":21,"value":99},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":101,"props":102,"children":104},"h3",{"id":103},"what-can-i-do",[105],{"type":21,"value":106},"What can I do?",{"type":15,"tag":24,"props":108,"children":109},{},[110],{"type":21,"value":111},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":113,"props":114,"children":115},"ul",{},[116,131,172,195],{"type":15,"tag":117,"props":118,"children":119},"li",{},[120,122,129],{"type":21,"value":121},"Contribute to the content discussion in the ",{"type":15,"tag":30,"props":123,"children":126},{"href":124,"rel":125},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[34],[127],{"type":21,"value":128},"chapter issues",{"type":21,"value":130},", e.g. by listing good resources for information.",{"type":15,"tag":117,"props":132,"children":133},{},[134,140,142],{"type":15,"tag":30,"props":135,"children":137},{"href":136},"#elements-of-a-module",[138],{"type":21,"value":139},"Author a lesson",{"type":21,"value":141},", e.g. by:\n",{"type":15,"tag":113,"props":143,"children":144},{},[145,154,163],{"type":15,"tag":117,"props":146,"children":147},{},[148],{"type":15,"tag":30,"props":149,"children":151},{"href":150},"#slides",[152],{"type":21,"value":153},"Creating slides",{"type":15,"tag":117,"props":155,"children":156},{},[157],{"type":15,"tag":30,"props":158,"children":160},{"href":159},"#exercises",[161],{"type":21,"value":162},"Designing an exercise",{"type":15,"tag":117,"props":164,"children":165},{},[166],{"type":15,"tag":30,"props":167,"children":169},{"href":168},"#online-resources",[170],{"type":21,"value":171},"Curating online resources",{"type":15,"tag":117,"props":173,"children":174},{},[175,177,184,186,193],{"type":21,"value":176},"Review a lesson module; both by looking at ",{"type":15,"tag":30,"props":178,"children":181},{"href":179,"rel":180},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[34],[182],{"type":21,"value":183},"open PRs",{"type":21,"value":185},", as well as flagging issues for improvement in the ",{"type":15,"tag":30,"props":187,"children":190},{"href":188,"rel":189},"https://esciencecenter-digital-skills.github.io/research-software-support/",[34],[191],{"type":21,"value":192},"existing content",{"type":21,"value":194},".",{"type":15,"tag":117,"props":196,"children":197},{},[198,205],{"type":15,"tag":30,"props":199,"children":202},{"href":200,"rel":201},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[34],[203],{"type":21,"value":204},"Provide feedback",{"type":21,"value":206}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":41,"depth":41,"links":208},[209],{"id":91,"depth":41,"text":94,"children":210},[211],{"id":103,"depth":212,"text":106},3,"local_fs:main:contribute.md","main/contribute.md",1715800937811] \ No newline at end of file +[{"data":1,"prerenderedAt":215},["Reactive",2],{"content-query-0AB8cBqNI9":3,"content-query-AT44bg6JPw":49},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":44,"_id":45,"_source":46,"_file":47,"_extension":48},"/modules/licenses/ex_licenses_in_use","licenses",false,"","What licenses do researchers at your university use?","exercise",7,{"type":12,"children":13,"toc":40},"root",[14,23],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"exercise-3-what-licenses-do-researchers-at-your-university-use",[20],{"type":21,"value":22},"text","Exercise 3: What licenses do researchers at your university use?",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27,29,38],{"type":21,"value":28},"Search on ",{"type":15,"tag":30,"props":31,"children":35},"a",{"href":32,"rel":33},"https://github.com/",[34],"nofollow",[36],{"type":21,"value":37},"GitHub",{"type":21,"value":39}," or other software repositories for software created by researchers at your university. What licenses do they use? Do they adhere to a policy (if there is one?)",{"title":7,"searchDepth":41,"depth":41,"links":42},2,[43],{"id":18,"depth":41,"text":22},"markdown","local_fs:modules:licenses:ex_licenses_in_use.md","local_fs","modules/licenses/ex_licenses_in_use.md","md",[50,84],{"_path":51,"_dir":52,"_draft":6,"_partial":6,"_locale":7,"title":53,"description":7,"body":54,"_type":44,"_id":82,"_source":46,"_file":83,"_extension":48},"/main/about","main","About",{"type":12,"children":55,"toc":78},[56,62,67,73],{"type":15,"tag":16,"props":57,"children":59},{"id":58},"about-the-research-software-support",[60],{"type":21,"value":61},"About the Research Software Support",{"type":15,"tag":24,"props":63,"children":64},{},[65],{"type":21,"value":66},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":68,"children":70},{"id":69},"target-audience",[71],{"type":21,"value":72},"Target audience",{"type":15,"tag":24,"props":74,"children":75},{},[76],{"type":21,"value":77},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":41,"depth":41,"links":79},[80,81],{"id":58,"depth":41,"text":61},{"id":69,"depth":41,"text":72},"local_fs:main:about.md","main/about.md",{"_path":85,"_dir":52,"_draft":6,"_partial":6,"_locale":7,"title":86,"description":7,"body":87,"_type":44,"_id":213,"_source":46,"_file":214,"_extension":48},"/main/contribute","Contribute",{"type":12,"children":88,"toc":207},[89,95,100,107,112],{"type":15,"tag":16,"props":90,"children":92},{"id":91},"contributing-to-the-research-software-support",[93],{"type":21,"value":94},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":96,"children":97},{},[98],{"type":21,"value":99},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":101,"props":102,"children":104},"h3",{"id":103},"what-can-i-do",[105],{"type":21,"value":106},"What can I do?",{"type":15,"tag":24,"props":108,"children":109},{},[110],{"type":21,"value":111},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":113,"props":114,"children":115},"ul",{},[116,131,172,195],{"type":15,"tag":117,"props":118,"children":119},"li",{},[120,122,129],{"type":21,"value":121},"Contribute to the content discussion in the ",{"type":15,"tag":30,"props":123,"children":126},{"href":124,"rel":125},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[34],[127],{"type":21,"value":128},"chapter issues",{"type":21,"value":130},", e.g. by listing good resources for information.",{"type":15,"tag":117,"props":132,"children":133},{},[134,140,142],{"type":15,"tag":30,"props":135,"children":137},{"href":136},"#elements-of-a-module",[138],{"type":21,"value":139},"Author a lesson",{"type":21,"value":141},", e.g. by:\n",{"type":15,"tag":113,"props":143,"children":144},{},[145,154,163],{"type":15,"tag":117,"props":146,"children":147},{},[148],{"type":15,"tag":30,"props":149,"children":151},{"href":150},"#slides",[152],{"type":21,"value":153},"Creating slides",{"type":15,"tag":117,"props":155,"children":156},{},[157],{"type":15,"tag":30,"props":158,"children":160},{"href":159},"#exercises",[161],{"type":21,"value":162},"Designing an exercise",{"type":15,"tag":117,"props":164,"children":165},{},[166],{"type":15,"tag":30,"props":167,"children":169},{"href":168},"#online-resources",[170],{"type":21,"value":171},"Curating online resources",{"type":15,"tag":117,"props":173,"children":174},{},[175,177,184,186,193],{"type":21,"value":176},"Review a lesson module; both by looking at ",{"type":15,"tag":30,"props":178,"children":181},{"href":179,"rel":180},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[34],[182],{"type":21,"value":183},"open PRs",{"type":21,"value":185},", as well as flagging issues for improvement in the ",{"type":15,"tag":30,"props":187,"children":190},{"href":188,"rel":189},"https://esciencecenter-digital-skills.github.io/research-software-support/",[34],[191],{"type":21,"value":192},"existing content",{"type":21,"value":194},".",{"type":15,"tag":117,"props":196,"children":197},{},[198,205],{"type":15,"tag":30,"props":199,"children":202},{"href":200,"rel":201},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[34],[203],{"type":21,"value":204},"Provide feedback",{"type":21,"value":206}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":41,"depth":41,"links":208},[209],{"id":91,"depth":41,"text":94,"children":210},[211],{"id":103,"depth":212,"text":106},3,"local_fs:main:contribute.md","main/contribute.md",1715801015115] \ No newline at end of file diff --git a/modules/licenses/ex_licenses_in_use/index.html b/modules/licenses/ex_licenses_in_use/index.html index bad70118..0bbf829a 100644 --- a/modules/licenses/ex_licenses_in_use/index.html +++ b/modules/licenses/ex_licenses_in_use/index.html @@ -2,7 +2,7 @@ What licenses do researchers at your university use? - + - - - - - - - - + + + + + + + + - - - - - + + + + + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/licenses/info/_payload.json b/modules/licenses/info/_payload.json index e79b2ee6..5448bdb0 100644 --- a/modules/licenses/info/_payload.json +++ b/modules/licenses/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-GnyXawtPMT":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/licenses/info","licenses",false,"","Learning objectives","Learning objectives for the Software Licenses module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:licenses:info.md","local_fs","modules/licenses/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715800937075] \ No newline at end of file +[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-GnyXawtPMT":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/licenses/info","licenses",false,"","Learning objectives","Learning objectives for the Software Licenses module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:licenses:info.md","local_fs","modules/licenses/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715801014245] \ No newline at end of file diff --git a/modules/licenses/info/index.html b/modules/licenses/info/index.html index d7b002cb..8087fc06 100644 --- a/modules/licenses/info/index.html +++ b/modules/licenses/info/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - + + + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/licenses/licenses/_payload.json b/modules/licenses/licenses/_payload.json index c276b94c..ee0c1ad5 100644 --- a/modules/licenses/licenses/_payload.json +++ b/modules/licenses/licenses/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":542},["Reactive",2],{"content-query-ttn2rK0WZC":3,"content-query-AT44bg6JPw":378},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":373,"_id":374,"_source":375,"_file":376,"_extension":377},"/modules/licenses/licenses","licenses",false,"","Software licenses","reading",4,{"type":12,"children":13,"toc":365},"root",[14,22,28,33,38,43,50,55,75,80,85,91,96,121,126,131,136,142,280,324,329,334,339,344,350,355,360],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"software-licenses",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":25},"p",{},[26],{"type":21,"value":27},"Software licenses are legal statements that give permission to use, modify and/or distribute software. By copyright law, only the copyright owner(s) can give this permission, so the license must be granted by those owners.",{"type":15,"tag":23,"props":29,"children":30},{},[31],{"type":21,"value":32},"There are different kinds of software licenses, with different underlying business models. Some software producers sell copies or seats, where the user has to pay for each computer that the software is used on or person the software is used by, and where the user does not have permission to modify or distribute the software. In this case, licenses are given to individual users or companies as part of a sales contract.",{"type":15,"tag":23,"props":34,"children":35},{},[36],{"type":21,"value":37},"It is also possible to make a general statement that anyone can use, modify and/or distribute a software package under certain conditions. In this case, there is no contract, and no specific counterparty. Instead, the owners of the copyright give the same permissions to everyone, usually in a document included with the software as it is put on the Internet. Software distributed like this can usually be downloaded without paying, although there may still be significant limitations on what you can do with it.",{"type":15,"tag":23,"props":39,"children":40},{},[41],{"type":21,"value":42},"Some software is distributed with a license that gives very broad permissions to anyone who obtains a copy. Such software is known as Free Software and/or Open Source Software. Before we look at what that is exactly, it helps to understand a bit better what software actually is, and how it's made.",{"type":15,"tag":44,"props":45,"children":47},"h3",{"id":46},"what-is-software",[48],{"type":21,"value":49},"What is software?",{"type":15,"tag":23,"props":51,"children":52},{},[53],{"type":21,"value":54},"To non-programmers, software can appear to be a somewhat magical thing. It is in our computers and phones and it makes them work, or sometimes not work. It's made by specialist people who we call programmers, and who must be very smart to be able to make all this work, or perhaps very dumb given how often software doesn't work. In short, it seems to be mysterious.",{"type":15,"tag":23,"props":56,"children":57},{},[58,60,66,68,73],{"type":21,"value":59},"Of course, programmers are perfectly ordinary people. They make the software that makes our phones and computers work, and sometimes programmers make mistakes, and then the software doesn't work as intended. Computer programs are made by typing text into the computer, just like you do when writing an email or a letter. Computer programs consist of one or more files with instructions for the computer. These files can be modified to change what the software does, they can be combined together into a larger, more complex program, and they can be shared with others and reused. For the computer to be able to run the software, the files need to be translated from the human-readable text form (the ",{"type":15,"tag":61,"props":62,"children":63},"em",{},[64],{"type":21,"value":65},"source code",{"type":21,"value":67},") into a sequence of numbers encoding the same commands (a ",{"type":15,"tag":61,"props":69,"children":70},{},[71],{"type":21,"value":72},"binary",{"type":21,"value":74},"). This is done mechanically by a special program called a compiler or an interpreter.",{"type":15,"tag":23,"props":76,"children":77},{},[78],{"type":21,"value":79},"There are different ways of making software collaboratively. One is to work closely together (even sharing a computer!) on the same source code, which can help reduce mistakes as two see more than one, or it can be useful as a teaching exercise. Looser ways of collaborating include copying someone else's code and then independently modifying it to do something a bit different, and reusing a software component made by someone else in your own program, usually in its original form but possibly with changes as well.",{"type":15,"tag":23,"props":81,"children":82},{},[83],{"type":21,"value":84},"The looser forms of collaboration rely on software being distributed from its maker to its user, who then modifies it or integrates it. This requires permission from the copyright owners because there's distribution and the creation of a derivative work, which means that there needs to be a license. A reliable and easy way to do this is to make all the software Free and Open Source.",{"type":15,"tag":44,"props":86,"children":88},{"id":87},"free-and-open-source-software",[89],{"type":21,"value":90},"Free and Open Source Software",{"type":15,"tag":23,"props":92,"children":93},{},[94],{"type":21,"value":95},"The Free Software Foundation lists four freedoms that users need to be given by the copyright owner(s) for a program to be considered Free Software:",{"type":15,"tag":97,"props":98,"children":99},"ul",{},[100,106,111,116],{"type":15,"tag":101,"props":102,"children":103},"li",{},[104],{"type":21,"value":105},"The freedom to run the program as you wish, for any purpose.",{"type":15,"tag":101,"props":107,"children":108},{},[109],{"type":21,"value":110},"The freedom to study how the program works, and change it, so it does your computing as you wish. Access to the source code is a precondition for this.",{"type":15,"tag":101,"props":112,"children":113},{},[114],{"type":21,"value":115},"The freedom to redistribute copies so you can help others.",{"type":15,"tag":101,"props":117,"children":118},{},[119],{"type":21,"value":120},"The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. Access to the source code a precondition for this.",{"type":15,"tag":23,"props":122,"children":123},{},[124],{"type":21,"value":125},"Note that the word \"free\" here refers to freedom to do things, not to what the software costs. You're allowed to sell copies of Free Software!",{"type":15,"tag":23,"props":127,"children":128},{},[129],{"type":21,"value":130},"Open Source Software has an official definition too, which is quite a bit longer but boils down to the same thing. Because of that, the terms are often combined into Free and Open Source Software, or FOSS, but the term Open Source is also popular. We will use them here interchangeably.",{"type":15,"tag":23,"props":132,"children":133},{},[134],{"type":21,"value":135},"You can make a software package that you own the copyright to Open Source by distributing it (usually on the Internet) under an Open Source license, i.e. one that gives everyone the above freedoms. In practice, that means that the software is distributed in source code form, with a license document stating that the copyright owners give everyone the freedom to do the above things, subject to certain conditions. There exist a small number of standard Open Source licenses that you can use. All of these are open source, but there are some difference as well that are good to know about.",{"type":15,"tag":44,"props":137,"children":139},{"id":138},"license-categories",[140],{"type":21,"value":141},"License categories",{"type":15,"tag":143,"props":144,"children":145},"table",{},[146,148],{"type":21,"value":147},"\n ",{"type":15,"tag":149,"props":150,"children":151},"tbody",{},[152,175,176,194,195,211,212],{"type":15,"tag":153,"props":154,"children":156},"tr",{"align":155},"center",[157,159,166,167,174],{"type":21,"value":158},"\n ",{"type":15,"tag":160,"props":161,"children":163},"th",{"colSpan":162},"3",[164],{"type":21,"value":165},"Free and Open Source",{"type":21,"value":158},{"type":15,"tag":160,"props":168,"children":171},{"rowSpan":169,"vAlign":170},3,"top",[172],{"type":21,"value":173},"Proprietary",{"type":21,"value":147},{"type":21,"value":147},{"type":15,"tag":153,"props":177,"children":178},{"align":155},[179,180,186,187,193],{"type":21,"value":158},{"type":15,"tag":160,"props":181,"children":183},{"colSpan":182},"2",[184],{"type":21,"value":185},"Copyleft",{"type":21,"value":158},{"type":15,"tag":160,"props":188,"children":190},{"rowSpan":189},2,[191],{"type":21,"value":192},"Permissive",{"type":21,"value":147},{"type":21,"value":147},{"type":15,"tag":153,"props":196,"children":197},{"align":155},[198,199,204,205,210],{"type":21,"value":158},{"type":15,"tag":160,"props":200,"children":201},{},[202],{"type":21,"value":203},"Strong",{"type":21,"value":158},{"type":15,"tag":160,"props":206,"children":207},{},[208],{"type":21,"value":209},"Weak",{"type":21,"value":147},{"type":21,"value":147},{"type":15,"tag":153,"props":213,"children":214},{"align":155},[215,217,235,236,252,253,272,274,279],{"type":21,"value":216},"\n ",{"type":15,"tag":218,"props":219,"children":220},"td",{},[221,223,229,231],{"type":21,"value":222},"GPL",{"type":15,"tag":224,"props":225,"children":226},"sup",{},[227],{"type":21,"value":228},"1",{"type":21,"value":230}," AGPL",{"type":15,"tag":224,"props":232,"children":233},{},[234],{"type":21,"value":182},{"type":21,"value":216},{"type":15,"tag":218,"props":237,"children":238},{},[239,241,245,247],{"type":21,"value":240},"LGPL",{"type":15,"tag":224,"props":242,"children":243},{},[244],{"type":21,"value":162},{"type":21,"value":246}," MPL",{"type":15,"tag":224,"props":248,"children":249},{},[250],{"type":21,"value":251},"4",{"type":21,"value":216},{"type":15,"tag":218,"props":254,"children":255},{},[256,258,263,265,270],{"type":21,"value":257},"BSD",{"type":15,"tag":224,"props":259,"children":260},{},[261],{"type":21,"value":262},"5",{"type":21,"value":264}," MIT",{"type":15,"tag":224,"props":266,"children":267},{},[268],{"type":21,"value":269},"6",{"type":21,"value":271}," Apache",{"type":21,"value":273},"\n ",{"type":15,"tag":218,"props":275,"children":276},{},[277],{"type":21,"value":278},"Research Only: No copying, No modification",{"type":21,"value":147},{"type":15,"tag":281,"props":282,"children":285},"div",{"className":283},[284],"footnote",[286,288,292,294,298,300,304,306,310,312,316,318,322],{"type":21,"value":287},"\n ",{"type":15,"tag":224,"props":289,"children":290},{},[291],{"type":21,"value":228},{"type":21,"value":293},"GPL: GNU General Public License ",{"type":15,"tag":224,"props":295,"children":296},{},[297],{"type":21,"value":182},{"type":21,"value":299},"AGPL: Affero General Public License ",{"type":15,"tag":224,"props":301,"children":302},{},[303],{"type":21,"value":162},{"type":21,"value":305},"LGPL: GNU Lesser General Public License ",{"type":15,"tag":224,"props":307,"children":308},{},[309],{"type":21,"value":251},{"type":21,"value":311}," MPL: Mozilla Public License ",{"type":15,"tag":224,"props":313,"children":314},{},[315],{"type":21,"value":262},{"type":21,"value":317}," BSD: Berkeley Software Distribution ",{"type":15,"tag":224,"props":319,"children":320},{},[321],{"type":21,"value":269},{"type":21,"value":323}," MIT: Massachusetts Institute of Technology\n",{"type":15,"tag":23,"props":325,"children":326},{},[327],{"type":21,"value":328},"The table above shows five of the most common FOSS licenses. They're organised in a hierarchystarting with the distinction between Free and Open Source on the one and, and proprietary software on the other. Proprietary software is software that isn't FOSS, which is to say that it has restrictions on use or modification or distribution. It's called proprietary because there is a proprietor or (copyright) owner, who has exclusive control over the software. For Open Source this is not the case: there is a copyright and it's owned by someone, but the license gives everyone else the same permissions they have and so they don't have exclusive control.",{"type":15,"tag":23,"props":330,"children":331},{},[332],{"type":21,"value":333},"Within the category of Open Source licenses, we can distinguish Copyleft licenses and Permissive licenses. Permissive licenses give everyone permission to use, modify and distribute with no further restrictions other than perhaps requiring an acknowledgement that the software was used. In particular, permissive licenses allow the software to be used as a part of non-Open Source software, and for it to be redistributed without the source code, so that it cannot be inspected or modified anymore.",{"type":15,"tag":23,"props":335,"children":336},{},[337],{"type":21,"value":338},"Copyleft licenses try to ensure that the software remains FOSS. You are free to distribute Open Source software that has a copyleft license, but you have to include the complete source code and distribute the modified or extended software under that same license. As a result, everyone who gets a copy of a version of the software and anything it's used in will be free to use, modify and distribute that product. Note that distribution isn't required, all common open source licenses allow making private modifications and not sharing them with anyone.",{"type":15,"tag":23,"props":340,"children":341},{},[342],{"type":21,"value":343},"Weak copyleft licenses are intended for use with libraries, software components that are intended to be used by other programmers to build larger programs. A weak copyleft license applies copyleft to the library itself, but not to the larger program using the library. As a result, programmers using the library can distribute their part of the program without source code or the right to make modifications, as long as they do distribute the source for the library, including any modifications. Strong copyleft licenses require the entire program to be under the same strong copyleft license.",{"type":15,"tag":44,"props":345,"children":347},{"id":346},"license-politics",[348],{"type":21,"value":349},"License politics",{"type":15,"tag":23,"props":351,"children":352},{},[353],{"type":21,"value":354},"Besides the legal differences, there's a bit of a political difference between Free Software and Open Source, and between copyleft and permissive licenses, that is good to understand. Free Software adherents see everyone as a potential programmer, and believe that your computer isn't truly yours until you fully control what it does, which requires the ability to inspect and modify the software. They envision a world in which computer users collaboratively develop the software they use, sharing their improvements with each other. They therefore prefer copyleft licenses, because those ensure that as many software packages (and therefore, users) as possible are free.",{"type":15,"tag":23,"props":356,"children":357},{},[358],{"type":21,"value":359},"Open Source takes a more pragmatic approach in assuming that most software is made by a small cadre of software developers, often employed by companies, and that there are a potentially large number of end users that have neither the skills nor the inclination to change what their computer does. For these end users, having the source code is not useful, but the developers can often save some effort by working together on software that everyone needs. A permissive Open Source license makes that possible with a minimal amount of legal complexity. It also makes it easy to build commercial, proprietary products on top of the software.",{"type":15,"tag":23,"props":361,"children":362},{},[363],{"type":21,"value":364},"From the perspective of science, there's something to be said for each of these approaches. On the one hand, Free Software and copyleft matches the ideals of Open Science quite well. On the other hand, science and scientific software development is funded by society using public funds in the hopes that something useful will come out of it, and scientific papers are useless to most citizens. They want a product, which will be produced commercially, and that is a good match for the Open Source and permissive licensing model.",{"title":7,"searchDepth":189,"depth":189,"links":366},[367],{"id":18,"depth":189,"text":8,"children":368},[369,370,371,372],{"id":46,"depth":169,"text":49},{"id":87,"depth":169,"text":90},{"id":138,"depth":169,"text":141},{"id":346,"depth":169,"text":349},"markdown","local_fs:modules:licenses:licenses.md","local_fs","modules/licenses/licenses.md","md",[379,413],{"_path":380,"_dir":381,"_draft":6,"_partial":6,"_locale":7,"title":382,"description":7,"body":383,"_type":373,"_id":411,"_source":375,"_file":412,"_extension":377},"/main/about","main","About",{"type":12,"children":384,"toc":407},[385,391,396,402],{"type":15,"tag":16,"props":386,"children":388},{"id":387},"about-the-research-software-support",[389],{"type":21,"value":390},"About the Research Software Support",{"type":15,"tag":23,"props":392,"children":393},{},[394],{"type":21,"value":395},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":397,"children":399},{"id":398},"target-audience",[400],{"type":21,"value":401},"Target audience",{"type":15,"tag":23,"props":403,"children":404},{},[405],{"type":21,"value":406},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":189,"depth":189,"links":408},[409,410],{"id":387,"depth":189,"text":390},{"id":398,"depth":189,"text":401},"local_fs:main:about.md","main/about.md",{"_path":414,"_dir":381,"_draft":6,"_partial":6,"_locale":7,"title":415,"description":7,"body":416,"_type":373,"_id":540,"_source":375,"_file":541,"_extension":377},"/main/contribute","Contribute",{"type":12,"children":417,"toc":535},[418,424,429,435,440],{"type":15,"tag":16,"props":419,"children":421},{"id":420},"contributing-to-the-research-software-support",[422],{"type":21,"value":423},"Contributing to the Research Software Support",{"type":15,"tag":23,"props":425,"children":426},{},[427],{"type":21,"value":428},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":44,"props":430,"children":432},{"id":431},"what-can-i-do",[433],{"type":21,"value":434},"What can I do?",{"type":15,"tag":23,"props":436,"children":437},{},[438],{"type":21,"value":439},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":97,"props":441,"children":442},{},[443,459,500,523],{"type":15,"tag":101,"props":444,"children":445},{},[446,448,457],{"type":21,"value":447},"Contribute to the content discussion in the ",{"type":15,"tag":449,"props":450,"children":454},"a",{"href":451,"rel":452},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[453],"nofollow",[455],{"type":21,"value":456},"chapter issues",{"type":21,"value":458},", e.g. by listing good resources for information.",{"type":15,"tag":101,"props":460,"children":461},{},[462,468,470],{"type":15,"tag":449,"props":463,"children":465},{"href":464},"#elements-of-a-module",[466],{"type":21,"value":467},"Author a lesson",{"type":21,"value":469},", e.g. by:\n",{"type":15,"tag":97,"props":471,"children":472},{},[473,482,491],{"type":15,"tag":101,"props":474,"children":475},{},[476],{"type":15,"tag":449,"props":477,"children":479},{"href":478},"#slides",[480],{"type":21,"value":481},"Creating slides",{"type":15,"tag":101,"props":483,"children":484},{},[485],{"type":15,"tag":449,"props":486,"children":488},{"href":487},"#exercises",[489],{"type":21,"value":490},"Designing an exercise",{"type":15,"tag":101,"props":492,"children":493},{},[494],{"type":15,"tag":449,"props":495,"children":497},{"href":496},"#online-resources",[498],{"type":21,"value":499},"Curating online resources",{"type":15,"tag":101,"props":501,"children":502},{},[503,505,512,514,521],{"type":21,"value":504},"Review a lesson module; both by looking at ",{"type":15,"tag":449,"props":506,"children":509},{"href":507,"rel":508},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[453],[510],{"type":21,"value":511},"open PRs",{"type":21,"value":513},", as well as flagging issues for improvement in the ",{"type":15,"tag":449,"props":515,"children":518},{"href":516,"rel":517},"https://esciencecenter-digital-skills.github.io/research-software-support/",[453],[519],{"type":21,"value":520},"existing content",{"type":21,"value":522},".",{"type":15,"tag":101,"props":524,"children":525},{},[526,533],{"type":15,"tag":449,"props":527,"children":530},{"href":528,"rel":529},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[453],[531],{"type":21,"value":532},"Provide feedback",{"type":21,"value":534}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":189,"depth":189,"links":536},[537],{"id":420,"depth":189,"text":423,"children":538},[539],{"id":431,"depth":169,"text":434},"local_fs:main:contribute.md","main/contribute.md",1715800937734] \ No newline at end of file +[{"data":1,"prerenderedAt":542},["Reactive",2],{"content-query-ttn2rK0WZC":3,"content-query-AT44bg6JPw":378},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":373,"_id":374,"_source":375,"_file":376,"_extension":377},"/modules/licenses/licenses","licenses",false,"","Software licenses","reading",4,{"type":12,"children":13,"toc":365},"root",[14,22,28,33,38,43,50,55,75,80,85,91,96,121,126,131,136,142,280,324,329,334,339,344,350,355,360],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"software-licenses",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":25},"p",{},[26],{"type":21,"value":27},"Software licenses are legal statements that give permission to use, modify and/or distribute software. By copyright law, only the copyright owner(s) can give this permission, so the license must be granted by those owners.",{"type":15,"tag":23,"props":29,"children":30},{},[31],{"type":21,"value":32},"There are different kinds of software licenses, with different underlying business models. Some software producers sell copies or seats, where the user has to pay for each computer that the software is used on or person the software is used by, and where the user does not have permission to modify or distribute the software. In this case, licenses are given to individual users or companies as part of a sales contract.",{"type":15,"tag":23,"props":34,"children":35},{},[36],{"type":21,"value":37},"It is also possible to make a general statement that anyone can use, modify and/or distribute a software package under certain conditions. In this case, there is no contract, and no specific counterparty. Instead, the owners of the copyright give the same permissions to everyone, usually in a document included with the software as it is put on the Internet. Software distributed like this can usually be downloaded without paying, although there may still be significant limitations on what you can do with it.",{"type":15,"tag":23,"props":39,"children":40},{},[41],{"type":21,"value":42},"Some software is distributed with a license that gives very broad permissions to anyone who obtains a copy. Such software is known as Free Software and/or Open Source Software. Before we look at what that is exactly, it helps to understand a bit better what software actually is, and how it's made.",{"type":15,"tag":44,"props":45,"children":47},"h3",{"id":46},"what-is-software",[48],{"type":21,"value":49},"What is software?",{"type":15,"tag":23,"props":51,"children":52},{},[53],{"type":21,"value":54},"To non-programmers, software can appear to be a somewhat magical thing. It is in our computers and phones and it makes them work, or sometimes not work. It's made by specialist people who we call programmers, and who must be very smart to be able to make all this work, or perhaps very dumb given how often software doesn't work. In short, it seems to be mysterious.",{"type":15,"tag":23,"props":56,"children":57},{},[58,60,66,68,73],{"type":21,"value":59},"Of course, programmers are perfectly ordinary people. They make the software that makes our phones and computers work, and sometimes programmers make mistakes, and then the software doesn't work as intended. Computer programs are made by typing text into the computer, just like you do when writing an email or a letter. Computer programs consist of one or more files with instructions for the computer. These files can be modified to change what the software does, they can be combined together into a larger, more complex program, and they can be shared with others and reused. For the computer to be able to run the software, the files need to be translated from the human-readable text form (the ",{"type":15,"tag":61,"props":62,"children":63},"em",{},[64],{"type":21,"value":65},"source code",{"type":21,"value":67},") into a sequence of numbers encoding the same commands (a ",{"type":15,"tag":61,"props":69,"children":70},{},[71],{"type":21,"value":72},"binary",{"type":21,"value":74},"). This is done mechanically by a special program called a compiler or an interpreter.",{"type":15,"tag":23,"props":76,"children":77},{},[78],{"type":21,"value":79},"There are different ways of making software collaboratively. One is to work closely together (even sharing a computer!) on the same source code, which can help reduce mistakes as two see more than one, or it can be useful as a teaching exercise. Looser ways of collaborating include copying someone else's code and then independently modifying it to do something a bit different, and reusing a software component made by someone else in your own program, usually in its original form but possibly with changes as well.",{"type":15,"tag":23,"props":81,"children":82},{},[83],{"type":21,"value":84},"The looser forms of collaboration rely on software being distributed from its maker to its user, who then modifies it or integrates it. This requires permission from the copyright owners because there's distribution and the creation of a derivative work, which means that there needs to be a license. A reliable and easy way to do this is to make all the software Free and Open Source.",{"type":15,"tag":44,"props":86,"children":88},{"id":87},"free-and-open-source-software",[89],{"type":21,"value":90},"Free and Open Source Software",{"type":15,"tag":23,"props":92,"children":93},{},[94],{"type":21,"value":95},"The Free Software Foundation lists four freedoms that users need to be given by the copyright owner(s) for a program to be considered Free Software:",{"type":15,"tag":97,"props":98,"children":99},"ul",{},[100,106,111,116],{"type":15,"tag":101,"props":102,"children":103},"li",{},[104],{"type":21,"value":105},"The freedom to run the program as you wish, for any purpose.",{"type":15,"tag":101,"props":107,"children":108},{},[109],{"type":21,"value":110},"The freedom to study how the program works, and change it, so it does your computing as you wish. Access to the source code is a precondition for this.",{"type":15,"tag":101,"props":112,"children":113},{},[114],{"type":21,"value":115},"The freedom to redistribute copies so you can help others.",{"type":15,"tag":101,"props":117,"children":118},{},[119],{"type":21,"value":120},"The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. Access to the source code a precondition for this.",{"type":15,"tag":23,"props":122,"children":123},{},[124],{"type":21,"value":125},"Note that the word \"free\" here refers to freedom to do things, not to what the software costs. You're allowed to sell copies of Free Software!",{"type":15,"tag":23,"props":127,"children":128},{},[129],{"type":21,"value":130},"Open Source Software has an official definition too, which is quite a bit longer but boils down to the same thing. Because of that, the terms are often combined into Free and Open Source Software, or FOSS, but the term Open Source is also popular. We will use them here interchangeably.",{"type":15,"tag":23,"props":132,"children":133},{},[134],{"type":21,"value":135},"You can make a software package that you own the copyright to Open Source by distributing it (usually on the Internet) under an Open Source license, i.e. one that gives everyone the above freedoms. In practice, that means that the software is distributed in source code form, with a license document stating that the copyright owners give everyone the freedom to do the above things, subject to certain conditions. There exist a small number of standard Open Source licenses that you can use. All of these are open source, but there are some difference as well that are good to know about.",{"type":15,"tag":44,"props":137,"children":139},{"id":138},"license-categories",[140],{"type":21,"value":141},"License categories",{"type":15,"tag":143,"props":144,"children":145},"table",{},[146,148],{"type":21,"value":147},"\n ",{"type":15,"tag":149,"props":150,"children":151},"tbody",{},[152,175,176,194,195,211,212],{"type":15,"tag":153,"props":154,"children":156},"tr",{"align":155},"center",[157,159,166,167,174],{"type":21,"value":158},"\n ",{"type":15,"tag":160,"props":161,"children":163},"th",{"colSpan":162},"3",[164],{"type":21,"value":165},"Free and Open Source",{"type":21,"value":158},{"type":15,"tag":160,"props":168,"children":171},{"rowSpan":169,"vAlign":170},3,"top",[172],{"type":21,"value":173},"Proprietary",{"type":21,"value":147},{"type":21,"value":147},{"type":15,"tag":153,"props":177,"children":178},{"align":155},[179,180,186,187,193],{"type":21,"value":158},{"type":15,"tag":160,"props":181,"children":183},{"colSpan":182},"2",[184],{"type":21,"value":185},"Copyleft",{"type":21,"value":158},{"type":15,"tag":160,"props":188,"children":190},{"rowSpan":189},2,[191],{"type":21,"value":192},"Permissive",{"type":21,"value":147},{"type":21,"value":147},{"type":15,"tag":153,"props":196,"children":197},{"align":155},[198,199,204,205,210],{"type":21,"value":158},{"type":15,"tag":160,"props":200,"children":201},{},[202],{"type":21,"value":203},"Strong",{"type":21,"value":158},{"type":15,"tag":160,"props":206,"children":207},{},[208],{"type":21,"value":209},"Weak",{"type":21,"value":147},{"type":21,"value":147},{"type":15,"tag":153,"props":213,"children":214},{"align":155},[215,217,235,236,252,253,272,274,279],{"type":21,"value":216},"\n ",{"type":15,"tag":218,"props":219,"children":220},"td",{},[221,223,229,231],{"type":21,"value":222},"GPL",{"type":15,"tag":224,"props":225,"children":226},"sup",{},[227],{"type":21,"value":228},"1",{"type":21,"value":230}," AGPL",{"type":15,"tag":224,"props":232,"children":233},{},[234],{"type":21,"value":182},{"type":21,"value":216},{"type":15,"tag":218,"props":237,"children":238},{},[239,241,245,247],{"type":21,"value":240},"LGPL",{"type":15,"tag":224,"props":242,"children":243},{},[244],{"type":21,"value":162},{"type":21,"value":246}," MPL",{"type":15,"tag":224,"props":248,"children":249},{},[250],{"type":21,"value":251},"4",{"type":21,"value":216},{"type":15,"tag":218,"props":254,"children":255},{},[256,258,263,265,270],{"type":21,"value":257},"BSD",{"type":15,"tag":224,"props":259,"children":260},{},[261],{"type":21,"value":262},"5",{"type":21,"value":264}," MIT",{"type":15,"tag":224,"props":266,"children":267},{},[268],{"type":21,"value":269},"6",{"type":21,"value":271}," Apache",{"type":21,"value":273},"\n ",{"type":15,"tag":218,"props":275,"children":276},{},[277],{"type":21,"value":278},"Research Only: No copying, No modification",{"type":21,"value":147},{"type":15,"tag":281,"props":282,"children":285},"div",{"className":283},[284],"footnote",[286,288,292,294,298,300,304,306,310,312,316,318,322],{"type":21,"value":287},"\n ",{"type":15,"tag":224,"props":289,"children":290},{},[291],{"type":21,"value":228},{"type":21,"value":293},"GPL: GNU General Public License ",{"type":15,"tag":224,"props":295,"children":296},{},[297],{"type":21,"value":182},{"type":21,"value":299},"AGPL: Affero General Public License ",{"type":15,"tag":224,"props":301,"children":302},{},[303],{"type":21,"value":162},{"type":21,"value":305},"LGPL: GNU Lesser General Public License ",{"type":15,"tag":224,"props":307,"children":308},{},[309],{"type":21,"value":251},{"type":21,"value":311}," MPL: Mozilla Public License ",{"type":15,"tag":224,"props":313,"children":314},{},[315],{"type":21,"value":262},{"type":21,"value":317}," BSD: Berkeley Software Distribution ",{"type":15,"tag":224,"props":319,"children":320},{},[321],{"type":21,"value":269},{"type":21,"value":323}," MIT: Massachusetts Institute of Technology\n",{"type":15,"tag":23,"props":325,"children":326},{},[327],{"type":21,"value":328},"The table above shows five of the most common FOSS licenses. They're organised in a hierarchystarting with the distinction between Free and Open Source on the one and, and proprietary software on the other. Proprietary software is software that isn't FOSS, which is to say that it has restrictions on use or modification or distribution. It's called proprietary because there is a proprietor or (copyright) owner, who has exclusive control over the software. For Open Source this is not the case: there is a copyright and it's owned by someone, but the license gives everyone else the same permissions they have and so they don't have exclusive control.",{"type":15,"tag":23,"props":330,"children":331},{},[332],{"type":21,"value":333},"Within the category of Open Source licenses, we can distinguish Copyleft licenses and Permissive licenses. Permissive licenses give everyone permission to use, modify and distribute with no further restrictions other than perhaps requiring an acknowledgement that the software was used. In particular, permissive licenses allow the software to be used as a part of non-Open Source software, and for it to be redistributed without the source code, so that it cannot be inspected or modified anymore.",{"type":15,"tag":23,"props":335,"children":336},{},[337],{"type":21,"value":338},"Copyleft licenses try to ensure that the software remains FOSS. You are free to distribute Open Source software that has a copyleft license, but you have to include the complete source code and distribute the modified or extended software under that same license. As a result, everyone who gets a copy of a version of the software and anything it's used in will be free to use, modify and distribute that product. Note that distribution isn't required, all common open source licenses allow making private modifications and not sharing them with anyone.",{"type":15,"tag":23,"props":340,"children":341},{},[342],{"type":21,"value":343},"Weak copyleft licenses are intended for use with libraries, software components that are intended to be used by other programmers to build larger programs. A weak copyleft license applies copyleft to the library itself, but not to the larger program using the library. As a result, programmers using the library can distribute their part of the program without source code or the right to make modifications, as long as they do distribute the source for the library, including any modifications. Strong copyleft licenses require the entire program to be under the same strong copyleft license.",{"type":15,"tag":44,"props":345,"children":347},{"id":346},"license-politics",[348],{"type":21,"value":349},"License politics",{"type":15,"tag":23,"props":351,"children":352},{},[353],{"type":21,"value":354},"Besides the legal differences, there's a bit of a political difference between Free Software and Open Source, and between copyleft and permissive licenses, that is good to understand. Free Software adherents see everyone as a potential programmer, and believe that your computer isn't truly yours until you fully control what it does, which requires the ability to inspect and modify the software. They envision a world in which computer users collaboratively develop the software they use, sharing their improvements with each other. They therefore prefer copyleft licenses, because those ensure that as many software packages (and therefore, users) as possible are free.",{"type":15,"tag":23,"props":356,"children":357},{},[358],{"type":21,"value":359},"Open Source takes a more pragmatic approach in assuming that most software is made by a small cadre of software developers, often employed by companies, and that there are a potentially large number of end users that have neither the skills nor the inclination to change what their computer does. For these end users, having the source code is not useful, but the developers can often save some effort by working together on software that everyone needs. A permissive Open Source license makes that possible with a minimal amount of legal complexity. It also makes it easy to build commercial, proprietary products on top of the software.",{"type":15,"tag":23,"props":361,"children":362},{},[363],{"type":21,"value":364},"From the perspective of science, there's something to be said for each of these approaches. On the one hand, Free Software and copyleft matches the ideals of Open Science quite well. On the other hand, science and scientific software development is funded by society using public funds in the hopes that something useful will come out of it, and scientific papers are useless to most citizens. They want a product, which will be produced commercially, and that is a good match for the Open Source and permissive licensing model.",{"title":7,"searchDepth":189,"depth":189,"links":366},[367],{"id":18,"depth":189,"text":8,"children":368},[369,370,371,372],{"id":46,"depth":169,"text":49},{"id":87,"depth":169,"text":90},{"id":138,"depth":169,"text":141},{"id":346,"depth":169,"text":349},"markdown","local_fs:modules:licenses:licenses.md","local_fs","modules/licenses/licenses.md","md",[379,413],{"_path":380,"_dir":381,"_draft":6,"_partial":6,"_locale":7,"title":382,"description":7,"body":383,"_type":373,"_id":411,"_source":375,"_file":412,"_extension":377},"/main/about","main","About",{"type":12,"children":384,"toc":407},[385,391,396,402],{"type":15,"tag":16,"props":386,"children":388},{"id":387},"about-the-research-software-support",[389],{"type":21,"value":390},"About the Research Software Support",{"type":15,"tag":23,"props":392,"children":393},{},[394],{"type":21,"value":395},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":397,"children":399},{"id":398},"target-audience",[400],{"type":21,"value":401},"Target audience",{"type":15,"tag":23,"props":403,"children":404},{},[405],{"type":21,"value":406},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":189,"depth":189,"links":408},[409,410],{"id":387,"depth":189,"text":390},{"id":398,"depth":189,"text":401},"local_fs:main:about.md","main/about.md",{"_path":414,"_dir":381,"_draft":6,"_partial":6,"_locale":7,"title":415,"description":7,"body":416,"_type":373,"_id":540,"_source":375,"_file":541,"_extension":377},"/main/contribute","Contribute",{"type":12,"children":417,"toc":535},[418,424,429,435,440],{"type":15,"tag":16,"props":419,"children":421},{"id":420},"contributing-to-the-research-software-support",[422],{"type":21,"value":423},"Contributing to the Research Software Support",{"type":15,"tag":23,"props":425,"children":426},{},[427],{"type":21,"value":428},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":44,"props":430,"children":432},{"id":431},"what-can-i-do",[433],{"type":21,"value":434},"What can I do?",{"type":15,"tag":23,"props":436,"children":437},{},[438],{"type":21,"value":439},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":97,"props":441,"children":442},{},[443,459,500,523],{"type":15,"tag":101,"props":444,"children":445},{},[446,448,457],{"type":21,"value":447},"Contribute to the content discussion in the ",{"type":15,"tag":449,"props":450,"children":454},"a",{"href":451,"rel":452},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[453],"nofollow",[455],{"type":21,"value":456},"chapter issues",{"type":21,"value":458},", e.g. by listing good resources for information.",{"type":15,"tag":101,"props":460,"children":461},{},[462,468,470],{"type":15,"tag":449,"props":463,"children":465},{"href":464},"#elements-of-a-module",[466],{"type":21,"value":467},"Author a lesson",{"type":21,"value":469},", e.g. by:\n",{"type":15,"tag":97,"props":471,"children":472},{},[473,482,491],{"type":15,"tag":101,"props":474,"children":475},{},[476],{"type":15,"tag":449,"props":477,"children":479},{"href":478},"#slides",[480],{"type":21,"value":481},"Creating slides",{"type":15,"tag":101,"props":483,"children":484},{},[485],{"type":15,"tag":449,"props":486,"children":488},{"href":487},"#exercises",[489],{"type":21,"value":490},"Designing an exercise",{"type":15,"tag":101,"props":492,"children":493},{},[494],{"type":15,"tag":449,"props":495,"children":497},{"href":496},"#online-resources",[498],{"type":21,"value":499},"Curating online resources",{"type":15,"tag":101,"props":501,"children":502},{},[503,505,512,514,521],{"type":21,"value":504},"Review a lesson module; both by looking at ",{"type":15,"tag":449,"props":506,"children":509},{"href":507,"rel":508},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[453],[510],{"type":21,"value":511},"open PRs",{"type":21,"value":513},", as well as flagging issues for improvement in the ",{"type":15,"tag":449,"props":515,"children":518},{"href":516,"rel":517},"https://esciencecenter-digital-skills.github.io/research-software-support/",[453],[519],{"type":21,"value":520},"existing content",{"type":21,"value":522},".",{"type":15,"tag":101,"props":524,"children":525},{},[526,533],{"type":15,"tag":449,"props":527,"children":530},{"href":528,"rel":529},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[453],[531],{"type":21,"value":532},"Provide feedback",{"type":21,"value":534}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":189,"depth":189,"links":536},[537],{"id":420,"depth":189,"text":423,"children":538},[539],{"id":431,"depth":169,"text":434},"local_fs:main:contribute.md","main/contribute.md",1715801015043] \ No newline at end of file diff --git a/modules/licenses/licenses/index.html b/modules/licenses/licenses/index.html index a377cbef..bfb761d7 100644 --- a/modules/licenses/licenses/index.html +++ b/modules/licenses/licenses/index.html @@ -2,7 +2,7 @@ Software licenses - + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + -

    Module: licenses

    Software licenses

    Software licenses are legal statements that give permission to use, modify and/or distribute software. By copyright law, only the copyright owner(s) can give this permission, so the license must be granted by those owners.

    There are different kinds of software licenses, with different underlying business models. Some software producers sell copies or seats, where the user has to pay for each computer that the software is used on or person the software is used by, and where the user does not have permission to modify or distribute the software. In this case, licenses are given to individual users or companies as part of a sales contract.

    It is also possible to make a general statement that anyone can use, modify and/or distribute a software package under certain conditions. In this case, there is no contract, and no specific counterparty. Instead, the owners of the copyright give the same permissions to everyone, usually in a document included with the software as it is put on the Internet. Software distributed like this can usually be downloaded without paying, although there may still be significant limitations on what you can do with it.

    Some software is distributed with a license that gives very broad permissions to anyone who obtains a copy. Such software is known as Free Software and/or Open Source Software. Before we look at what that is exactly, it helps to understand a bit better what software actually is, and how it's made.

    What is software?

    To non-programmers, software can appear to be a somewhat magical thing. It is in our computers and phones and it makes them work, or sometimes not work. It's made by specialist people who we call programmers, and who must be very smart to be able to make all this work, or perhaps very dumb given how often software doesn't work. In short, it seems to be mysterious.

    Of course, programmers are perfectly ordinary people. They make the software that makes our phones and computers work, and sometimes programmers make mistakes, and then the software doesn't work as intended. Computer programs are made by typing text into the computer, just like you do when writing an email or a letter. Computer programs consist of one or more files with instructions for the computer. These files can be modified to change what the software does, they can be combined together into a larger, more complex program, and they can be shared with others and reused. For the computer to be able to run the software, the files need to be translated from the human-readable text form (the source code) into a sequence of numbers encoding the same commands (a binary). This is done mechanically by a special program called a compiler or an interpreter.

    There are different ways of making software collaboratively. One is to work closely together (even sharing a computer!) on the same source code, which can help reduce mistakes as two see more than one, or it can be useful as a teaching exercise. Looser ways of collaborating include copying someone else's code and then independently modifying it to do something a bit different, and reusing a software component made by someone else in your own program, usually in its original form but possibly with changes as well.

    The looser forms of collaboration rely on software being distributed from its maker to its user, who then modifies it or integrates it. This requires permission from the copyright owners because there's distribution and the creation of a derivative work, which means that there needs to be a license. A reliable and easy way to do this is to make all the software Free and Open Source.

    Free and Open Source Software

    The Free Software Foundation lists four freedoms that users need to be given by the copyright owner(s) for a program to be considered Free Software:

    • The freedom to run the program as you wish, for any purpose.
    • The freedom to study how the program works, and change it, so it does your computing as you wish. Access to the source code is a precondition for this.
    • The freedom to redistribute copies so you can help others.
    • The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. Access to the source code a precondition for this.

    Note that the word "free" here refers to freedom to do things, not to what the software costs. You're allowed to sell copies of Free Software!

    Open Source Software has an official definition too, which is quite a bit longer but boils down to the same thing. Because of that, the terms are often combined into Free and Open Source Software, or FOSS, but the term Open Source is also popular. We will use them here interchangeably.

    You can make a software package that you own the copyright to Open Source by distributing it (usually on the Internet) under an Open Source license, i.e. one that gives everyone the above freedoms. In practice, that means that the software is distributed in source code form, with a license document stating that the copyright owners give everyone the freedom to do the above things, subject to certain conditions. There exist a small number of standard Open Source licenses that you can use. All of these are open source, but there are some difference as well that are good to know about.

    License categories

    +

    Module: licenses

    Software licenses

    Software licenses are legal statements that give permission to use, modify and/or distribute software. By copyright law, only the copyright owner(s) can give this permission, so the license must be granted by those owners.

    There are different kinds of software licenses, with different underlying business models. Some software producers sell copies or seats, where the user has to pay for each computer that the software is used on or person the software is used by, and where the user does not have permission to modify or distribute the software. In this case, licenses are given to individual users or companies as part of a sales contract.

    It is also possible to make a general statement that anyone can use, modify and/or distribute a software package under certain conditions. In this case, there is no contract, and no specific counterparty. Instead, the owners of the copyright give the same permissions to everyone, usually in a document included with the software as it is put on the Internet. Software distributed like this can usually be downloaded without paying, although there may still be significant limitations on what you can do with it.

    Some software is distributed with a license that gives very broad permissions to anyone who obtains a copy. Such software is known as Free Software and/or Open Source Software. Before we look at what that is exactly, it helps to understand a bit better what software actually is, and how it's made.

    What is software?

    To non-programmers, software can appear to be a somewhat magical thing. It is in our computers and phones and it makes them work, or sometimes not work. It's made by specialist people who we call programmers, and who must be very smart to be able to make all this work, or perhaps very dumb given how often software doesn't work. In short, it seems to be mysterious.

    Of course, programmers are perfectly ordinary people. They make the software that makes our phones and computers work, and sometimes programmers make mistakes, and then the software doesn't work as intended. Computer programs are made by typing text into the computer, just like you do when writing an email or a letter. Computer programs consist of one or more files with instructions for the computer. These files can be modified to change what the software does, they can be combined together into a larger, more complex program, and they can be shared with others and reused. For the computer to be able to run the software, the files need to be translated from the human-readable text form (the source code) into a sequence of numbers encoding the same commands (a binary). This is done mechanically by a special program called a compiler or an interpreter.

    There are different ways of making software collaboratively. One is to work closely together (even sharing a computer!) on the same source code, which can help reduce mistakes as two see more than one, or it can be useful as a teaching exercise. Looser ways of collaborating include copying someone else's code and then independently modifying it to do something a bit different, and reusing a software component made by someone else in your own program, usually in its original form but possibly with changes as well.

    The looser forms of collaboration rely on software being distributed from its maker to its user, who then modifies it or integrates it. This requires permission from the copyright owners because there's distribution and the creation of a derivative work, which means that there needs to be a license. A reliable and easy way to do this is to make all the software Free and Open Source.

    Free and Open Source Software

    The Free Software Foundation lists four freedoms that users need to be given by the copyright owner(s) for a program to be considered Free Software:

    • The freedom to run the program as you wish, for any purpose.
    • The freedom to study how the program works, and change it, so it does your computing as you wish. Access to the source code is a precondition for this.
    • The freedom to redistribute copies so you can help others.
    • The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. Access to the source code a precondition for this.

    Note that the word "free" here refers to freedom to do things, not to what the software costs. You're allowed to sell copies of Free Software!

    Open Source Software has an official definition too, which is quite a bit longer but boils down to the same thing. Because of that, the terms are often combined into Free and Open Source Software, or FOSS, but the term Open Source is also popular. We will use them here interchangeably.

    You can make a software package that you own the copyright to Open Source by distributing it (usually on the Internet) under an Open Source license, i.e. one that gives everyone the above freedoms. In practice, that means that the software is distributed in source code form, with a license document stating that the copyright owners give everyone the freedom to do the above things, subject to certain conditions. There exist a small number of standard Open Source licenses that you can use. All of these are open source, but there are some difference as well that are good to know about.

    License categories

    @@ -59,5 +59,5 @@
    Free and Open Source ProprietaryResearch Only: No copying, No modification
    1GPL: GNU General Public License 2AGPL: Affero General Public License 3LGPL: GNU Lesser General Public License 4 MPL: Mozilla Public License 5 BSD: Berkeley Software Distribution 6 MIT: Massachusetts Institute of Technology -

    The table above shows five of the most common FOSS licenses. They're organised in a hierarchystarting with the distinction between Free and Open Source on the one and, and proprietary software on the other. Proprietary software is software that isn't FOSS, which is to say that it has restrictions on use or modification or distribution. It's called proprietary because there is a proprietor or (copyright) owner, who has exclusive control over the software. For Open Source this is not the case: there is a copyright and it's owned by someone, but the license gives everyone else the same permissions they have and so they don't have exclusive control.

    Within the category of Open Source licenses, we can distinguish Copyleft licenses and Permissive licenses. Permissive licenses give everyone permission to use, modify and distribute with no further restrictions other than perhaps requiring an acknowledgement that the software was used. In particular, permissive licenses allow the software to be used as a part of non-Open Source software, and for it to be redistributed without the source code, so that it cannot be inspected or modified anymore.

    Copyleft licenses try to ensure that the software remains FOSS. You are free to distribute Open Source software that has a copyleft license, but you have to include the complete source code and distribute the modified or extended software under that same license. As a result, everyone who gets a copy of a version of the software and anything it's used in will be free to use, modify and distribute that product. Note that distribution isn't required, all common open source licenses allow making private modifications and not sharing them with anyone.

    Weak copyleft licenses are intended for use with libraries, software components that are intended to be used by other programmers to build larger programs. A weak copyleft license applies copyleft to the library itself, but not to the larger program using the library. As a result, programmers using the library can distribute their part of the program without source code or the right to make modifications, as long as they do distribute the source for the library, including any modifications. Strong copyleft licenses require the entire program to be under the same strong copyleft license.

    License politics

    Besides the legal differences, there's a bit of a political difference between Free Software and Open Source, and between copyleft and permissive licenses, that is good to understand. Free Software adherents see everyone as a potential programmer, and believe that your computer isn't truly yours until you fully control what it does, which requires the ability to inspect and modify the software. They envision a world in which computer users collaboratively develop the software they use, sharing their improvements with each other. They therefore prefer copyleft licenses, because those ensure that as many software packages (and therefore, users) as possible are free.

    Open Source takes a more pragmatic approach in assuming that most software is made by a small cadre of software developers, often employed by companies, and that there are a potentially large number of end users that have neither the skills nor the inclination to change what their computer does. For these end users, having the source code is not useful, but the developers can often save some effort by working together on software that everyone needs. A permissive Open Source license makes that possible with a minimal amount of legal complexity. It also makes it easy to build commercial, proprietary products on top of the software.

    From the perspective of science, there's something to be said for each of these approaches. On the one hand, Free Software and copyleft matches the ideals of Open Science quite well. On the other hand, science and scientific software development is funded by society using public funds in the hopes that something useful will come out of it, and scientific papers are useless to most citizens. They want a product, which will be produced commercially, and that is a good match for the Open Source and permissive licensing model.

    - \ No newline at end of file +

    The table above shows five of the most common FOSS licenses. They're organised in a hierarchystarting with the distinction between Free and Open Source on the one and, and proprietary software on the other. Proprietary software is software that isn't FOSS, which is to say that it has restrictions on use or modification or distribution. It's called proprietary because there is a proprietor or (copyright) owner, who has exclusive control over the software. For Open Source this is not the case: there is a copyright and it's owned by someone, but the license gives everyone else the same permissions they have and so they don't have exclusive control.

    Within the category of Open Source licenses, we can distinguish Copyleft licenses and Permissive licenses. Permissive licenses give everyone permission to use, modify and distribute with no further restrictions other than perhaps requiring an acknowledgement that the software was used. In particular, permissive licenses allow the software to be used as a part of non-Open Source software, and for it to be redistributed without the source code, so that it cannot be inspected or modified anymore.

    Copyleft licenses try to ensure that the software remains FOSS. You are free to distribute Open Source software that has a copyleft license, but you have to include the complete source code and distribute the modified or extended software under that same license. As a result, everyone who gets a copy of a version of the software and anything it's used in will be free to use, modify and distribute that product. Note that distribution isn't required, all common open source licenses allow making private modifications and not sharing them with anyone.

    Weak copyleft licenses are intended for use with libraries, software components that are intended to be used by other programmers to build larger programs. A weak copyleft license applies copyleft to the library itself, but not to the larger program using the library. As a result, programmers using the library can distribute their part of the program without source code or the right to make modifications, as long as they do distribute the source for the library, including any modifications. Strong copyleft licenses require the entire program to be under the same strong copyleft license.

    License politics

    Besides the legal differences, there's a bit of a political difference between Free Software and Open Source, and between copyleft and permissive licenses, that is good to understand. Free Software adherents see everyone as a potential programmer, and believe that your computer isn't truly yours until you fully control what it does, which requires the ability to inspect and modify the software. They envision a world in which computer users collaboratively develop the software they use, sharing their improvements with each other. They therefore prefer copyleft licenses, because those ensure that as many software packages (and therefore, users) as possible are free.

    Open Source takes a more pragmatic approach in assuming that most software is made by a small cadre of software developers, often employed by companies, and that there are a potentially large number of end users that have neither the skills nor the inclination to change what their computer does. For these end users, having the source code is not useful, but the developers can often save some effort by working together on software that everyone needs. A permissive Open Source license makes that possible with a minimal amount of legal complexity. It also makes it easy to build commercial, proprietary products on top of the software.

    From the perspective of science, there's something to be said for each of these approaches. On the one hand, Free Software and copyleft matches the ideals of Open Science quite well. On the other hand, science and scientific software development is funded by society using public funds in the hopes that something useful will come out of it, and scientific papers are useless to most citizens. They want a product, which will be produced commercially, and that is a good match for the Open Source and permissive licensing model.

    + \ No newline at end of file diff --git a/modules/licenses/slides/_payload.json b/modules/licenses/slides/_payload.json index cdc1e1b2..25630d3a 100644 --- a/modules/licenses/slides/_payload.json +++ b/modules/licenses/slides/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":466},["Reactive",2],{"content-query-EwSIIzumT3":3,"content-query-AT44bg6JPw":301},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":296,"_id":297,"_source":298,"_file":299,"_extension":300},"/modules/licenses/slides","licenses",false,"","Software Licensing","slides",1,{"type":12,"children":13,"toc":287},"root",[14,19,26,29,35,55,61,66,71,76,79,85,103,107,112,117,120,126,144,148,153,158,161,167,190,194,199,222,225,231,244,248,253,258,261,273,282],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h2",{"id":22},"software-licensing",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":20,"props":30,"children":32},{"id":31},"about-copyright",[33],{"type":25,"value":34},"About copyright",{"type":15,"tag":36,"props":37,"children":38},"ul",{},[39,45,50],{"type":15,"tag":40,"props":41,"children":42},"li",{},[43],{"type":25,"value":44},"Berne convention",{"type":15,"tag":40,"props":46,"children":47},{},[48],{"type":25,"value":49},"Owned by author or employer?",{"type":15,"tag":40,"props":51,"children":52},{},[53],{"type":25,"value":54},"Can be licensed",{"type":15,"tag":56,"props":57,"children":58},"p",{},[59],{"type":25,"value":60},"Note:",{"type":15,"tag":56,"props":62,"children":63},{},[64],{"type":25,"value":65},"By the Berne convention, software is automatically protected by copyright when it is made. Depending on the country, protection lasts 50 years or more. The owner of the copyright is the only one who can copy, publish, and modify the software.",{"type":15,"tag":56,"props":67,"children":68},{},[69],{"type":25,"value":70},"If you make software as part of a job for an employer, then your employer owns the copyright. Otherwise, you are the owner (unless there's a contract somewhere that says otherwise).",{"type":15,"tag":56,"props":72,"children":73},{},[74],{"type":25,"value":75},"The owner of the copyright on a work can give permission to others to do things they would otherwise not be allowed to do, like copying, publishing and modifying the work. A document that describes what they can do is called a copyright license. These licenses can be given to a specific party, usually as part of a contract, or they can be offered to the general public.",{"type":15,"tag":16,"props":77,"children":78},{},[],{"type":15,"tag":20,"props":80,"children":82},{"id":81},"using-others-software",[83],{"type":25,"value":84},"Using others' software",{"type":15,"tag":36,"props":86,"children":87},{},[88,93,98],{"type":15,"tag":40,"props":89,"children":90},{},[91],{"type":25,"value":92},"You need a license",{"type":15,"tag":40,"props":94,"children":95},{},[96],{"type":25,"value":97},"Open Source makes that easy",{"type":15,"tag":40,"props":99,"children":100},{},[101],{"type":25,"value":102},"Different Open Source licenses available",{"type":15,"tag":56,"props":104,"children":105},{},[106],{"type":25,"value":60},{"type":15,"tag":56,"props":108,"children":109},{},[110],{"type":25,"value":111},"To use software that was made by someone else, you need to (at least) get a copy of it, and that requires permission from the copyright owner, i.e. a license. If the software has an Open Source license, then you have permission to get a copy and run it for any purpose, including commercially, and/or use it in your own software. There will be some conditions attached, which depend on the particular license used.",{"type":15,"tag":56,"props":113,"children":114},{},[115],{"type":25,"value":116},"There are a handful of Open Source licenses available, with different terms. Those differences are especially important when you use a package or library in your own software. There are websites available that explain all the standard Open Source licenses in ordinary language, so that you can easily decide whether you can use a certain software package. You don't need to be (or have) a lawyer to use Open Source software.",{"type":15,"tag":16,"props":118,"children":119},{},[],{"type":15,"tag":20,"props":121,"children":123},{"id":122},"who-owns-a-work",[124],{"type":25,"value":125},"Who owns a work?",{"type":15,"tag":36,"props":127,"children":128},{},[129,134,139],{"type":15,"tag":40,"props":130,"children":131},{},[132],{"type":25,"value":133},"Work for hire",{"type":15,"tag":40,"props":135,"children":136},{},[137],{"type":25,"value":138},"Consortium agreements",{"type":15,"tag":40,"props":140,"children":141},{},[142],{"type":25,"value":143},"University policy",{"type":15,"tag":56,"props":145,"children":146},{},[147],{"type":25,"value":60},{"type":15,"tag":56,"props":149,"children":150},{},[151],{"type":25,"value":152},"In most countries, including The Netherlands, any work you do as part of your tasks as an employee of an organisation belongs to your employer, not to you. After all, they're paying you to do the work. This means that the copyright on any software written by a university employee is owned by to the university. And that means that anyone not working at that university (which may include said employee in the future!) needs permission from the owner to work with the code.",{"type":15,"tag":56,"props":154,"children":155},{},[156],{"type":25,"value":157},"Some limited permission is often granted in the Consortium Agreements typically governing scientific project(s), but these are only valid within the project. To make the software available outside of the project it was developed in, broader permissions must be given. Some universities have a policy on how and under which conditions this can be done; details can typically be had from the library or legal department.",{"type":15,"tag":16,"props":159,"children":160},{},[],{"type":15,"tag":20,"props":162,"children":164},{"id":163},"why-license-your-software",[165],{"type":25,"value":166},"Why license your software?",{"type":15,"tag":36,"props":168,"children":169},{},[170,175,180,185],{"type":15,"tag":40,"props":171,"children":172},{},[173],{"type":25,"value":174},"Public funding",{"type":15,"tag":40,"props":176,"children":177},{},[178],{"type":25,"value":179},"Academic freedom of employees",{"type":15,"tag":40,"props":181,"children":182},{},[183],{"type":25,"value":184},"Save work by collaborating",{"type":15,"tag":40,"props":186,"children":187},{},[188],{"type":25,"value":189},"Increase impact",{"type":15,"tag":56,"props":191,"children":192},{},[193],{"type":25,"value":60},{"type":15,"tag":56,"props":195,"children":196},{},[197],{"type":25,"value":198},"If a scientist working at a university, in the course of doing their job, creates software, then that software is owned by the university. By default then, it can only be used by that university and its employees. This is an undesirable situation for several reasons.",{"type":15,"tag":36,"props":200,"children":201},{},[202,207,212,217],{"type":15,"tag":40,"props":203,"children":204},{},[205],{"type":25,"value":206},"First, the software was most likely funded with public money, and should therefore be available to the public, just like papers are published Open Access.",{"type":15,"tag":40,"props":208,"children":209},{},[210],{"type":25,"value":211},"Second, researchers frequently change jobs, moving from university to university. Without permission from their previous employers, they would have to start rebuilding their software from scratch every time they move to a new university, which would be very inefficient.",{"type":15,"tag":40,"props":213,"children":214},{},[215],{"type":25,"value":216},"Third, many of the most pressing problems that scientist work on involve complex, multifaceted systems that can only be properly studied in collaboration. Where software is involved, which is to say almost everywhere in academic research, researchers need to be able to exchange software and collaborate on its development, including across projects.",{"type":15,"tag":40,"props":218,"children":219},{},[220],{"type":25,"value":221},"Finally, doing so will allow them to achieve better results, and continue to build on those results, thus achieving higher impact.",{"type":15,"tag":16,"props":223,"children":224},{},[],{"type":15,"tag":20,"props":226,"children":228},{"id":227},"open-sourcing-scientific-software",[229],{"type":25,"value":230},"Open Sourcing scientific software",{"type":15,"tag":36,"props":232,"children":233},{},[234,239],{"type":15,"tag":40,"props":235,"children":236},{},[237],{"type":25,"value":238},"Free, Open Source Software",{"type":15,"tag":40,"props":240,"children":241},{},[242],{"type":25,"value":243},"Technology Transfer",{"type":15,"tag":56,"props":245,"children":246},{},[247],{"type":25,"value":60},{"type":15,"tag":56,"props":249,"children":250},{},[251],{"type":25,"value":252},"Free, Open Source Software (or FOSS, as it's sometimes abbreviated) is software that you are free to 0) use for any purpose, 1) modify to suit your needs, 2) share with others, and 3) share with changes you made, so you can work on it together. That's actually the Free Software definition, but Open Source really just says the same thing in more words, which is why they're usually mentioned together. These are exactly the permissions scientists need to be able to do science together using the software.",{"type":15,"tag":56,"props":254,"children":255},{},[256],{"type":25,"value":257},"Open Source licenses also allow commercial use, which means that they are a very effective means of technology transfer. Since the license terms are the same for everyone, there are no issues with state aid regulations, nor does a market-rate value for the software need to be determined. The standard Open Source licenses are now well understood and trusted by commercial parties, removing the need for complex negotiations on the exact terms. Of course, no payment will be received either. Given that commercial sale of academic software is very rare, it seems that the benefits obtained from the academic collaboration enabled by Open Source far outweigh the potential income loss due to not commercially licensing the software. And note that it is still perfectly possible to launch a spin-off or start-up that offers commercial services related to the software, including support and continued development.",{"type":15,"tag":16,"props":259,"children":260},{},[],{"type":15,"tag":56,"props":262,"children":263},{},[264],{"type":15,"tag":265,"props":266,"children":270},"a",{"href":267,"rel":268},"http://www.esciencecenter.nl",[269],"nofollow",[271],{"type":25,"value":272},"www.esciencecenter.nl",{"type":15,"tag":56,"props":274,"children":275},{},[276],{"type":15,"tag":265,"props":277,"children":279},{"href":278},"mailto:info@esciencecenter.nl",[280],{"type":25,"value":281},"info@esciencecenter.nl",{"type":15,"tag":56,"props":283,"children":284},{},[285],{"type":25,"value":286},"020 - 460 47 70",{"title":7,"searchDepth":288,"depth":288,"links":289},2,[290,291,292,293,294,295],{"id":22,"depth":288,"text":8},{"id":31,"depth":288,"text":34},{"id":81,"depth":288,"text":84},{"id":122,"depth":288,"text":125},{"id":163,"depth":288,"text":166},{"id":227,"depth":288,"text":230},"markdown","local_fs:modules:licenses:slides.pmd","local_fs","modules/licenses/slides.pmd","pmd",[302,337],{"_path":303,"_dir":304,"_draft":6,"_partial":6,"_locale":7,"title":305,"description":7,"body":306,"_type":296,"_id":334,"_source":298,"_file":335,"_extension":336},"/main/about","main","About",{"type":12,"children":307,"toc":330},[308,314,319,325],{"type":15,"tag":20,"props":309,"children":311},{"id":310},"about-the-research-software-support",[312],{"type":25,"value":313},"About the Research Software Support",{"type":15,"tag":56,"props":315,"children":316},{},[317],{"type":25,"value":318},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":20,"props":320,"children":322},{"id":321},"target-audience",[323],{"type":25,"value":324},"Target audience",{"type":15,"tag":56,"props":326,"children":327},{},[328],{"type":25,"value":329},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":288,"depth":288,"links":331},[332,333],{"id":310,"depth":288,"text":313},{"id":321,"depth":288,"text":324},"local_fs:main:about.md","main/about.md","md",{"_path":338,"_dir":304,"_draft":6,"_partial":6,"_locale":7,"title":339,"description":7,"body":340,"_type":296,"_id":464,"_source":298,"_file":465,"_extension":336},"/main/contribute","Contribute",{"type":12,"children":341,"toc":458},[342,348,353,360,365],{"type":15,"tag":20,"props":343,"children":345},{"id":344},"contributing-to-the-research-software-support",[346],{"type":25,"value":347},"Contributing to the Research Software Support",{"type":15,"tag":56,"props":349,"children":350},{},[351],{"type":25,"value":352},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":354,"props":355,"children":357},"h3",{"id":356},"what-can-i-do",[358],{"type":25,"value":359},"What can I do?",{"type":15,"tag":56,"props":361,"children":362},{},[363],{"type":25,"value":364},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":36,"props":366,"children":367},{},[368,382,423,446],{"type":15,"tag":40,"props":369,"children":370},{},[371,373,380],{"type":25,"value":372},"Contribute to the content discussion in the ",{"type":15,"tag":265,"props":374,"children":377},{"href":375,"rel":376},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[269],[378],{"type":25,"value":379},"chapter issues",{"type":25,"value":381},", e.g. by listing good resources for information.",{"type":15,"tag":40,"props":383,"children":384},{},[385,391,393],{"type":15,"tag":265,"props":386,"children":388},{"href":387},"#elements-of-a-module",[389],{"type":25,"value":390},"Author a lesson",{"type":25,"value":392},", e.g. by:\n",{"type":15,"tag":36,"props":394,"children":395},{},[396,405,414],{"type":15,"tag":40,"props":397,"children":398},{},[399],{"type":15,"tag":265,"props":400,"children":402},{"href":401},"#slides",[403],{"type":25,"value":404},"Creating slides",{"type":15,"tag":40,"props":406,"children":407},{},[408],{"type":15,"tag":265,"props":409,"children":411},{"href":410},"#exercises",[412],{"type":25,"value":413},"Designing an exercise",{"type":15,"tag":40,"props":415,"children":416},{},[417],{"type":15,"tag":265,"props":418,"children":420},{"href":419},"#online-resources",[421],{"type":25,"value":422},"Curating online resources",{"type":15,"tag":40,"props":424,"children":425},{},[426,428,435,437,444],{"type":25,"value":427},"Review a lesson module; both by looking at ",{"type":15,"tag":265,"props":429,"children":432},{"href":430,"rel":431},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[269],[433],{"type":25,"value":434},"open PRs",{"type":25,"value":436},", as well as flagging issues for improvement in the ",{"type":15,"tag":265,"props":438,"children":441},{"href":439,"rel":440},"https://esciencecenter-digital-skills.github.io/research-software-support/",[269],[442],{"type":25,"value":443},"existing content",{"type":25,"value":445},".",{"type":15,"tag":40,"props":447,"children":448},{},[449,456],{"type":15,"tag":265,"props":450,"children":453},{"href":451,"rel":452},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[269],[454],{"type":25,"value":455},"Provide feedback",{"type":25,"value":457}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":288,"depth":288,"links":459},[460],{"id":344,"depth":288,"text":347,"children":461},[462],{"id":356,"depth":463,"text":359},3,"local_fs:main:contribute.md","main/contribute.md",1715800937661] \ No newline at end of file +[{"data":1,"prerenderedAt":466},["Reactive",2],{"content-query-EwSIIzumT3":3,"content-query-AT44bg6JPw":301},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":296,"_id":297,"_source":298,"_file":299,"_extension":300},"/modules/licenses/slides","licenses",false,"","Software Licensing","slides",1,{"type":12,"children":13,"toc":287},"root",[14,19,26,29,35,55,61,66,71,76,79,85,103,107,112,117,120,126,144,148,153,158,161,167,190,194,199,222,225,231,244,248,253,258,261,273,282],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h2",{"id":22},"software-licensing",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":20,"props":30,"children":32},{"id":31},"about-copyright",[33],{"type":25,"value":34},"About copyright",{"type":15,"tag":36,"props":37,"children":38},"ul",{},[39,45,50],{"type":15,"tag":40,"props":41,"children":42},"li",{},[43],{"type":25,"value":44},"Berne convention",{"type":15,"tag":40,"props":46,"children":47},{},[48],{"type":25,"value":49},"Owned by author or employer?",{"type":15,"tag":40,"props":51,"children":52},{},[53],{"type":25,"value":54},"Can be licensed",{"type":15,"tag":56,"props":57,"children":58},"p",{},[59],{"type":25,"value":60},"Note:",{"type":15,"tag":56,"props":62,"children":63},{},[64],{"type":25,"value":65},"By the Berne convention, software is automatically protected by copyright when it is made. Depending on the country, protection lasts 50 years or more. The owner of the copyright is the only one who can copy, publish, and modify the software.",{"type":15,"tag":56,"props":67,"children":68},{},[69],{"type":25,"value":70},"If you make software as part of a job for an employer, then your employer owns the copyright. Otherwise, you are the owner (unless there's a contract somewhere that says otherwise).",{"type":15,"tag":56,"props":72,"children":73},{},[74],{"type":25,"value":75},"The owner of the copyright on a work can give permission to others to do things they would otherwise not be allowed to do, like copying, publishing and modifying the work. A document that describes what they can do is called a copyright license. These licenses can be given to a specific party, usually as part of a contract, or they can be offered to the general public.",{"type":15,"tag":16,"props":77,"children":78},{},[],{"type":15,"tag":20,"props":80,"children":82},{"id":81},"using-others-software",[83],{"type":25,"value":84},"Using others' software",{"type":15,"tag":36,"props":86,"children":87},{},[88,93,98],{"type":15,"tag":40,"props":89,"children":90},{},[91],{"type":25,"value":92},"You need a license",{"type":15,"tag":40,"props":94,"children":95},{},[96],{"type":25,"value":97},"Open Source makes that easy",{"type":15,"tag":40,"props":99,"children":100},{},[101],{"type":25,"value":102},"Different Open Source licenses available",{"type":15,"tag":56,"props":104,"children":105},{},[106],{"type":25,"value":60},{"type":15,"tag":56,"props":108,"children":109},{},[110],{"type":25,"value":111},"To use software that was made by someone else, you need to (at least) get a copy of it, and that requires permission from the copyright owner, i.e. a license. If the software has an Open Source license, then you have permission to get a copy and run it for any purpose, including commercially, and/or use it in your own software. There will be some conditions attached, which depend on the particular license used.",{"type":15,"tag":56,"props":113,"children":114},{},[115],{"type":25,"value":116},"There are a handful of Open Source licenses available, with different terms. Those differences are especially important when you use a package or library in your own software. There are websites available that explain all the standard Open Source licenses in ordinary language, so that you can easily decide whether you can use a certain software package. You don't need to be (or have) a lawyer to use Open Source software.",{"type":15,"tag":16,"props":118,"children":119},{},[],{"type":15,"tag":20,"props":121,"children":123},{"id":122},"who-owns-a-work",[124],{"type":25,"value":125},"Who owns a work?",{"type":15,"tag":36,"props":127,"children":128},{},[129,134,139],{"type":15,"tag":40,"props":130,"children":131},{},[132],{"type":25,"value":133},"Work for hire",{"type":15,"tag":40,"props":135,"children":136},{},[137],{"type":25,"value":138},"Consortium agreements",{"type":15,"tag":40,"props":140,"children":141},{},[142],{"type":25,"value":143},"University policy",{"type":15,"tag":56,"props":145,"children":146},{},[147],{"type":25,"value":60},{"type":15,"tag":56,"props":149,"children":150},{},[151],{"type":25,"value":152},"In most countries, including The Netherlands, any work you do as part of your tasks as an employee of an organisation belongs to your employer, not to you. After all, they're paying you to do the work. This means that the copyright on any software written by a university employee is owned by to the university. And that means that anyone not working at that university (which may include said employee in the future!) needs permission from the owner to work with the code.",{"type":15,"tag":56,"props":154,"children":155},{},[156],{"type":25,"value":157},"Some limited permission is often granted in the Consortium Agreements typically governing scientific project(s), but these are only valid within the project. To make the software available outside of the project it was developed in, broader permissions must be given. Some universities have a policy on how and under which conditions this can be done; details can typically be had from the library or legal department.",{"type":15,"tag":16,"props":159,"children":160},{},[],{"type":15,"tag":20,"props":162,"children":164},{"id":163},"why-license-your-software",[165],{"type":25,"value":166},"Why license your software?",{"type":15,"tag":36,"props":168,"children":169},{},[170,175,180,185],{"type":15,"tag":40,"props":171,"children":172},{},[173],{"type":25,"value":174},"Public funding",{"type":15,"tag":40,"props":176,"children":177},{},[178],{"type":25,"value":179},"Academic freedom of employees",{"type":15,"tag":40,"props":181,"children":182},{},[183],{"type":25,"value":184},"Save work by collaborating",{"type":15,"tag":40,"props":186,"children":187},{},[188],{"type":25,"value":189},"Increase impact",{"type":15,"tag":56,"props":191,"children":192},{},[193],{"type":25,"value":60},{"type":15,"tag":56,"props":195,"children":196},{},[197],{"type":25,"value":198},"If a scientist working at a university, in the course of doing their job, creates software, then that software is owned by the university. By default then, it can only be used by that university and its employees. This is an undesirable situation for several reasons.",{"type":15,"tag":36,"props":200,"children":201},{},[202,207,212,217],{"type":15,"tag":40,"props":203,"children":204},{},[205],{"type":25,"value":206},"First, the software was most likely funded with public money, and should therefore be available to the public, just like papers are published Open Access.",{"type":15,"tag":40,"props":208,"children":209},{},[210],{"type":25,"value":211},"Second, researchers frequently change jobs, moving from university to university. Without permission from their previous employers, they would have to start rebuilding their software from scratch every time they move to a new university, which would be very inefficient.",{"type":15,"tag":40,"props":213,"children":214},{},[215],{"type":25,"value":216},"Third, many of the most pressing problems that scientist work on involve complex, multifaceted systems that can only be properly studied in collaboration. Where software is involved, which is to say almost everywhere in academic research, researchers need to be able to exchange software and collaborate on its development, including across projects.",{"type":15,"tag":40,"props":218,"children":219},{},[220],{"type":25,"value":221},"Finally, doing so will allow them to achieve better results, and continue to build on those results, thus achieving higher impact.",{"type":15,"tag":16,"props":223,"children":224},{},[],{"type":15,"tag":20,"props":226,"children":228},{"id":227},"open-sourcing-scientific-software",[229],{"type":25,"value":230},"Open Sourcing scientific software",{"type":15,"tag":36,"props":232,"children":233},{},[234,239],{"type":15,"tag":40,"props":235,"children":236},{},[237],{"type":25,"value":238},"Free, Open Source Software",{"type":15,"tag":40,"props":240,"children":241},{},[242],{"type":25,"value":243},"Technology Transfer",{"type":15,"tag":56,"props":245,"children":246},{},[247],{"type":25,"value":60},{"type":15,"tag":56,"props":249,"children":250},{},[251],{"type":25,"value":252},"Free, Open Source Software (or FOSS, as it's sometimes abbreviated) is software that you are free to 0) use for any purpose, 1) modify to suit your needs, 2) share with others, and 3) share with changes you made, so you can work on it together. That's actually the Free Software definition, but Open Source really just says the same thing in more words, which is why they're usually mentioned together. These are exactly the permissions scientists need to be able to do science together using the software.",{"type":15,"tag":56,"props":254,"children":255},{},[256],{"type":25,"value":257},"Open Source licenses also allow commercial use, which means that they are a very effective means of technology transfer. Since the license terms are the same for everyone, there are no issues with state aid regulations, nor does a market-rate value for the software need to be determined. The standard Open Source licenses are now well understood and trusted by commercial parties, removing the need for complex negotiations on the exact terms. Of course, no payment will be received either. Given that commercial sale of academic software is very rare, it seems that the benefits obtained from the academic collaboration enabled by Open Source far outweigh the potential income loss due to not commercially licensing the software. And note that it is still perfectly possible to launch a spin-off or start-up that offers commercial services related to the software, including support and continued development.",{"type":15,"tag":16,"props":259,"children":260},{},[],{"type":15,"tag":56,"props":262,"children":263},{},[264],{"type":15,"tag":265,"props":266,"children":270},"a",{"href":267,"rel":268},"http://www.esciencecenter.nl",[269],"nofollow",[271],{"type":25,"value":272},"www.esciencecenter.nl",{"type":15,"tag":56,"props":274,"children":275},{},[276],{"type":15,"tag":265,"props":277,"children":279},{"href":278},"mailto:info@esciencecenter.nl",[280],{"type":25,"value":281},"info@esciencecenter.nl",{"type":15,"tag":56,"props":283,"children":284},{},[285],{"type":25,"value":286},"020 - 460 47 70",{"title":7,"searchDepth":288,"depth":288,"links":289},2,[290,291,292,293,294,295],{"id":22,"depth":288,"text":8},{"id":31,"depth":288,"text":34},{"id":81,"depth":288,"text":84},{"id":122,"depth":288,"text":125},{"id":163,"depth":288,"text":166},{"id":227,"depth":288,"text":230},"markdown","local_fs:modules:licenses:slides.pmd","local_fs","modules/licenses/slides.pmd","pmd",[302,337],{"_path":303,"_dir":304,"_draft":6,"_partial":6,"_locale":7,"title":305,"description":7,"body":306,"_type":296,"_id":334,"_source":298,"_file":335,"_extension":336},"/main/about","main","About",{"type":12,"children":307,"toc":330},[308,314,319,325],{"type":15,"tag":20,"props":309,"children":311},{"id":310},"about-the-research-software-support",[312],{"type":25,"value":313},"About the Research Software Support",{"type":15,"tag":56,"props":315,"children":316},{},[317],{"type":25,"value":318},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":20,"props":320,"children":322},{"id":321},"target-audience",[323],{"type":25,"value":324},"Target audience",{"type":15,"tag":56,"props":326,"children":327},{},[328],{"type":25,"value":329},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":288,"depth":288,"links":331},[332,333],{"id":310,"depth":288,"text":313},{"id":321,"depth":288,"text":324},"local_fs:main:about.md","main/about.md","md",{"_path":338,"_dir":304,"_draft":6,"_partial":6,"_locale":7,"title":339,"description":7,"body":340,"_type":296,"_id":464,"_source":298,"_file":465,"_extension":336},"/main/contribute","Contribute",{"type":12,"children":341,"toc":458},[342,348,353,360,365],{"type":15,"tag":20,"props":343,"children":345},{"id":344},"contributing-to-the-research-software-support",[346],{"type":25,"value":347},"Contributing to the Research Software Support",{"type":15,"tag":56,"props":349,"children":350},{},[351],{"type":25,"value":352},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":354,"props":355,"children":357},"h3",{"id":356},"what-can-i-do",[358],{"type":25,"value":359},"What can I do?",{"type":15,"tag":56,"props":361,"children":362},{},[363],{"type":25,"value":364},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":36,"props":366,"children":367},{},[368,382,423,446],{"type":15,"tag":40,"props":369,"children":370},{},[371,373,380],{"type":25,"value":372},"Contribute to the content discussion in the ",{"type":15,"tag":265,"props":374,"children":377},{"href":375,"rel":376},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[269],[378],{"type":25,"value":379},"chapter issues",{"type":25,"value":381},", e.g. by listing good resources for information.",{"type":15,"tag":40,"props":383,"children":384},{},[385,391,393],{"type":15,"tag":265,"props":386,"children":388},{"href":387},"#elements-of-a-module",[389],{"type":25,"value":390},"Author a lesson",{"type":25,"value":392},", e.g. by:\n",{"type":15,"tag":36,"props":394,"children":395},{},[396,405,414],{"type":15,"tag":40,"props":397,"children":398},{},[399],{"type":15,"tag":265,"props":400,"children":402},{"href":401},"#slides",[403],{"type":25,"value":404},"Creating slides",{"type":15,"tag":40,"props":406,"children":407},{},[408],{"type":15,"tag":265,"props":409,"children":411},{"href":410},"#exercises",[412],{"type":25,"value":413},"Designing an exercise",{"type":15,"tag":40,"props":415,"children":416},{},[417],{"type":15,"tag":265,"props":418,"children":420},{"href":419},"#online-resources",[421],{"type":25,"value":422},"Curating online resources",{"type":15,"tag":40,"props":424,"children":425},{},[426,428,435,437,444],{"type":25,"value":427},"Review a lesson module; both by looking at ",{"type":15,"tag":265,"props":429,"children":432},{"href":430,"rel":431},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[269],[433],{"type":25,"value":434},"open PRs",{"type":25,"value":436},", as well as flagging issues for improvement in the ",{"type":15,"tag":265,"props":438,"children":441},{"href":439,"rel":440},"https://esciencecenter-digital-skills.github.io/research-software-support/",[269],[442],{"type":25,"value":443},"existing content",{"type":25,"value":445},".",{"type":15,"tag":40,"props":447,"children":448},{},[449,456],{"type":15,"tag":265,"props":450,"children":453},{"href":451,"rel":452},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[269],[454],{"type":25,"value":455},"Provide feedback",{"type":25,"value":457}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":288,"depth":288,"links":459},[460],{"id":344,"depth":288,"text":347,"children":461},[462],{"id":356,"depth":463,"text":359},3,"local_fs:main:contribute.md","main/contribute.md",1715801014994] \ No newline at end of file diff --git a/modules/licenses/slides/index.html b/modules/licenses/slides/index.html index c5ef00f8..f4466b51 100644 --- a/modules/licenses/slides/index.html +++ b/modules/licenses/slides/index.html @@ -2,7 +2,7 @@ Software Licensing - + - - - - - - - - + + + + + + + + - + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/licenses/university_policy/_payload.json b/modules/licenses/university_policy/_payload.json index 5acb4b40..93d3a7cd 100644 --- a/modules/licenses/university_policy/_payload.json +++ b/modules/licenses/university_policy/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":328},["Reactive",2],{"content-query-9thOceUQdY":3,"content-query-AT44bg6JPw":164},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":159,"_id":160,"_source":161,"_file":162,"_extension":163},"/modules/licenses/university_policy","licenses",false,"","University software policies","reading",3,{"type":12,"children":13,"toc":151},"root",[14,22,28,33,38,45,73,79,102,108],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"university-software-policies",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":25},"p",{},[26],{"type":21,"value":27},"Universities employ researchers, who often create and use software in the course of doing research. That means that they create and use copyrighted works, activities governed by copyright law. Works created by employees as part of their work are normally owned by their employer. This is the default legally in many places, and is almost always stated in the employment contract as well. So, the university owns the software created by its employees, and because the employees also act on behalf of their employer, is responsible for any violations of copyright by their employees.",{"type":15,"tag":23,"props":29,"children":30},{},[31],{"type":21,"value":32},"In practice, for example when submitting a paper to a journal, it is often assumed that scientists can transfer copyright ownership or otherwise give permission to the publisher to publish their work on behalf of the university, but strictly speaking there is usually no legal basis for this. Likewise, if scientists produce software as part of their scientific work, then that software is owned by the university, and publishing it as Open Source software, while often done, does not sit on solid legal footing.",{"type":15,"tag":23,"props":34,"children":35},{},[36],{"type":21,"value":37},"Sharing scientific software offers great possibilities for collaboration, sharing of resources, and increased impact of the scientific work as well as of the software itself. Universities are increasingly aware of this, and have created or are creating policies to guide how they create and use research software. In this module we'll look into the why, how and what of university software policies.",{"type":15,"tag":39,"props":40,"children":42},"h3",{"id":41},"why",[43],{"type":21,"value":44},"Why?",{"type":15,"tag":46,"props":47,"children":48},"ul",{},[49,63,68],{"type":15,"tag":50,"props":51,"children":52},"li",{},[53,55],{"type":21,"value":54},"Ensure scientific software is properly licensed\n",{"type":15,"tag":46,"props":56,"children":57},{},[58],{"type":15,"tag":50,"props":59,"children":60},{},[61],{"type":21,"value":62},"Including the software your employees use!",{"type":15,"tag":50,"props":64,"children":65},{},[66],{"type":21,"value":67},"Increase collaboration",{"type":15,"tag":50,"props":69,"children":70},{},[71],{"type":21,"value":72},"Increase impact",{"type":15,"tag":39,"props":74,"children":76},{"id":75},"how",[77],{"type":21,"value":78},"How?",{"type":15,"tag":46,"props":80,"children":81},{},[82,87,92,97],{"type":15,"tag":50,"props":83,"children":84},{},[85],{"type":21,"value":86},"Still in development",{"type":15,"tag":50,"props":88,"children":89},{},[90],{"type":21,"value":91},"TU Delft",{"type":15,"tag":50,"props":93,"children":94},{},[95],{"type":21,"value":96},"Astron",{"type":15,"tag":50,"props":98,"children":99},{},[100],{"type":21,"value":101},"NLeSC",{"type":15,"tag":39,"props":103,"children":105},{"id":104},"what",[106],{"type":21,"value":107},"What?",{"type":15,"tag":46,"props":109,"children":110},{},[111,116,121,126,131,136,141,146],{"type":15,"tag":50,"props":112,"children":113},{},[114],{"type":21,"value":115},"Software quality",{"type":15,"tag":50,"props":117,"children":118},{},[119],{"type":21,"value":120},"Software development processes and tooling",{"type":15,"tag":50,"props":122,"children":123},{},[124],{"type":21,"value":125},"Adhering to others' licenses",{"type":15,"tag":50,"props":127,"children":128},{},[129],{"type":21,"value":130},"How to publish as Open Source",{"type":15,"tag":50,"props":132,"children":133},{},[134],{"type":21,"value":135},"Acceptable licenses",{"type":15,"tag":50,"props":137,"children":138},{},[139],{"type":21,"value":140},"Registering output",{"type":15,"tag":50,"props":142,"children":143},{},[144],{"type":21,"value":145},"Education of researchers in software development",{"type":15,"tag":50,"props":147,"children":148},{},[149],{"type":21,"value":150},"Acknowledge funding",{"title":7,"searchDepth":152,"depth":152,"links":153},2,[154],{"id":18,"depth":152,"text":8,"children":155},[156,157,158],{"id":41,"depth":10,"text":44},{"id":75,"depth":10,"text":78},{"id":104,"depth":10,"text":107},"markdown","local_fs:modules:licenses:university_policy.md","local_fs","modules/licenses/university_policy.md","md",[165,199],{"_path":166,"_dir":167,"_draft":6,"_partial":6,"_locale":7,"title":168,"description":7,"body":169,"_type":159,"_id":197,"_source":161,"_file":198,"_extension":163},"/main/about","main","About",{"type":12,"children":170,"toc":193},[171,177,182,188],{"type":15,"tag":16,"props":172,"children":174},{"id":173},"about-the-research-software-support",[175],{"type":21,"value":176},"About the Research Software Support",{"type":15,"tag":23,"props":178,"children":179},{},[180],{"type":21,"value":181},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":183,"children":185},{"id":184},"target-audience",[186],{"type":21,"value":187},"Target audience",{"type":15,"tag":23,"props":189,"children":190},{},[191],{"type":21,"value":192},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":152,"depth":152,"links":194},[195,196],{"id":173,"depth":152,"text":176},{"id":184,"depth":152,"text":187},"local_fs:main:about.md","main/about.md",{"_path":200,"_dir":167,"_draft":6,"_partial":6,"_locale":7,"title":201,"description":7,"body":202,"_type":159,"_id":326,"_source":161,"_file":327,"_extension":163},"/main/contribute","Contribute",{"type":12,"children":203,"toc":321},[204,210,215,221,226],{"type":15,"tag":16,"props":205,"children":207},{"id":206},"contributing-to-the-research-software-support",[208],{"type":21,"value":209},"Contributing to the Research Software Support",{"type":15,"tag":23,"props":211,"children":212},{},[213],{"type":21,"value":214},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":39,"props":216,"children":218},{"id":217},"what-can-i-do",[219],{"type":21,"value":220},"What can I do?",{"type":15,"tag":23,"props":222,"children":223},{},[224],{"type":21,"value":225},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":46,"props":227,"children":228},{},[229,245,286,309],{"type":15,"tag":50,"props":230,"children":231},{},[232,234,243],{"type":21,"value":233},"Contribute to the content discussion in the ",{"type":15,"tag":235,"props":236,"children":240},"a",{"href":237,"rel":238},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[239],"nofollow",[241],{"type":21,"value":242},"chapter issues",{"type":21,"value":244},", e.g. by listing good resources for information.",{"type":15,"tag":50,"props":246,"children":247},{},[248,254,256],{"type":15,"tag":235,"props":249,"children":251},{"href":250},"#elements-of-a-module",[252],{"type":21,"value":253},"Author a lesson",{"type":21,"value":255},", e.g. by:\n",{"type":15,"tag":46,"props":257,"children":258},{},[259,268,277],{"type":15,"tag":50,"props":260,"children":261},{},[262],{"type":15,"tag":235,"props":263,"children":265},{"href":264},"#slides",[266],{"type":21,"value":267},"Creating slides",{"type":15,"tag":50,"props":269,"children":270},{},[271],{"type":15,"tag":235,"props":272,"children":274},{"href":273},"#exercises",[275],{"type":21,"value":276},"Designing an exercise",{"type":15,"tag":50,"props":278,"children":279},{},[280],{"type":15,"tag":235,"props":281,"children":283},{"href":282},"#online-resources",[284],{"type":21,"value":285},"Curating online resources",{"type":15,"tag":50,"props":287,"children":288},{},[289,291,298,300,307],{"type":21,"value":290},"Review a lesson module; both by looking at ",{"type":15,"tag":235,"props":292,"children":295},{"href":293,"rel":294},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[239],[296],{"type":21,"value":297},"open PRs",{"type":21,"value":299},", as well as flagging issues for improvement in the ",{"type":15,"tag":235,"props":301,"children":304},{"href":302,"rel":303},"https://esciencecenter-digital-skills.github.io/research-software-support/",[239],[305],{"type":21,"value":306},"existing content",{"type":21,"value":308},".",{"type":15,"tag":50,"props":310,"children":311},{},[312,319],{"type":15,"tag":235,"props":313,"children":316},{"href":314,"rel":315},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[239],[317],{"type":21,"value":318},"Provide feedback",{"type":21,"value":320}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":152,"depth":152,"links":322},[323],{"id":206,"depth":152,"text":209,"children":324},[325],{"id":217,"depth":10,"text":220},"local_fs:main:contribute.md","main/contribute.md",1715800937682] \ No newline at end of file +[{"data":1,"prerenderedAt":328},["Reactive",2],{"content-query-9thOceUQdY":3,"content-query-AT44bg6JPw":164},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":159,"_id":160,"_source":161,"_file":162,"_extension":163},"/modules/licenses/university_policy","licenses",false,"","University software policies","reading",3,{"type":12,"children":13,"toc":151},"root",[14,22,28,33,38,45,73,79,102,108],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"university-software-policies",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":25},"p",{},[26],{"type":21,"value":27},"Universities employ researchers, who often create and use software in the course of doing research. That means that they create and use copyrighted works, activities governed by copyright law. Works created by employees as part of their work are normally owned by their employer. This is the default legally in many places, and is almost always stated in the employment contract as well. So, the university owns the software created by its employees, and because the employees also act on behalf of their employer, is responsible for any violations of copyright by their employees.",{"type":15,"tag":23,"props":29,"children":30},{},[31],{"type":21,"value":32},"In practice, for example when submitting a paper to a journal, it is often assumed that scientists can transfer copyright ownership or otherwise give permission to the publisher to publish their work on behalf of the university, but strictly speaking there is usually no legal basis for this. Likewise, if scientists produce software as part of their scientific work, then that software is owned by the university, and publishing it as Open Source software, while often done, does not sit on solid legal footing.",{"type":15,"tag":23,"props":34,"children":35},{},[36],{"type":21,"value":37},"Sharing scientific software offers great possibilities for collaboration, sharing of resources, and increased impact of the scientific work as well as of the software itself. Universities are increasingly aware of this, and have created or are creating policies to guide how they create and use research software. In this module we'll look into the why, how and what of university software policies.",{"type":15,"tag":39,"props":40,"children":42},"h3",{"id":41},"why",[43],{"type":21,"value":44},"Why?",{"type":15,"tag":46,"props":47,"children":48},"ul",{},[49,63,68],{"type":15,"tag":50,"props":51,"children":52},"li",{},[53,55],{"type":21,"value":54},"Ensure scientific software is properly licensed\n",{"type":15,"tag":46,"props":56,"children":57},{},[58],{"type":15,"tag":50,"props":59,"children":60},{},[61],{"type":21,"value":62},"Including the software your employees use!",{"type":15,"tag":50,"props":64,"children":65},{},[66],{"type":21,"value":67},"Increase collaboration",{"type":15,"tag":50,"props":69,"children":70},{},[71],{"type":21,"value":72},"Increase impact",{"type":15,"tag":39,"props":74,"children":76},{"id":75},"how",[77],{"type":21,"value":78},"How?",{"type":15,"tag":46,"props":80,"children":81},{},[82,87,92,97],{"type":15,"tag":50,"props":83,"children":84},{},[85],{"type":21,"value":86},"Still in development",{"type":15,"tag":50,"props":88,"children":89},{},[90],{"type":21,"value":91},"TU Delft",{"type":15,"tag":50,"props":93,"children":94},{},[95],{"type":21,"value":96},"Astron",{"type":15,"tag":50,"props":98,"children":99},{},[100],{"type":21,"value":101},"NLeSC",{"type":15,"tag":39,"props":103,"children":105},{"id":104},"what",[106],{"type":21,"value":107},"What?",{"type":15,"tag":46,"props":109,"children":110},{},[111,116,121,126,131,136,141,146],{"type":15,"tag":50,"props":112,"children":113},{},[114],{"type":21,"value":115},"Software quality",{"type":15,"tag":50,"props":117,"children":118},{},[119],{"type":21,"value":120},"Software development processes and tooling",{"type":15,"tag":50,"props":122,"children":123},{},[124],{"type":21,"value":125},"Adhering to others' licenses",{"type":15,"tag":50,"props":127,"children":128},{},[129],{"type":21,"value":130},"How to publish as Open Source",{"type":15,"tag":50,"props":132,"children":133},{},[134],{"type":21,"value":135},"Acceptable licenses",{"type":15,"tag":50,"props":137,"children":138},{},[139],{"type":21,"value":140},"Registering output",{"type":15,"tag":50,"props":142,"children":143},{},[144],{"type":21,"value":145},"Education of researchers in software development",{"type":15,"tag":50,"props":147,"children":148},{},[149],{"type":21,"value":150},"Acknowledge funding",{"title":7,"searchDepth":152,"depth":152,"links":153},2,[154],{"id":18,"depth":152,"text":8,"children":155},[156,157,158],{"id":41,"depth":10,"text":44},{"id":75,"depth":10,"text":78},{"id":104,"depth":10,"text":107},"markdown","local_fs:modules:licenses:university_policy.md","local_fs","modules/licenses/university_policy.md","md",[165,199],{"_path":166,"_dir":167,"_draft":6,"_partial":6,"_locale":7,"title":168,"description":7,"body":169,"_type":159,"_id":197,"_source":161,"_file":198,"_extension":163},"/main/about","main","About",{"type":12,"children":170,"toc":193},[171,177,182,188],{"type":15,"tag":16,"props":172,"children":174},{"id":173},"about-the-research-software-support",[175],{"type":21,"value":176},"About the Research Software Support",{"type":15,"tag":23,"props":178,"children":179},{},[180],{"type":21,"value":181},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":183,"children":185},{"id":184},"target-audience",[186],{"type":21,"value":187},"Target audience",{"type":15,"tag":23,"props":189,"children":190},{},[191],{"type":21,"value":192},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":152,"depth":152,"links":194},[195,196],{"id":173,"depth":152,"text":176},{"id":184,"depth":152,"text":187},"local_fs:main:about.md","main/about.md",{"_path":200,"_dir":167,"_draft":6,"_partial":6,"_locale":7,"title":201,"description":7,"body":202,"_type":159,"_id":326,"_source":161,"_file":327,"_extension":163},"/main/contribute","Contribute",{"type":12,"children":203,"toc":321},[204,210,215,221,226],{"type":15,"tag":16,"props":205,"children":207},{"id":206},"contributing-to-the-research-software-support",[208],{"type":21,"value":209},"Contributing to the Research Software Support",{"type":15,"tag":23,"props":211,"children":212},{},[213],{"type":21,"value":214},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":39,"props":216,"children":218},{"id":217},"what-can-i-do",[219],{"type":21,"value":220},"What can I do?",{"type":15,"tag":23,"props":222,"children":223},{},[224],{"type":21,"value":225},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":46,"props":227,"children":228},{},[229,245,286,309],{"type":15,"tag":50,"props":230,"children":231},{},[232,234,243],{"type":21,"value":233},"Contribute to the content discussion in the ",{"type":15,"tag":235,"props":236,"children":240},"a",{"href":237,"rel":238},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[239],"nofollow",[241],{"type":21,"value":242},"chapter issues",{"type":21,"value":244},", e.g. by listing good resources for information.",{"type":15,"tag":50,"props":246,"children":247},{},[248,254,256],{"type":15,"tag":235,"props":249,"children":251},{"href":250},"#elements-of-a-module",[252],{"type":21,"value":253},"Author a lesson",{"type":21,"value":255},", e.g. by:\n",{"type":15,"tag":46,"props":257,"children":258},{},[259,268,277],{"type":15,"tag":50,"props":260,"children":261},{},[262],{"type":15,"tag":235,"props":263,"children":265},{"href":264},"#slides",[266],{"type":21,"value":267},"Creating slides",{"type":15,"tag":50,"props":269,"children":270},{},[271],{"type":15,"tag":235,"props":272,"children":274},{"href":273},"#exercises",[275],{"type":21,"value":276},"Designing an exercise",{"type":15,"tag":50,"props":278,"children":279},{},[280],{"type":15,"tag":235,"props":281,"children":283},{"href":282},"#online-resources",[284],{"type":21,"value":285},"Curating online resources",{"type":15,"tag":50,"props":287,"children":288},{},[289,291,298,300,307],{"type":21,"value":290},"Review a lesson module; both by looking at ",{"type":15,"tag":235,"props":292,"children":295},{"href":293,"rel":294},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[239],[296],{"type":21,"value":297},"open PRs",{"type":21,"value":299},", as well as flagging issues for improvement in the ",{"type":15,"tag":235,"props":301,"children":304},{"href":302,"rel":303},"https://esciencecenter-digital-skills.github.io/research-software-support/",[239],[305],{"type":21,"value":306},"existing content",{"type":21,"value":308},".",{"type":15,"tag":50,"props":310,"children":311},{},[312,319],{"type":15,"tag":235,"props":313,"children":316},{"href":314,"rel":315},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[239],[317],{"type":21,"value":318},"Provide feedback",{"type":21,"value":320}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":152,"depth":152,"links":322},[323],{"id":206,"depth":152,"text":209,"children":324},[325],{"id":217,"depth":10,"text":220},"local_fs:main:contribute.md","main/contribute.md",1715801015022] \ No newline at end of file diff --git a/modules/licenses/university_policy/index.html b/modules/licenses/university_policy/index.html index 793725f4..1a0c7a1e 100644 --- a/modules/licenses/university_policy/index.html +++ b/modules/licenses/university_policy/index.html @@ -2,7 +2,7 @@ University software policies - + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - - + + -

    Module: licenses

    University software policies

    Universities employ researchers, who often create and use software in the course of doing research. That means that they create and use copyrighted works, activities governed by copyright law. Works created by employees as part of their work are normally owned by their employer. This is the default legally in many places, and is almost always stated in the employment contract as well. So, the university owns the software created by its employees, and because the employees also act on behalf of their employer, is responsible for any violations of copyright by their employees.

    In practice, for example when submitting a paper to a journal, it is often assumed that scientists can transfer copyright ownership or otherwise give permission to the publisher to publish their work on behalf of the university, but strictly speaking there is usually no legal basis for this. Likewise, if scientists produce software as part of their scientific work, then that software is owned by the university, and publishing it as Open Source software, while often done, does not sit on solid legal footing.

    Sharing scientific software offers great possibilities for collaboration, sharing of resources, and increased impact of the scientific work as well as of the software itself. Universities are increasingly aware of this, and have created or are creating policies to guide how they create and use research software. In this module we'll look into the why, how and what of university software policies.

    Why?

    • Ensure scientific software is properly licensed -
      • Including the software your employees use!
    • Increase collaboration
    • Increase impact

    How?

    • Still in development
    • TU Delft
    • Astron
    • NLeSC

    What?

    • Software quality
    • Software development processes and tooling
    • Adhering to others' licenses
    • How to publish as Open Source
    • Acceptable licenses
    • Registering output
    • Education of researchers in software development
    • Acknowledge funding
    - \ No newline at end of file +

    Module: licenses

    University software policies

    Universities employ researchers, who often create and use software in the course of doing research. That means that they create and use copyrighted works, activities governed by copyright law. Works created by employees as part of their work are normally owned by their employer. This is the default legally in many places, and is almost always stated in the employment contract as well. So, the university owns the software created by its employees, and because the employees also act on behalf of their employer, is responsible for any violations of copyright by their employees.

    In practice, for example when submitting a paper to a journal, it is often assumed that scientists can transfer copyright ownership or otherwise give permission to the publisher to publish their work on behalf of the university, but strictly speaking there is usually no legal basis for this. Likewise, if scientists produce software as part of their scientific work, then that software is owned by the university, and publishing it as Open Source software, while often done, does not sit on solid legal footing.

    Sharing scientific software offers great possibilities for collaboration, sharing of resources, and increased impact of the scientific work as well as of the software itself. Universities are increasingly aware of this, and have created or are creating policies to guide how they create and use research software. In this module we'll look into the why, how and what of university software policies.

    Why?

    • Ensure scientific software is properly licensed +
      • Including the software your employees use!
    • Increase collaboration
    • Increase impact

    How?

    • Still in development
    • TU Delft
    • Astron
    • NLeSC

    What?

    • Software quality
    • Software development processes and tooling
    • Adhering to others' licenses
    • How to publish as Open Source
    • Acceptable licenses
    • Registering output
    • Education of researchers in software development
    • Acknowledge funding
    + \ No newline at end of file diff --git a/modules/notebooks/info/_payload.json b/modules/notebooks/info/_payload.json index 0d90260d..efde5388 100644 --- a/modules/notebooks/info/_payload.json +++ b/modules/notebooks/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-gOi4sp2Fnd":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/notebooks/info","notebooks",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:notebooks:info.md","local_fs","modules/notebooks/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715800937088] \ No newline at end of file +[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-gOi4sp2Fnd":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/notebooks/info","notebooks",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:notebooks:info.md","local_fs","modules/notebooks/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715801014258] \ No newline at end of file diff --git a/modules/notebooks/info/index.html b/modules/notebooks/info/index.html index 956aff60..a90e3922 100644 --- a/modules/notebooks/info/index.html +++ b/modules/notebooks/info/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - + + + - - + + -

    Module: notebooks

    Learning objectives for the FAIR software module

    - \ No newline at end of file +

    Module: notebooks

    Learning objectives for the FAIR software module

    + \ No newline at end of file diff --git a/modules/organization/info/_payload.json b/modules/organization/info/_payload.json index 39a0d6f0..cf1cbc58 100644 --- a/modules/organization/info/_payload.json +++ b/modules/organization/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-oUUDatXhel":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/organization/info","organization",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:organization:info.md","local_fs","modules/organization/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715800937090] \ No newline at end of file +[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-oUUDatXhel":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/organization/info","organization",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:organization:info.md","local_fs","modules/organization/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715801014261] \ No newline at end of file diff --git a/modules/organization/info/index.html b/modules/organization/info/index.html index 4a3170a9..1d136ce5 100644 --- a/modules/organization/info/index.html +++ b/modules/organization/info/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - + + + - - + + -

    Module: organization

    Learning objectives for the FAIR software module

    - \ No newline at end of file +

    Module: organization

    Learning objectives for the FAIR software module

    + \ No newline at end of file diff --git a/modules/publication/automating_software_publication/_payload.json b/modules/publication/automating_software_publication/_payload.json index 4728a93e..cfb029df 100644 --- a/modules/publication/automating_software_publication/_payload.json +++ b/modules/publication/automating_software_publication/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":261},["Reactive",2],{"content-query-OzLYuP2WN3":3,"content-query-AT44bg6JPw":95},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":90,"_id":91,"_source":92,"_file":93,"_extension":94},"/modules/publication/automating_software_publication","publication",false,"","Automating software publication","Most of the steps in the modern software publishing pipeline can be automated.","exercise",4,{"type":13,"children":14,"toc":85},"root",[15,23,28,35],{"type":16,"tag":17,"props":18,"children":20},"element","h1",{"id":19},"automating-software-publication",[21],{"type":22,"value":8},"text",{"type":16,"tag":24,"props":25,"children":26},"p",{},[27],{"type":22,"value":9},{"type":16,"tag":29,"props":30,"children":32},"h3",{"id":31},"an-example-with-github-zenodo-integration",[33],{"type":22,"value":34},"An example with github-zenodo integration",{"type":16,"tag":36,"props":37,"children":38},"ol",{},[39,45,50,55,60,65,70,75,80],{"type":16,"tag":40,"props":41,"children":42},"li",{},[43],{"type":22,"value":44},"Choose a software repository on github that you own (either existing, or create a new one).",{"type":16,"tag":40,"props":46,"children":47},{},[48],{"type":22,"value":49},"Navigate to \u003Czenodo.org>",{"type":16,"tag":40,"props":51,"children":52},{},[53],{"type":22,"value":54},"Log in with your zenodo account (create a new one if necessary)",{"type":16,"tag":40,"props":56,"children":57},{},[58],{"type":22,"value":59},"Navigate to the \"GitHub\" tab, located in a drop-down menu under your username",{"type":16,"tag":40,"props":61,"children":62},{},[63],{"type":22,"value":64},"Follow the instructions there to link your GitHub account with Zenodo (if not already done)",{"type":16,"tag":40,"props":66,"children":67},{},[68],{"type":22,"value":69},"Look through the list of repositories listed until you find the one you wanted to archive",{"type":16,"tag":40,"props":71,"children":72},{},[73],{"type":22,"value":74},"Flip the toggle on the right to \"ON\"",{"type":16,"tag":40,"props":76,"children":77},{},[78],{"type":22,"value":79},"Go back to your repository on github.com and make a new release. Zenodo will automatically archive this release.",{"type":16,"tag":40,"props":81,"children":82},{},[83],{"type":22,"value":84},"Add the zenodo badge for your repository to the README file.",{"title":7,"searchDepth":86,"depth":86,"links":87},2,[88],{"id":31,"depth":89,"text":34},3,"markdown","local_fs:modules:publication:automating_software_publication.md","local_fs","modules/publication/automating_software_publication.md","md",[96,131],{"_path":97,"_dir":98,"_draft":6,"_partial":6,"_locale":7,"title":99,"description":7,"body":100,"_type":90,"_id":129,"_source":92,"_file":130,"_extension":94},"/main/about","main","About",{"type":13,"children":101,"toc":125},[102,109,114,120],{"type":16,"tag":103,"props":104,"children":106},"h2",{"id":105},"about-the-research-software-support",[107],{"type":22,"value":108},"About the Research Software Support",{"type":16,"tag":24,"props":110,"children":111},{},[112],{"type":22,"value":113},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":103,"props":115,"children":117},{"id":116},"target-audience",[118],{"type":22,"value":119},"Target audience",{"type":16,"tag":24,"props":121,"children":122},{},[123],{"type":22,"value":124},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":86,"depth":86,"links":126},[127,128],{"id":105,"depth":86,"text":108},{"id":116,"depth":86,"text":119},"local_fs:main:about.md","main/about.md",{"_path":132,"_dir":98,"_draft":6,"_partial":6,"_locale":7,"title":133,"description":7,"body":134,"_type":90,"_id":259,"_source":92,"_file":260,"_extension":94},"/main/contribute","Contribute",{"type":13,"children":135,"toc":254},[136,142,147,153,158],{"type":16,"tag":103,"props":137,"children":139},{"id":138},"contributing-to-the-research-software-support",[140],{"type":22,"value":141},"Contributing to the Research Software Support",{"type":16,"tag":24,"props":143,"children":144},{},[145],{"type":22,"value":146},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":29,"props":148,"children":150},{"id":149},"what-can-i-do",[151],{"type":22,"value":152},"What can I do?",{"type":16,"tag":24,"props":154,"children":155},{},[156],{"type":22,"value":157},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":159,"props":160,"children":161},"ul",{},[162,178,219,242],{"type":16,"tag":40,"props":163,"children":164},{},[165,167,176],{"type":22,"value":166},"Contribute to the content discussion in the ",{"type":16,"tag":168,"props":169,"children":173},"a",{"href":170,"rel":171},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[172],"nofollow",[174],{"type":22,"value":175},"chapter issues",{"type":22,"value":177},", e.g. by listing good resources for information.",{"type":16,"tag":40,"props":179,"children":180},{},[181,187,189],{"type":16,"tag":168,"props":182,"children":184},{"href":183},"#elements-of-a-module",[185],{"type":22,"value":186},"Author a lesson",{"type":22,"value":188},", e.g. by:\n",{"type":16,"tag":159,"props":190,"children":191},{},[192,201,210],{"type":16,"tag":40,"props":193,"children":194},{},[195],{"type":16,"tag":168,"props":196,"children":198},{"href":197},"#slides",[199],{"type":22,"value":200},"Creating slides",{"type":16,"tag":40,"props":202,"children":203},{},[204],{"type":16,"tag":168,"props":205,"children":207},{"href":206},"#exercises",[208],{"type":22,"value":209},"Designing an exercise",{"type":16,"tag":40,"props":211,"children":212},{},[213],{"type":16,"tag":168,"props":214,"children":216},{"href":215},"#online-resources",[217],{"type":22,"value":218},"Curating online resources",{"type":16,"tag":40,"props":220,"children":221},{},[222,224,231,233,240],{"type":22,"value":223},"Review a lesson module; both by looking at ",{"type":16,"tag":168,"props":225,"children":228},{"href":226,"rel":227},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[172],[229],{"type":22,"value":230},"open PRs",{"type":22,"value":232},", as well as flagging issues for improvement in the ",{"type":16,"tag":168,"props":234,"children":237},{"href":235,"rel":236},"https://esciencecenter-digital-skills.github.io/research-software-support/",[172],[238],{"type":22,"value":239},"existing content",{"type":22,"value":241},".",{"type":16,"tag":40,"props":243,"children":244},{},[245,252],{"type":16,"tag":168,"props":246,"children":249},{"href":247,"rel":248},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[172],[250],{"type":22,"value":251},"Provide feedback",{"type":22,"value":253}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":86,"depth":86,"links":255},[256],{"id":138,"depth":86,"text":141,"children":257},[258],{"id":149,"depth":89,"text":152},"local_fs:main:contribute.md","main/contribute.md",1715800938147] \ No newline at end of file +[{"data":1,"prerenderedAt":261},["Reactive",2],{"content-query-OzLYuP2WN3":3,"content-query-AT44bg6JPw":95},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":90,"_id":91,"_source":92,"_file":93,"_extension":94},"/modules/publication/automating_software_publication","publication",false,"","Automating software publication","Most of the steps in the modern software publishing pipeline can be automated.","exercise",4,{"type":13,"children":14,"toc":85},"root",[15,23,28,35],{"type":16,"tag":17,"props":18,"children":20},"element","h1",{"id":19},"automating-software-publication",[21],{"type":22,"value":8},"text",{"type":16,"tag":24,"props":25,"children":26},"p",{},[27],{"type":22,"value":9},{"type":16,"tag":29,"props":30,"children":32},"h3",{"id":31},"an-example-with-github-zenodo-integration",[33],{"type":22,"value":34},"An example with github-zenodo integration",{"type":16,"tag":36,"props":37,"children":38},"ol",{},[39,45,50,55,60,65,70,75,80],{"type":16,"tag":40,"props":41,"children":42},"li",{},[43],{"type":22,"value":44},"Choose a software repository on github that you own (either existing, or create a new one).",{"type":16,"tag":40,"props":46,"children":47},{},[48],{"type":22,"value":49},"Navigate to \u003Czenodo.org>",{"type":16,"tag":40,"props":51,"children":52},{},[53],{"type":22,"value":54},"Log in with your zenodo account (create a new one if necessary)",{"type":16,"tag":40,"props":56,"children":57},{},[58],{"type":22,"value":59},"Navigate to the \"GitHub\" tab, located in a drop-down menu under your username",{"type":16,"tag":40,"props":61,"children":62},{},[63],{"type":22,"value":64},"Follow the instructions there to link your GitHub account with Zenodo (if not already done)",{"type":16,"tag":40,"props":66,"children":67},{},[68],{"type":22,"value":69},"Look through the list of repositories listed until you find the one you wanted to archive",{"type":16,"tag":40,"props":71,"children":72},{},[73],{"type":22,"value":74},"Flip the toggle on the right to \"ON\"",{"type":16,"tag":40,"props":76,"children":77},{},[78],{"type":22,"value":79},"Go back to your repository on github.com and make a new release. Zenodo will automatically archive this release.",{"type":16,"tag":40,"props":81,"children":82},{},[83],{"type":22,"value":84},"Add the zenodo badge for your repository to the README file.",{"title":7,"searchDepth":86,"depth":86,"links":87},2,[88],{"id":31,"depth":89,"text":34},3,"markdown","local_fs:modules:publication:automating_software_publication.md","local_fs","modules/publication/automating_software_publication.md","md",[96,131],{"_path":97,"_dir":98,"_draft":6,"_partial":6,"_locale":7,"title":99,"description":7,"body":100,"_type":90,"_id":129,"_source":92,"_file":130,"_extension":94},"/main/about","main","About",{"type":13,"children":101,"toc":125},[102,109,114,120],{"type":16,"tag":103,"props":104,"children":106},"h2",{"id":105},"about-the-research-software-support",[107],{"type":22,"value":108},"About the Research Software Support",{"type":16,"tag":24,"props":110,"children":111},{},[112],{"type":22,"value":113},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":103,"props":115,"children":117},{"id":116},"target-audience",[118],{"type":22,"value":119},"Target audience",{"type":16,"tag":24,"props":121,"children":122},{},[123],{"type":22,"value":124},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":86,"depth":86,"links":126},[127,128],{"id":105,"depth":86,"text":108},{"id":116,"depth":86,"text":119},"local_fs:main:about.md","main/about.md",{"_path":132,"_dir":98,"_draft":6,"_partial":6,"_locale":7,"title":133,"description":7,"body":134,"_type":90,"_id":259,"_source":92,"_file":260,"_extension":94},"/main/contribute","Contribute",{"type":13,"children":135,"toc":254},[136,142,147,153,158],{"type":16,"tag":103,"props":137,"children":139},{"id":138},"contributing-to-the-research-software-support",[140],{"type":22,"value":141},"Contributing to the Research Software Support",{"type":16,"tag":24,"props":143,"children":144},{},[145],{"type":22,"value":146},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":29,"props":148,"children":150},{"id":149},"what-can-i-do",[151],{"type":22,"value":152},"What can I do?",{"type":16,"tag":24,"props":154,"children":155},{},[156],{"type":22,"value":157},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":159,"props":160,"children":161},"ul",{},[162,178,219,242],{"type":16,"tag":40,"props":163,"children":164},{},[165,167,176],{"type":22,"value":166},"Contribute to the content discussion in the ",{"type":16,"tag":168,"props":169,"children":173},"a",{"href":170,"rel":171},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[172],"nofollow",[174],{"type":22,"value":175},"chapter issues",{"type":22,"value":177},", e.g. by listing good resources for information.",{"type":16,"tag":40,"props":179,"children":180},{},[181,187,189],{"type":16,"tag":168,"props":182,"children":184},{"href":183},"#elements-of-a-module",[185],{"type":22,"value":186},"Author a lesson",{"type":22,"value":188},", e.g. by:\n",{"type":16,"tag":159,"props":190,"children":191},{},[192,201,210],{"type":16,"tag":40,"props":193,"children":194},{},[195],{"type":16,"tag":168,"props":196,"children":198},{"href":197},"#slides",[199],{"type":22,"value":200},"Creating slides",{"type":16,"tag":40,"props":202,"children":203},{},[204],{"type":16,"tag":168,"props":205,"children":207},{"href":206},"#exercises",[208],{"type":22,"value":209},"Designing an exercise",{"type":16,"tag":40,"props":211,"children":212},{},[213],{"type":16,"tag":168,"props":214,"children":216},{"href":215},"#online-resources",[217],{"type":22,"value":218},"Curating online resources",{"type":16,"tag":40,"props":220,"children":221},{},[222,224,231,233,240],{"type":22,"value":223},"Review a lesson module; both by looking at ",{"type":16,"tag":168,"props":225,"children":228},{"href":226,"rel":227},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[172],[229],{"type":22,"value":230},"open PRs",{"type":22,"value":232},", as well as flagging issues for improvement in the ",{"type":16,"tag":168,"props":234,"children":237},{"href":235,"rel":236},"https://esciencecenter-digital-skills.github.io/research-software-support/",[172],[238],{"type":22,"value":239},"existing content",{"type":22,"value":241},".",{"type":16,"tag":40,"props":243,"children":244},{},[245,252],{"type":16,"tag":168,"props":246,"children":249},{"href":247,"rel":248},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[172],[250],{"type":22,"value":251},"Provide feedback",{"type":22,"value":253}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":86,"depth":86,"links":255},[256],{"id":138,"depth":86,"text":141,"children":257},[258],{"id":149,"depth":89,"text":152},"local_fs:main:contribute.md","main/contribute.md",1715801015345] \ No newline at end of file diff --git a/modules/publication/automating_software_publication/index.html b/modules/publication/automating_software_publication/index.html index cb062d6d..b0f847e1 100644 --- a/modules/publication/automating_software_publication/index.html +++ b/modules/publication/automating_software_publication/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - - + + -

    Module: publication

    Automating software publication

    Most of the steps in the modern software publishing pipeline can be automated.

    An example with github-zenodo integration

    1. Choose a software repository on github that you own (either existing, or create a new one).
    2. Navigate to <zenodo.org>
    3. Log in with your zenodo account (create a new one if necessary)
    4. Navigate to the "GitHub" tab, located in a drop-down menu under your username
    5. Follow the instructions there to link your GitHub account with Zenodo (if not already done)
    6. Look through the list of repositories listed until you find the one you wanted to archive
    7. Flip the toggle on the right to "ON"
    8. Go back to your repository on github.com and make a new release. Zenodo will automatically archive this release.
    9. Add the zenodo badge for your repository to the README file.
    - \ No newline at end of file +

    Module: publication

    Automating software publication

    Most of the steps in the modern software publishing pipeline can be automated.

    An example with github-zenodo integration

    1. Choose a software repository on github that you own (either existing, or create a new one).
    2. Navigate to <zenodo.org>
    3. Log in with your zenodo account (create a new one if necessary)
    4. Navigate to the "GitHub" tab, located in a drop-down menu under your username
    5. Follow the instructions there to link your GitHub account with Zenodo (if not already done)
    6. Look through the list of repositories listed until you find the one you wanted to archive
    7. Flip the toggle on the right to "ON"
    8. Go back to your repository on github.com and make a new release. Zenodo will automatically archive this release.
    9. Add the zenodo badge for your repository to the README file.
    + \ No newline at end of file diff --git a/modules/publication/discussion/_payload.json b/modules/publication/discussion/_payload.json index 754a19d0..50092cea 100644 --- a/modules/publication/discussion/_payload.json +++ b/modules/publication/discussion/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":217},["Reactive",2],{"content-query-pEaaMxdYPA":3,"content-query-AT44bg6JPw":49},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":44,"_id":45,"_source":46,"_file":47,"_extension":48},"/modules/publication/discussion","publication",false,"","Discussion","reading",1,{"type":12,"children":13,"toc":40},"root",[14,22,29,35],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"discussion",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"before-we-dive-in",[27],{"type":21,"value":28},"Before we dive in...",{"type":15,"tag":30,"props":31,"children":32},"p",{},[33],{"type":21,"value":34},"What do you already know about software publication?",{"type":15,"tag":30,"props":36,"children":37},{},[38],{"type":21,"value":39},"Discuss how you would publish a piece of software.",{"title":7,"searchDepth":41,"depth":41,"links":42},2,[43],{"id":25,"depth":41,"text":28},"markdown","local_fs:modules:publication:discussion.md","local_fs","modules/publication/discussion.md","md",[50,84],{"_path":51,"_dir":52,"_draft":6,"_partial":6,"_locale":7,"title":53,"description":7,"body":54,"_type":44,"_id":82,"_source":46,"_file":83,"_extension":48},"/main/about","main","About",{"type":12,"children":55,"toc":78},[56,62,67,73],{"type":15,"tag":23,"props":57,"children":59},{"id":58},"about-the-research-software-support",[60],{"type":21,"value":61},"About the Research Software Support",{"type":15,"tag":30,"props":63,"children":64},{},[65],{"type":21,"value":66},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":68,"children":70},{"id":69},"target-audience",[71],{"type":21,"value":72},"Target audience",{"type":15,"tag":30,"props":74,"children":75},{},[76],{"type":21,"value":77},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":41,"depth":41,"links":79},[80,81],{"id":58,"depth":41,"text":61},{"id":69,"depth":41,"text":72},"local_fs:main:about.md","main/about.md",{"_path":85,"_dir":52,"_draft":6,"_partial":6,"_locale":7,"title":86,"description":7,"body":87,"_type":44,"_id":215,"_source":46,"_file":216,"_extension":48},"/main/contribute","Contribute",{"type":12,"children":88,"toc":209},[89,95,100,107,112],{"type":15,"tag":23,"props":90,"children":92},{"id":91},"contributing-to-the-research-software-support",[93],{"type":21,"value":94},"Contributing to the Research Software Support",{"type":15,"tag":30,"props":96,"children":97},{},[98],{"type":21,"value":99},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":101,"props":102,"children":104},"h3",{"id":103},"what-can-i-do",[105],{"type":21,"value":106},"What can I do?",{"type":15,"tag":30,"props":108,"children":109},{},[110],{"type":21,"value":111},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":113,"props":114,"children":115},"ul",{},[116,133,174,197],{"type":15,"tag":117,"props":118,"children":119},"li",{},[120,122,131],{"type":21,"value":121},"Contribute to the content discussion in the ",{"type":15,"tag":123,"props":124,"children":128},"a",{"href":125,"rel":126},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[127],"nofollow",[129],{"type":21,"value":130},"chapter issues",{"type":21,"value":132},", e.g. by listing good resources for information.",{"type":15,"tag":117,"props":134,"children":135},{},[136,142,144],{"type":15,"tag":123,"props":137,"children":139},{"href":138},"#elements-of-a-module",[140],{"type":21,"value":141},"Author a lesson",{"type":21,"value":143},", e.g. by:\n",{"type":15,"tag":113,"props":145,"children":146},{},[147,156,165],{"type":15,"tag":117,"props":148,"children":149},{},[150],{"type":15,"tag":123,"props":151,"children":153},{"href":152},"#slides",[154],{"type":21,"value":155},"Creating slides",{"type":15,"tag":117,"props":157,"children":158},{},[159],{"type":15,"tag":123,"props":160,"children":162},{"href":161},"#exercises",[163],{"type":21,"value":164},"Designing an exercise",{"type":15,"tag":117,"props":166,"children":167},{},[168],{"type":15,"tag":123,"props":169,"children":171},{"href":170},"#online-resources",[172],{"type":21,"value":173},"Curating online resources",{"type":15,"tag":117,"props":175,"children":176},{},[177,179,186,188,195],{"type":21,"value":178},"Review a lesson module; both by looking at ",{"type":15,"tag":123,"props":180,"children":183},{"href":181,"rel":182},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[127],[184],{"type":21,"value":185},"open PRs",{"type":21,"value":187},", as well as flagging issues for improvement in the ",{"type":15,"tag":123,"props":189,"children":192},{"href":190,"rel":191},"https://esciencecenter-digital-skills.github.io/research-software-support/",[127],[193],{"type":21,"value":194},"existing content",{"type":21,"value":196},".",{"type":15,"tag":117,"props":198,"children":199},{},[200,207],{"type":15,"tag":123,"props":201,"children":204},{"href":202,"rel":203},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[127],[205],{"type":21,"value":206},"Provide feedback",{"type":21,"value":208}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":41,"depth":41,"links":210},[211],{"id":91,"depth":41,"text":94,"children":212},[213],{"id":103,"depth":214,"text":106},3,"local_fs:main:contribute.md","main/contribute.md",1715800938118] \ No newline at end of file +[{"data":1,"prerenderedAt":217},["Reactive",2],{"content-query-pEaaMxdYPA":3,"content-query-AT44bg6JPw":49},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":44,"_id":45,"_source":46,"_file":47,"_extension":48},"/modules/publication/discussion","publication",false,"","Discussion","reading",1,{"type":12,"children":13,"toc":40},"root",[14,22,29,35],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"discussion",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"before-we-dive-in",[27],{"type":21,"value":28},"Before we dive in...",{"type":15,"tag":30,"props":31,"children":32},"p",{},[33],{"type":21,"value":34},"What do you already know about software publication?",{"type":15,"tag":30,"props":36,"children":37},{},[38],{"type":21,"value":39},"Discuss how you would publish a piece of software.",{"title":7,"searchDepth":41,"depth":41,"links":42},2,[43],{"id":25,"depth":41,"text":28},"markdown","local_fs:modules:publication:discussion.md","local_fs","modules/publication/discussion.md","md",[50,84],{"_path":51,"_dir":52,"_draft":6,"_partial":6,"_locale":7,"title":53,"description":7,"body":54,"_type":44,"_id":82,"_source":46,"_file":83,"_extension":48},"/main/about","main","About",{"type":12,"children":55,"toc":78},[56,62,67,73],{"type":15,"tag":23,"props":57,"children":59},{"id":58},"about-the-research-software-support",[60],{"type":21,"value":61},"About the Research Software Support",{"type":15,"tag":30,"props":63,"children":64},{},[65],{"type":21,"value":66},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":68,"children":70},{"id":69},"target-audience",[71],{"type":21,"value":72},"Target audience",{"type":15,"tag":30,"props":74,"children":75},{},[76],{"type":21,"value":77},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":41,"depth":41,"links":79},[80,81],{"id":58,"depth":41,"text":61},{"id":69,"depth":41,"text":72},"local_fs:main:about.md","main/about.md",{"_path":85,"_dir":52,"_draft":6,"_partial":6,"_locale":7,"title":86,"description":7,"body":87,"_type":44,"_id":215,"_source":46,"_file":216,"_extension":48},"/main/contribute","Contribute",{"type":12,"children":88,"toc":209},[89,95,100,107,112],{"type":15,"tag":23,"props":90,"children":92},{"id":91},"contributing-to-the-research-software-support",[93],{"type":21,"value":94},"Contributing to the Research Software Support",{"type":15,"tag":30,"props":96,"children":97},{},[98],{"type":21,"value":99},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":101,"props":102,"children":104},"h3",{"id":103},"what-can-i-do",[105],{"type":21,"value":106},"What can I do?",{"type":15,"tag":30,"props":108,"children":109},{},[110],{"type":21,"value":111},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":113,"props":114,"children":115},"ul",{},[116,133,174,197],{"type":15,"tag":117,"props":118,"children":119},"li",{},[120,122,131],{"type":21,"value":121},"Contribute to the content discussion in the ",{"type":15,"tag":123,"props":124,"children":128},"a",{"href":125,"rel":126},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[127],"nofollow",[129],{"type":21,"value":130},"chapter issues",{"type":21,"value":132},", e.g. by listing good resources for information.",{"type":15,"tag":117,"props":134,"children":135},{},[136,142,144],{"type":15,"tag":123,"props":137,"children":139},{"href":138},"#elements-of-a-module",[140],{"type":21,"value":141},"Author a lesson",{"type":21,"value":143},", e.g. by:\n",{"type":15,"tag":113,"props":145,"children":146},{},[147,156,165],{"type":15,"tag":117,"props":148,"children":149},{},[150],{"type":15,"tag":123,"props":151,"children":153},{"href":152},"#slides",[154],{"type":21,"value":155},"Creating slides",{"type":15,"tag":117,"props":157,"children":158},{},[159],{"type":15,"tag":123,"props":160,"children":162},{"href":161},"#exercises",[163],{"type":21,"value":164},"Designing an exercise",{"type":15,"tag":117,"props":166,"children":167},{},[168],{"type":15,"tag":123,"props":169,"children":171},{"href":170},"#online-resources",[172],{"type":21,"value":173},"Curating online resources",{"type":15,"tag":117,"props":175,"children":176},{},[177,179,186,188,195],{"type":21,"value":178},"Review a lesson module; both by looking at ",{"type":15,"tag":123,"props":180,"children":183},{"href":181,"rel":182},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[127],[184],{"type":21,"value":185},"open PRs",{"type":21,"value":187},", as well as flagging issues for improvement in the ",{"type":15,"tag":123,"props":189,"children":192},{"href":190,"rel":191},"https://esciencecenter-digital-skills.github.io/research-software-support/",[127],[193],{"type":21,"value":194},"existing content",{"type":21,"value":196},".",{"type":15,"tag":117,"props":198,"children":199},{},[200,207],{"type":15,"tag":123,"props":201,"children":204},{"href":202,"rel":203},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[127],[205],{"type":21,"value":206},"Provide feedback",{"type":21,"value":208}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":41,"depth":41,"links":210},[211],{"id":91,"depth":41,"text":94,"children":212},[213],{"id":103,"depth":214,"text":106},3,"local_fs:main:contribute.md","main/contribute.md",1715801015308] \ No newline at end of file diff --git a/modules/publication/discussion/index.html b/modules/publication/discussion/index.html index b323a8a4..2b29c3c6 100644 --- a/modules/publication/discussion/index.html +++ b/modules/publication/discussion/index.html @@ -2,7 +2,7 @@ Discussion - + - - - - - - - - + + + + + + + + - - - - - + + + + + - - + + -

    Module: publication

    Discussion

    Before we dive in...

    What do you already know about software publication?

    Discuss how you would publish a piece of software.

    - \ No newline at end of file +

    Module: publication

    Discussion

    Before we dive in...

    What do you already know about software publication?

    Discuss how you would publish a piece of software.

    + \ No newline at end of file diff --git a/modules/publication/ex_registries/_payload.json b/modules/publication/ex_registries/_payload.json index fa31e11e..90af28fe 100644 --- a/modules/publication/ex_registries/_payload.json +++ b/modules/publication/ex_registries/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":308},["Reactive",2],{"content-query-avhrrcPOHw":3,"content-query-AT44bg6JPw":143},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":138,"_id":139,"_source":140,"_file":141,"_extension":142},"/modules/publication/ex_registries","publication",false,"","Find your registry","Software registries are an important player in the findability of research software.\nA collection of software registries can be found here: Research Software Registries Awesome List","exercise",5,{"type":13,"children":14,"toc":135},"root",[15,24,39,44,99,104],{"type":16,"tag":17,"props":18,"children":20},"element","h1",{"id":19},"exercise-find-your-registry",[21],{"type":22,"value":23},"text","Exercise: Find your registry",{"type":16,"tag":25,"props":26,"children":27},"p",{},[28,30],{"type":22,"value":29},"Software registries are an important player in the findability of research software.\nA collection of software registries can be found here: ",{"type":16,"tag":31,"props":32,"children":36},"a",{"href":33,"rel":34},"https://github.com/NLeSC/awesome-research-software-registries",[35],"nofollow",[37],{"type":22,"value":38},"Research Software Registries Awesome List",{"type":16,"tag":25,"props":40,"children":41},{},[42],{"type":22,"value":43},"Choose a piece of research software that you know, or pick one of the packages in this list:",{"type":16,"tag":45,"props":46,"children":47},"ul",{},[48,59,69,79,89],{"type":16,"tag":49,"props":50,"children":51},"li",{},[52],{"type":16,"tag":31,"props":53,"children":56},{"href":54,"rel":55},"https://research-software-directory.org/software/xenon",[35],[57],{"type":22,"value":58},"Xenon",{"type":16,"tag":49,"props":60,"children":61},{},[62],{"type":16,"tag":31,"props":63,"children":66},{"href":64,"rel":65},"https://research-software-directory.org/software/esmvaltool",[35],[67],{"type":22,"value":68},"ESMValTool",{"type":16,"tag":49,"props":70,"children":71},{},[72],{"type":16,"tag":31,"props":73,"children":76},{"href":74,"rel":75},"https://research-software-directory.org/projects/rs-dat",[35],[77],{"type":22,"value":78},"RS-DAT",{"type":16,"tag":49,"props":80,"children":81},{},[82],{"type":16,"tag":31,"props":83,"children":86},{"href":84,"rel":85},"https://research-software-directory.org/software/haddock3",[35],[87],{"type":22,"value":88},"Haddock",{"type":16,"tag":49,"props":90,"children":91},{},[92],{"type":16,"tag":31,"props":93,"children":96},{"href":94,"rel":95},"https://cjvanlissa.github.io/worcs/index.html",[35],[97],{"type":22,"value":98},"worcs",{"type":16,"tag":25,"props":100,"children":101},{},[102],{"type":22,"value":103},"In teams:",{"type":16,"tag":105,"props":106,"children":107},"ol",{},[108,113,125,130],{"type":16,"tag":49,"props":109,"children":110},{},[111],{"type":22,"value":112},"Find out what the software is about if you don't already know.",{"type":16,"tag":49,"props":114,"children":115},{},[116,118,123],{"type":22,"value":117},"Look by yourself (without looking at your team mates) in the ",{"type":16,"tag":31,"props":119,"children":121},{"href":33,"rel":120},[35],[122],{"type":22,"value":38},{"type":22,"value":124}," for a registry that is suitable for your chosen piece of software.",{"type":16,"tag":49,"props":126,"children":127},{},[128],{"type":22,"value":129},"Discuss with your partner(s) why you chose that registry.",{"type":16,"tag":49,"props":131,"children":132},{},[133],{"type":22,"value":134},"Investigate the requirements for your chosen registry. What should the software and its documentation adhere to, to be added to the registry?",{"title":7,"searchDepth":136,"depth":136,"links":137},2,[],"markdown","local_fs:modules:publication:ex_registries.md","local_fs","modules/publication/ex_registries.md","md",[144,179],{"_path":145,"_dir":146,"_draft":6,"_partial":6,"_locale":7,"title":147,"description":7,"body":148,"_type":138,"_id":177,"_source":140,"_file":178,"_extension":142},"/main/about","main","About",{"type":13,"children":149,"toc":173},[150,157,162,168],{"type":16,"tag":151,"props":152,"children":154},"h2",{"id":153},"about-the-research-software-support",[155],{"type":22,"value":156},"About the Research Software Support",{"type":16,"tag":25,"props":158,"children":159},{},[160],{"type":22,"value":161},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":151,"props":163,"children":165},{"id":164},"target-audience",[166],{"type":22,"value":167},"Target audience",{"type":16,"tag":25,"props":169,"children":170},{},[171],{"type":22,"value":172},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":136,"depth":136,"links":174},[175,176],{"id":153,"depth":136,"text":156},{"id":164,"depth":136,"text":167},"local_fs:main:about.md","main/about.md",{"_path":180,"_dir":146,"_draft":6,"_partial":6,"_locale":7,"title":181,"description":7,"body":182,"_type":138,"_id":306,"_source":140,"_file":307,"_extension":142},"/main/contribute","Contribute",{"type":13,"children":183,"toc":300},[184,190,195,202,207],{"type":16,"tag":151,"props":185,"children":187},{"id":186},"contributing-to-the-research-software-support",[188],{"type":22,"value":189},"Contributing to the Research Software Support",{"type":16,"tag":25,"props":191,"children":192},{},[193],{"type":22,"value":194},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":196,"props":197,"children":199},"h3",{"id":198},"what-can-i-do",[200],{"type":22,"value":201},"What can I do?",{"type":16,"tag":25,"props":203,"children":204},{},[205],{"type":22,"value":206},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":45,"props":208,"children":209},{},[210,224,265,288],{"type":16,"tag":49,"props":211,"children":212},{},[213,215,222],{"type":22,"value":214},"Contribute to the content discussion in the ",{"type":16,"tag":31,"props":216,"children":219},{"href":217,"rel":218},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[35],[220],{"type":22,"value":221},"chapter issues",{"type":22,"value":223},", e.g. by listing good resources for information.",{"type":16,"tag":49,"props":225,"children":226},{},[227,233,235],{"type":16,"tag":31,"props":228,"children":230},{"href":229},"#elements-of-a-module",[231],{"type":22,"value":232},"Author a lesson",{"type":22,"value":234},", e.g. by:\n",{"type":16,"tag":45,"props":236,"children":237},{},[238,247,256],{"type":16,"tag":49,"props":239,"children":240},{},[241],{"type":16,"tag":31,"props":242,"children":244},{"href":243},"#slides",[245],{"type":22,"value":246},"Creating slides",{"type":16,"tag":49,"props":248,"children":249},{},[250],{"type":16,"tag":31,"props":251,"children":253},{"href":252},"#exercises",[254],{"type":22,"value":255},"Designing an exercise",{"type":16,"tag":49,"props":257,"children":258},{},[259],{"type":16,"tag":31,"props":260,"children":262},{"href":261},"#online-resources",[263],{"type":22,"value":264},"Curating online resources",{"type":16,"tag":49,"props":266,"children":267},{},[268,270,277,279,286],{"type":22,"value":269},"Review a lesson module; both by looking at ",{"type":16,"tag":31,"props":271,"children":274},{"href":272,"rel":273},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[35],[275],{"type":22,"value":276},"open PRs",{"type":22,"value":278},", as well as flagging issues for improvement in the ",{"type":16,"tag":31,"props":280,"children":283},{"href":281,"rel":282},"https://esciencecenter-digital-skills.github.io/research-software-support/",[35],[284],{"type":22,"value":285},"existing content",{"type":22,"value":287},".",{"type":16,"tag":49,"props":289,"children":290},{},[291,298],{"type":16,"tag":31,"props":292,"children":295},{"href":293,"rel":294},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[35],[296],{"type":22,"value":297},"Provide feedback",{"type":22,"value":299}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":136,"depth":136,"links":301},[302],{"id":186,"depth":136,"text":189,"children":303},[304],{"id":198,"depth":305,"text":201},3,"local_fs:main:contribute.md","main/contribute.md",1715800938150] \ No newline at end of file +[{"data":1,"prerenderedAt":308},["Reactive",2],{"content-query-avhrrcPOHw":3,"content-query-AT44bg6JPw":143},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":138,"_id":139,"_source":140,"_file":141,"_extension":142},"/modules/publication/ex_registries","publication",false,"","Find your registry","Software registries are an important player in the findability of research software.\nA collection of software registries can be found here: Research Software Registries Awesome List","exercise",5,{"type":13,"children":14,"toc":135},"root",[15,24,39,44,99,104],{"type":16,"tag":17,"props":18,"children":20},"element","h1",{"id":19},"exercise-find-your-registry",[21],{"type":22,"value":23},"text","Exercise: Find your registry",{"type":16,"tag":25,"props":26,"children":27},"p",{},[28,30],{"type":22,"value":29},"Software registries are an important player in the findability of research software.\nA collection of software registries can be found here: ",{"type":16,"tag":31,"props":32,"children":36},"a",{"href":33,"rel":34},"https://github.com/NLeSC/awesome-research-software-registries",[35],"nofollow",[37],{"type":22,"value":38},"Research Software Registries Awesome List",{"type":16,"tag":25,"props":40,"children":41},{},[42],{"type":22,"value":43},"Choose a piece of research software that you know, or pick one of the packages in this list:",{"type":16,"tag":45,"props":46,"children":47},"ul",{},[48,59,69,79,89],{"type":16,"tag":49,"props":50,"children":51},"li",{},[52],{"type":16,"tag":31,"props":53,"children":56},{"href":54,"rel":55},"https://research-software-directory.org/software/xenon",[35],[57],{"type":22,"value":58},"Xenon",{"type":16,"tag":49,"props":60,"children":61},{},[62],{"type":16,"tag":31,"props":63,"children":66},{"href":64,"rel":65},"https://research-software-directory.org/software/esmvaltool",[35],[67],{"type":22,"value":68},"ESMValTool",{"type":16,"tag":49,"props":70,"children":71},{},[72],{"type":16,"tag":31,"props":73,"children":76},{"href":74,"rel":75},"https://research-software-directory.org/projects/rs-dat",[35],[77],{"type":22,"value":78},"RS-DAT",{"type":16,"tag":49,"props":80,"children":81},{},[82],{"type":16,"tag":31,"props":83,"children":86},{"href":84,"rel":85},"https://research-software-directory.org/software/haddock3",[35],[87],{"type":22,"value":88},"Haddock",{"type":16,"tag":49,"props":90,"children":91},{},[92],{"type":16,"tag":31,"props":93,"children":96},{"href":94,"rel":95},"https://cjvanlissa.github.io/worcs/index.html",[35],[97],{"type":22,"value":98},"worcs",{"type":16,"tag":25,"props":100,"children":101},{},[102],{"type":22,"value":103},"In teams:",{"type":16,"tag":105,"props":106,"children":107},"ol",{},[108,113,125,130],{"type":16,"tag":49,"props":109,"children":110},{},[111],{"type":22,"value":112},"Find out what the software is about if you don't already know.",{"type":16,"tag":49,"props":114,"children":115},{},[116,118,123],{"type":22,"value":117},"Look by yourself (without looking at your team mates) in the ",{"type":16,"tag":31,"props":119,"children":121},{"href":33,"rel":120},[35],[122],{"type":22,"value":38},{"type":22,"value":124}," for a registry that is suitable for your chosen piece of software.",{"type":16,"tag":49,"props":126,"children":127},{},[128],{"type":22,"value":129},"Discuss with your partner(s) why you chose that registry.",{"type":16,"tag":49,"props":131,"children":132},{},[133],{"type":22,"value":134},"Investigate the requirements for your chosen registry. What should the software and its documentation adhere to, to be added to the registry?",{"title":7,"searchDepth":136,"depth":136,"links":137},2,[],"markdown","local_fs:modules:publication:ex_registries.md","local_fs","modules/publication/ex_registries.md","md",[144,179],{"_path":145,"_dir":146,"_draft":6,"_partial":6,"_locale":7,"title":147,"description":7,"body":148,"_type":138,"_id":177,"_source":140,"_file":178,"_extension":142},"/main/about","main","About",{"type":13,"children":149,"toc":173},[150,157,162,168],{"type":16,"tag":151,"props":152,"children":154},"h2",{"id":153},"about-the-research-software-support",[155],{"type":22,"value":156},"About the Research Software Support",{"type":16,"tag":25,"props":158,"children":159},{},[160],{"type":22,"value":161},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":151,"props":163,"children":165},{"id":164},"target-audience",[166],{"type":22,"value":167},"Target audience",{"type":16,"tag":25,"props":169,"children":170},{},[171],{"type":22,"value":172},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":136,"depth":136,"links":174},[175,176],{"id":153,"depth":136,"text":156},{"id":164,"depth":136,"text":167},"local_fs:main:about.md","main/about.md",{"_path":180,"_dir":146,"_draft":6,"_partial":6,"_locale":7,"title":181,"description":7,"body":182,"_type":138,"_id":306,"_source":140,"_file":307,"_extension":142},"/main/contribute","Contribute",{"type":13,"children":183,"toc":300},[184,190,195,202,207],{"type":16,"tag":151,"props":185,"children":187},{"id":186},"contributing-to-the-research-software-support",[188],{"type":22,"value":189},"Contributing to the Research Software Support",{"type":16,"tag":25,"props":191,"children":192},{},[193],{"type":22,"value":194},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":196,"props":197,"children":199},"h3",{"id":198},"what-can-i-do",[200],{"type":22,"value":201},"What can I do?",{"type":16,"tag":25,"props":203,"children":204},{},[205],{"type":22,"value":206},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":45,"props":208,"children":209},{},[210,224,265,288],{"type":16,"tag":49,"props":211,"children":212},{},[213,215,222],{"type":22,"value":214},"Contribute to the content discussion in the ",{"type":16,"tag":31,"props":216,"children":219},{"href":217,"rel":218},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[35],[220],{"type":22,"value":221},"chapter issues",{"type":22,"value":223},", e.g. by listing good resources for information.",{"type":16,"tag":49,"props":225,"children":226},{},[227,233,235],{"type":16,"tag":31,"props":228,"children":230},{"href":229},"#elements-of-a-module",[231],{"type":22,"value":232},"Author a lesson",{"type":22,"value":234},", e.g. by:\n",{"type":16,"tag":45,"props":236,"children":237},{},[238,247,256],{"type":16,"tag":49,"props":239,"children":240},{},[241],{"type":16,"tag":31,"props":242,"children":244},{"href":243},"#slides",[245],{"type":22,"value":246},"Creating slides",{"type":16,"tag":49,"props":248,"children":249},{},[250],{"type":16,"tag":31,"props":251,"children":253},{"href":252},"#exercises",[254],{"type":22,"value":255},"Designing an exercise",{"type":16,"tag":49,"props":257,"children":258},{},[259],{"type":16,"tag":31,"props":260,"children":262},{"href":261},"#online-resources",[263],{"type":22,"value":264},"Curating online resources",{"type":16,"tag":49,"props":266,"children":267},{},[268,270,277,279,286],{"type":22,"value":269},"Review a lesson module; both by looking at ",{"type":16,"tag":31,"props":271,"children":274},{"href":272,"rel":273},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[35],[275],{"type":22,"value":276},"open PRs",{"type":22,"value":278},", as well as flagging issues for improvement in the ",{"type":16,"tag":31,"props":280,"children":283},{"href":281,"rel":282},"https://esciencecenter-digital-skills.github.io/research-software-support/",[35],[284],{"type":22,"value":285},"existing content",{"type":22,"value":287},".",{"type":16,"tag":49,"props":289,"children":290},{},[291,298],{"type":16,"tag":31,"props":292,"children":295},{"href":293,"rel":294},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[35],[296],{"type":22,"value":297},"Provide feedback",{"type":22,"value":299}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":136,"depth":136,"links":301},[302],{"id":186,"depth":136,"text":189,"children":303},[304],{"id":198,"depth":305,"text":201},3,"local_fs:main:contribute.md","main/contribute.md",1715801015363] \ No newline at end of file diff --git a/modules/publication/ex_registries/index.html b/modules/publication/ex_registries/index.html index a2d2c0f0..1c9f37f9 100644 --- a/modules/publication/ex_registries/index.html +++ b/modules/publication/ex_registries/index.html @@ -6,7 +6,7 @@ A collection of software registries can be found here: Research Software Registries Awesome List"> - + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - + + -

    Module: publication

    Exercise: Find your registry

    Software registries are an important player in the findability of research software. -A collection of software registries can be found here: Research Software Registries Awesome List

    Choose a piece of research software that you know, or pick one of the packages in this list:

    In teams:

    1. Find out what the software is about if you don't already know.
    2. Look by yourself (without looking at your team mates) in the Research Software Registries Awesome List for a registry that is suitable for your chosen piece of software.
    3. Discuss with your partner(s) why you chose that registry.
    4. Investigate the requirements for your chosen registry. What should the software and its documentation adhere to, to be added to the registry?
    - \ No newline at end of file +

    Module: publication

    Exercise: Find your registry

    Software registries are an important player in the findability of research software. +A collection of software registries can be found here: Research Software Registries Awesome List

    Choose a piece of research software that you know, or pick one of the packages in this list:

    In teams:

    1. Find out what the software is about if you don't already know.
    2. Look by yourself (without looking at your team mates) in the Research Software Registries Awesome List for a registry that is suitable for your chosen piece of software.
    3. Discuss with your partner(s) why you chose that registry.
    4. Investigate the requirements for your chosen registry. What should the software and its documentation adhere to, to be added to the registry?
    + \ No newline at end of file diff --git a/modules/publication/info/_payload.json b/modules/publication/info/_payload.json index 90130e56..478dce25 100644 --- a/modules/publication/info/_payload.json +++ b/modules/publication/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-EatUFEUN2B":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/publication/info","publication",false,"","Learning objectives","Learning objectives for the Software Publication module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:publication:info.md","local_fs","modules/publication/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715800937078] \ No newline at end of file +[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-EatUFEUN2B":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/publication/info","publication",false,"","Learning objectives","Learning objectives for the Software Publication module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:publication:info.md","local_fs","modules/publication/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715801014247] \ No newline at end of file diff --git a/modules/publication/info/index.html b/modules/publication/info/index.html index 88568e2e..74ab5921 100644 --- a/modules/publication/info/index.html +++ b/modules/publication/info/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - + + + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/publication/reading/_payload.json b/modules/publication/reading/_payload.json index 33e01f86..6f350fb4 100644 --- a/modules/publication/reading/_payload.json +++ b/modules/publication/reading/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":263},["Reactive",2],{"content-query-x6BYKm3GDC":3,"content-query-AT44bg6JPw":99},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":94,"_id":95,"_source":96,"_file":97,"_extension":98},"/modules/publication/reading","publication",false,"","Reading material","Follow the links below to read more about software publication.","reading",6,{"type":13,"children":14,"toc":87},"root",[15,23,28,35,51,57,69,75],{"type":16,"tag":17,"props":18,"children":20},"element","h1",{"id":19},"reading-material",[21],{"type":22,"value":8},"text",{"type":16,"tag":24,"props":25,"children":26},"p",{},[27],{"type":22,"value":9},{"type":16,"tag":29,"props":30,"children":32},"h3",{"id":31},"the-turing-way",[33],{"type":22,"value":34},"The Turing Way",{"type":16,"tag":24,"props":36,"children":37},{},[38,40,49],{"type":22,"value":39},"Read in the Turing Way about ",{"type":16,"tag":41,"props":42,"children":46},"a",{"href":43,"rel":44},"https://the-turing-way.netlify.app/communication/citable",[45],"nofollow",[47],{"type":22,"value":48},"Making Research Objects Citable",{"type":22,"value":50},".",{"type":16,"tag":29,"props":52,"children":54},{"id":53},"code-refinery",[55],{"type":22,"value":56},"Code Refinery",{"type":16,"tag":24,"props":58,"children":59},{},[60,62],{"type":22,"value":61},"Read in CodeRefinery about ",{"type":16,"tag":41,"props":63,"children":66},{"href":64,"rel":65},"https://coderefinery.github.io/social-coding/software-citation/",[45],[67],{"type":22,"value":68},"Social coding and open software",{"type":16,"tag":29,"props":70,"children":72},{"id":71},"peerj-computer-science",[73],{"type":22,"value":74},"PeerJ Computer Science",{"type":16,"tag":24,"props":76,"children":77},{},[78,80],{"type":22,"value":79},"Read this interesting article about ",{"type":16,"tag":41,"props":81,"children":84},{"href":82,"rel":83},"https://doi.org/10.7717/peerj-cs.86",[45],[85],{"type":22,"value":86},"Software citation principles",{"title":7,"searchDepth":88,"depth":88,"links":89},2,[90,92,93],{"id":31,"depth":91,"text":34},3,{"id":53,"depth":91,"text":56},{"id":71,"depth":91,"text":74},"markdown","local_fs:modules:publication:reading.md","local_fs","modules/publication/reading.md","md",[100,135],{"_path":101,"_dir":102,"_draft":6,"_partial":6,"_locale":7,"title":103,"description":7,"body":104,"_type":94,"_id":133,"_source":96,"_file":134,"_extension":98},"/main/about","main","About",{"type":13,"children":105,"toc":129},[106,113,118,124],{"type":16,"tag":107,"props":108,"children":110},"h2",{"id":109},"about-the-research-software-support",[111],{"type":22,"value":112},"About the Research Software Support",{"type":16,"tag":24,"props":114,"children":115},{},[116],{"type":22,"value":117},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":107,"props":119,"children":121},{"id":120},"target-audience",[122],{"type":22,"value":123},"Target audience",{"type":16,"tag":24,"props":125,"children":126},{},[127],{"type":22,"value":128},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":88,"depth":88,"links":130},[131,132],{"id":109,"depth":88,"text":112},{"id":120,"depth":88,"text":123},"local_fs:main:about.md","main/about.md",{"_path":136,"_dir":102,"_draft":6,"_partial":6,"_locale":7,"title":137,"description":7,"body":138,"_type":94,"_id":261,"_source":96,"_file":262,"_extension":98},"/main/contribute","Contribute",{"type":13,"children":139,"toc":256},[140,146,151,157,162],{"type":16,"tag":107,"props":141,"children":143},{"id":142},"contributing-to-the-research-software-support",[144],{"type":22,"value":145},"Contributing to the Research Software Support",{"type":16,"tag":24,"props":147,"children":148},{},[149],{"type":22,"value":150},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":29,"props":152,"children":154},{"id":153},"what-can-i-do",[155],{"type":22,"value":156},"What can I do?",{"type":16,"tag":24,"props":158,"children":159},{},[160],{"type":22,"value":161},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":163,"props":164,"children":165},"ul",{},[166,181,222,244],{"type":16,"tag":167,"props":168,"children":169},"li",{},[170,172,179],{"type":22,"value":171},"Contribute to the content discussion in the ",{"type":16,"tag":41,"props":173,"children":176},{"href":174,"rel":175},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[45],[177],{"type":22,"value":178},"chapter issues",{"type":22,"value":180},", e.g. by listing good resources for information.",{"type":16,"tag":167,"props":182,"children":183},{},[184,190,192],{"type":16,"tag":41,"props":185,"children":187},{"href":186},"#elements-of-a-module",[188],{"type":22,"value":189},"Author a lesson",{"type":22,"value":191},", e.g. by:\n",{"type":16,"tag":163,"props":193,"children":194},{},[195,204,213],{"type":16,"tag":167,"props":196,"children":197},{},[198],{"type":16,"tag":41,"props":199,"children":201},{"href":200},"#slides",[202],{"type":22,"value":203},"Creating slides",{"type":16,"tag":167,"props":205,"children":206},{},[207],{"type":16,"tag":41,"props":208,"children":210},{"href":209},"#exercises",[211],{"type":22,"value":212},"Designing an exercise",{"type":16,"tag":167,"props":214,"children":215},{},[216],{"type":16,"tag":41,"props":217,"children":219},{"href":218},"#online-resources",[220],{"type":22,"value":221},"Curating online resources",{"type":16,"tag":167,"props":223,"children":224},{},[225,227,234,236,243],{"type":22,"value":226},"Review a lesson module; both by looking at ",{"type":16,"tag":41,"props":228,"children":231},{"href":229,"rel":230},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[45],[232],{"type":22,"value":233},"open PRs",{"type":22,"value":235},", as well as flagging issues for improvement in the ",{"type":16,"tag":41,"props":237,"children":240},{"href":238,"rel":239},"https://esciencecenter-digital-skills.github.io/research-software-support/",[45],[241],{"type":22,"value":242},"existing content",{"type":22,"value":50},{"type":16,"tag":167,"props":245,"children":246},{},[247,254],{"type":16,"tag":41,"props":248,"children":251},{"href":249,"rel":250},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[45],[252],{"type":22,"value":253},"Provide feedback",{"type":22,"value":255}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":88,"depth":88,"links":257},[258],{"id":142,"depth":88,"text":145,"children":259},[260],{"id":153,"depth":91,"text":156},"local_fs:main:contribute.md","main/contribute.md",1715800938153] \ No newline at end of file +[{"data":1,"prerenderedAt":263},["Reactive",2],{"content-query-x6BYKm3GDC":3,"content-query-AT44bg6JPw":99},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":94,"_id":95,"_source":96,"_file":97,"_extension":98},"/modules/publication/reading","publication",false,"","Reading material","Follow the links below to read more about software publication.","reading",6,{"type":13,"children":14,"toc":87},"root",[15,23,28,35,51,57,69,75],{"type":16,"tag":17,"props":18,"children":20},"element","h1",{"id":19},"reading-material",[21],{"type":22,"value":8},"text",{"type":16,"tag":24,"props":25,"children":26},"p",{},[27],{"type":22,"value":9},{"type":16,"tag":29,"props":30,"children":32},"h3",{"id":31},"the-turing-way",[33],{"type":22,"value":34},"The Turing Way",{"type":16,"tag":24,"props":36,"children":37},{},[38,40,49],{"type":22,"value":39},"Read in the Turing Way about ",{"type":16,"tag":41,"props":42,"children":46},"a",{"href":43,"rel":44},"https://the-turing-way.netlify.app/communication/citable",[45],"nofollow",[47],{"type":22,"value":48},"Making Research Objects Citable",{"type":22,"value":50},".",{"type":16,"tag":29,"props":52,"children":54},{"id":53},"code-refinery",[55],{"type":22,"value":56},"Code Refinery",{"type":16,"tag":24,"props":58,"children":59},{},[60,62],{"type":22,"value":61},"Read in CodeRefinery about ",{"type":16,"tag":41,"props":63,"children":66},{"href":64,"rel":65},"https://coderefinery.github.io/social-coding/software-citation/",[45],[67],{"type":22,"value":68},"Social coding and open software",{"type":16,"tag":29,"props":70,"children":72},{"id":71},"peerj-computer-science",[73],{"type":22,"value":74},"PeerJ Computer Science",{"type":16,"tag":24,"props":76,"children":77},{},[78,80],{"type":22,"value":79},"Read this interesting article about ",{"type":16,"tag":41,"props":81,"children":84},{"href":82,"rel":83},"https://doi.org/10.7717/peerj-cs.86",[45],[85],{"type":22,"value":86},"Software citation principles",{"title":7,"searchDepth":88,"depth":88,"links":89},2,[90,92,93],{"id":31,"depth":91,"text":34},3,{"id":53,"depth":91,"text":56},{"id":71,"depth":91,"text":74},"markdown","local_fs:modules:publication:reading.md","local_fs","modules/publication/reading.md","md",[100,135],{"_path":101,"_dir":102,"_draft":6,"_partial":6,"_locale":7,"title":103,"description":7,"body":104,"_type":94,"_id":133,"_source":96,"_file":134,"_extension":98},"/main/about","main","About",{"type":13,"children":105,"toc":129},[106,113,118,124],{"type":16,"tag":107,"props":108,"children":110},"h2",{"id":109},"about-the-research-software-support",[111],{"type":22,"value":112},"About the Research Software Support",{"type":16,"tag":24,"props":114,"children":115},{},[116],{"type":22,"value":117},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":107,"props":119,"children":121},{"id":120},"target-audience",[122],{"type":22,"value":123},"Target audience",{"type":16,"tag":24,"props":125,"children":126},{},[127],{"type":22,"value":128},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":88,"depth":88,"links":130},[131,132],{"id":109,"depth":88,"text":112},{"id":120,"depth":88,"text":123},"local_fs:main:about.md","main/about.md",{"_path":136,"_dir":102,"_draft":6,"_partial":6,"_locale":7,"title":137,"description":7,"body":138,"_type":94,"_id":261,"_source":96,"_file":262,"_extension":98},"/main/contribute","Contribute",{"type":13,"children":139,"toc":256},[140,146,151,157,162],{"type":16,"tag":107,"props":141,"children":143},{"id":142},"contributing-to-the-research-software-support",[144],{"type":22,"value":145},"Contributing to the Research Software Support",{"type":16,"tag":24,"props":147,"children":148},{},[149],{"type":22,"value":150},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":29,"props":152,"children":154},{"id":153},"what-can-i-do",[155],{"type":22,"value":156},"What can I do?",{"type":16,"tag":24,"props":158,"children":159},{},[160],{"type":22,"value":161},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":163,"props":164,"children":165},"ul",{},[166,181,222,244],{"type":16,"tag":167,"props":168,"children":169},"li",{},[170,172,179],{"type":22,"value":171},"Contribute to the content discussion in the ",{"type":16,"tag":41,"props":173,"children":176},{"href":174,"rel":175},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[45],[177],{"type":22,"value":178},"chapter issues",{"type":22,"value":180},", e.g. by listing good resources for information.",{"type":16,"tag":167,"props":182,"children":183},{},[184,190,192],{"type":16,"tag":41,"props":185,"children":187},{"href":186},"#elements-of-a-module",[188],{"type":22,"value":189},"Author a lesson",{"type":22,"value":191},", e.g. by:\n",{"type":16,"tag":163,"props":193,"children":194},{},[195,204,213],{"type":16,"tag":167,"props":196,"children":197},{},[198],{"type":16,"tag":41,"props":199,"children":201},{"href":200},"#slides",[202],{"type":22,"value":203},"Creating slides",{"type":16,"tag":167,"props":205,"children":206},{},[207],{"type":16,"tag":41,"props":208,"children":210},{"href":209},"#exercises",[211],{"type":22,"value":212},"Designing an exercise",{"type":16,"tag":167,"props":214,"children":215},{},[216],{"type":16,"tag":41,"props":217,"children":219},{"href":218},"#online-resources",[220],{"type":22,"value":221},"Curating online resources",{"type":16,"tag":167,"props":223,"children":224},{},[225,227,234,236,243],{"type":22,"value":226},"Review a lesson module; both by looking at ",{"type":16,"tag":41,"props":228,"children":231},{"href":229,"rel":230},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[45],[232],{"type":22,"value":233},"open PRs",{"type":22,"value":235},", as well as flagging issues for improvement in the ",{"type":16,"tag":41,"props":237,"children":240},{"href":238,"rel":239},"https://esciencecenter-digital-skills.github.io/research-software-support/",[45],[241],{"type":22,"value":242},"existing content",{"type":22,"value":50},{"type":16,"tag":167,"props":245,"children":246},{},[247,254],{"type":16,"tag":41,"props":248,"children":251},{"href":249,"rel":250},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[45],[252],{"type":22,"value":253},"Provide feedback",{"type":22,"value":255}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":88,"depth":88,"links":257},[258],{"id":142,"depth":88,"text":145,"children":259},[260],{"id":153,"depth":91,"text":156},"local_fs:main:contribute.md","main/contribute.md",1715801015379] \ No newline at end of file diff --git a/modules/publication/reading/index.html b/modules/publication/reading/index.html index 86c351f6..2a53afb7 100644 --- a/modules/publication/reading/index.html +++ b/modules/publication/reading/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - + + -

    Module: publication

    Reading material

    Follow the links below to read more about software publication.

    The Turing Way

    Read in the Turing Way about Making Research Objects Citable.

    Code Refinery

    Read in CodeRefinery about Social coding and open software

    PeerJ Computer Science

    Read this interesting article about Software citation principles

    - \ No newline at end of file +

    Module: publication

    Reading material

    Follow the links below to read more about software publication.

    The Turing Way

    Read in the Turing Way about Making Research Objects Citable.

    Code Refinery

    Read in CodeRefinery about Social coding and open software

    PeerJ Computer Science

    Read this interesting article about Software citation principles

    + \ No newline at end of file diff --git a/modules/publication/slides-publication/_payload.json b/modules/publication/slides-publication/_payload.json index 3e31d5cc..49a51582 100644 --- a/modules/publication/slides-publication/_payload.json +++ b/modules/publication/slides-publication/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":665},["Reactive",2],{"content-query-MDJK2oivIo":3,"content-query-AT44bg6JPw":502},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":497,"_id":498,"_source":499,"_file":500,"_extension":501},"/modules/publication/slides-publication","publication",false,"","Publishing Software","slides",2,{"type":12,"children":13,"toc":477},"root",[14,19,26,29,36,66,72,77,82,85,91,98,111,117,127,131,136,141,144,150,173,179,197,200,206,234,237,242,247,260,265,269,274,277,282,292,296,301,304,309,314,319,324,327,333,338,343,347,352,355,360,365,383,388,391,396,401,424,429,432,438,443,448,451,463,472],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h1",{"id":22},"publishing-software",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":30,"props":31,"children":33},"h2",{"id":32},"what-do-we-mean-by-publishing",[34],{"type":25,"value":35},"What do we mean by publishing?",{"type":15,"tag":37,"props":38,"children":39},"ul",{},[40,61],{"type":15,"tag":41,"props":42,"children":43},"li",{},[44,46,52,54,59],{"type":25,"value":45},"Publishing the ",{"type":15,"tag":47,"props":48,"children":49},"em",{},[50],{"type":25,"value":51},"software itself",{"type":25,"value":53}," (not just publishing an article ",{"type":15,"tag":47,"props":55,"children":56},{},[57],{"type":25,"value":58},"about",{"type":25,"value":60}," it)",{"type":15,"tag":41,"props":62,"children":63},{},[64],{"type":25,"value":65},"There are many ways to do this",{"type":15,"tag":67,"props":68,"children":69},"p",{},[70],{"type":25,"value":71},"Note:",{"type":15,"tag":67,"props":73,"children":74},{},[75],{"type":25,"value":76},"This generally means the source code itself, ideally including instructions on how to use it, what dependencies it has on other software, etc.",{"type":15,"tag":67,"props":78,"children":79},{},[80],{"type":25,"value":81},"The goal is to allow others to find and use your code, if they so wish, without extreme levels of difficulty.",{"type":15,"tag":16,"props":83,"children":84},{},[],{"type":15,"tag":30,"props":86,"children":88},{"id":87},"why-publish",[89],{"type":25,"value":90},"Why Publish?",{"type":15,"tag":92,"props":93,"children":95},"h3",{"id":94},"major-scientific-considerations",[96],{"type":25,"value":97},"Major scientific considerations",{"type":15,"tag":37,"props":99,"children":100},{},[101,106],{"type":15,"tag":41,"props":102,"children":103},{},[104],{"type":25,"value":105},"Citability",{"type":15,"tag":41,"props":107,"children":108},{},[109],{"type":25,"value":110},"Reproducibility",{"type":15,"tag":92,"props":112,"children":114},{"id":113},"fairness",[115],{"type":25,"value":116},"FAIRness",{"type":15,"tag":118,"props":119,"children":120},"center",{},[121],{"type":15,"tag":122,"props":123,"children":126},"img",{"src":124,"width":125},"/modules/fairsoftware/media/fair.png","40%",[],{"type":15,"tag":67,"props":128,"children":129},{},[130],{"type":25,"value":71},{"type":15,"tag":67,"props":132,"children":133},{},[134],{"type":25,"value":135},"Citability - Allows the software authors to get credit for their work\nReproducibility - If software is not published anywhere then few people will successfully reproduce analyses, simulations or other research results that were performed by other researchers",{"type":15,"tag":67,"props":137,"children":138},{},[139],{"type":25,"value":140},"Additionally, publishing is essential for meeting the FAIR principles:\nFindability - if software lives on someone's harddrive then it cannot be easily found by anyone\nAccessibility - the software can e.g. be downloaded and installed using a standard protocol (authentication is still a possibility)\nInteroperability - publishing the dependencies (e.g. software libraries) and input/output formats and versions is necessary for interoperability\nReusability - it's only reusable if it's available, and if people know what they are allowed to do with it (based on its software license)",{"type":15,"tag":16,"props":142,"children":143},{},[],{"type":15,"tag":30,"props":145,"children":147},{"id":146},"traditional-publishing-pipeline",[148],{"type":25,"value":149},"Traditional publishing pipeline",{"type":15,"tag":37,"props":151,"children":152},{},[153,158,163,168],{"type":15,"tag":41,"props":154,"children":155},{},[156],{"type":25,"value":157},"Write some code and leave it on your harddrive",{"type":15,"tag":41,"props":159,"children":160},{},[161],{"type":25,"value":162},"Generate scientific results with it",{"type":15,"tag":41,"props":164,"children":165},{},[166],{"type":25,"value":167},"Write a paper about those results",{"type":15,"tag":41,"props":169,"children":170},{},[171],{"type":25,"value":172},"Possibly not even mentioning the software at all",{"type":15,"tag":92,"props":174,"children":176},{"id":175},"consequences",[177],{"type":25,"value":178},"Consequences",{"type":15,"tag":37,"props":180,"children":181},{},[182,187,192],{"type":15,"tag":41,"props":183,"children":184},{},[185],{"type":25,"value":186},"The software itself is not citable",{"type":15,"tag":41,"props":188,"children":189},{},[190],{"type":25,"value":191},"Methods are not easily reproduced or even analysed",{"type":15,"tag":41,"props":193,"children":194},{},[195],{"type":25,"value":196},"Nobody else can build on top of your research",{"type":15,"tag":16,"props":198,"children":199},{},[],{"type":15,"tag":30,"props":201,"children":203},{"id":202},"modern-publishing-pipeline",[204],{"type":25,"value":205},"Modern publishing pipeline",{"type":15,"tag":37,"props":207,"children":208},{},[209,214,219,224,229],{"type":15,"tag":41,"props":210,"children":211},{},[212],{"type":25,"value":213},"Software repository",{"type":15,"tag":41,"props":215,"children":216},{},[217],{"type":25,"value":218},"Tag/semantic versioning",{"type":15,"tag":41,"props":220,"children":221},{},[222],{"type":25,"value":223},"Get a persistent identifier",{"type":15,"tag":41,"props":225,"children":226},{},[227],{"type":25,"value":228},"Registries",{"type":15,"tag":41,"props":230,"children":231},{},[232],{"type":25,"value":233},"Software Paper",{"type":15,"tag":16,"props":235,"children":236},{},[],{"type":15,"tag":92,"props":238,"children":240},{"id":239},"software-repository",[241],{"type":25,"value":213},{"type":15,"tag":67,"props":243,"children":244},{},[245],{"type":25,"value":246},"Put all source files in a public version-controlled repository\ne.g. github, gitlab",{"type":15,"tag":37,"props":248,"children":249},{},[250,255],{"type":15,"tag":41,"props":251,"children":252},{},[253],{"type":25,"value":254},"Software is immediately Findable",{"type":15,"tag":41,"props":256,"children":257},{},[258],{"type":25,"value":259},"Naturally contains a log of all development history",{"type":15,"tag":67,"props":261,"children":262},{},[263],{"type":25,"value":264},"Include a software license, and a citation.cff file",{"type":15,"tag":67,"props":266,"children":267},{},[268],{"type":25,"value":71},{"type":15,"tag":67,"props":270,"children":271},{},[272],{"type":25,"value":273},"See license, citation and software management chapters",{"type":15,"tag":16,"props":275,"children":276},{},[],{"type":15,"tag":92,"props":278,"children":280},{"id":279},"software-repository-1",[281],{"type":25,"value":213},{"type":15,"tag":67,"props":283,"children":284},{},[285,287],{"type":25,"value":286},"Which one?\n",{"type":15,"tag":122,"props":288,"children":291},{"src":289,"width":290},"media/repository_logos.png","80%",[],{"type":15,"tag":67,"props":293,"children":294},{},[295],{"type":25,"value":71},{"type":15,"tag":67,"props":297,"children":298},{},[299],{"type":25,"value":300},"Anything is better than nothing. Gitlab and Github are the mainstream, used by many and with lots of features. You might run into projects using other repositories.",{"type":15,"tag":16,"props":302,"children":303},{},[],{"type":15,"tag":92,"props":305,"children":307},{"id":306},"tagsemantic-versioning",[308],{"type":25,"value":218},{"type":15,"tag":67,"props":310,"children":311},{},[312],{"type":25,"value":313},"It is important to communicate the actual version of the software used for a particular piece of research",{"type":15,"tag":67,"props":315,"children":316},{},[317],{"type":25,"value":318},"If your software is used as a dependency of another software/workflow then specific versions can be referenced",{"type":15,"tag":67,"props":320,"children":321},{},[322],{"type":25,"value":323},"Ideally, use \"semantic versioning\" in the form MAJOR.MINOR.PATCH (e.g. v2.1.5)",{"type":15,"tag":16,"props":325,"children":326},{},[],{"type":15,"tag":92,"props":328,"children":330},{"id":329},"get-a-persistent-identifier",[331],{"type":25,"value":332},"Get a Persistent Identifier",{"type":15,"tag":67,"props":334,"children":335},{},[336],{"type":25,"value":337},"Specific versions of the software should be published to an archiving service that provides persistent identifiers",{"type":15,"tag":67,"props":339,"children":340},{},[341],{"type":25,"value":342},"For example, Zenodo is a long term archiving service for scientific data and software.\nZenodo will assign a DOI to the published data, making it citable",{"type":15,"tag":67,"props":344,"children":345},{},[346],{"type":25,"value":71},{"type":15,"tag":67,"props":348,"children":349},{},[350],{"type":25,"value":351},"See Citation story",{"type":15,"tag":16,"props":353,"children":354},{},[],{"type":15,"tag":92,"props":356,"children":358},{"id":357},"registries",[359],{"type":25,"value":228},{"type":15,"tag":67,"props":361,"children":362},{},[363],{"type":25,"value":364},"Add a link to your software on a relevant public registry",{"type":15,"tag":37,"props":366,"children":367},{},[368,373,378],{"type":15,"tag":41,"props":369,"children":370},{},[371],{"type":25,"value":372},"For example, the eScience Center maintains the Research Software Directory",{"type":15,"tag":41,"props":374,"children":375},{},[376],{"type":25,"value":377},"Can also be domain specific software registries",{"type":15,"tag":41,"props":379,"children":380},{},[381],{"type":25,"value":382},"Or even list it on awesomelist",{"type":15,"tag":67,"props":384,"children":385},{},[386],{"type":25,"value":387},"This aids greatly in Findability by relevant researchers",{"type":15,"tag":16,"props":389,"children":390},{},[],{"type":15,"tag":92,"props":392,"children":394},{"id":393},"software-paper",[395],{"type":25,"value":233},{"type":15,"tag":67,"props":397,"children":398},{},[399],{"type":25,"value":400},"Publish a journal article about the software specifically",{"type":15,"tag":37,"props":402,"children":403},{},[404,409,414,419],{"type":15,"tag":41,"props":405,"children":406},{},[407],{"type":25,"value":408},"Journal of Research Software (JORS)",{"type":15,"tag":41,"props":410,"children":411},{},[412],{"type":25,"value":413},"Journal of Open Source Software (JOSS)",{"type":15,"tag":41,"props":415,"children":416},{},[417],{"type":25,"value":418},"SoftwareX",{"type":15,"tag":41,"props":420,"children":421},{},[422],{"type":25,"value":423},"CRAN",{"type":15,"tag":67,"props":425,"children":426},{},[427],{"type":25,"value":428},"Some journals perform peer review of the software in question",{"type":15,"tag":16,"props":430,"children":431},{},[],{"type":15,"tag":30,"props":433,"children":435},{"id":434},"automate-as-many-steps-as-possible",[436],{"type":25,"value":437},"Automate as many steps as possible!",{"type":15,"tag":67,"props":439,"children":440},{},[441],{"type":25,"value":442},"For example, you can automate archiving on Zenodo by linking it to your github account",{"type":15,"tag":67,"props":444,"children":445},{},[446],{"type":25,"value":447},"See instructions in the \"Automating software publication\" tab of this story",{"type":15,"tag":16,"props":449,"children":450},{},[],{"type":15,"tag":67,"props":452,"children":453},{},[454],{"type":15,"tag":455,"props":456,"children":460},"a",{"href":457,"rel":458},"http://www.esciencecenter.nl",[459],"nofollow",[461],{"type":25,"value":462},"www.esciencecenter.nl",{"type":15,"tag":67,"props":464,"children":465},{},[466],{"type":15,"tag":455,"props":467,"children":469},{"href":468},"mailto:info@esciencecenter.nl",[470],{"type":25,"value":471},"info@esciencecenter.nl",{"type":15,"tag":67,"props":473,"children":474},{},[475],{"type":25,"value":476},"020 - 460 47 70",{"title":7,"searchDepth":10,"depth":10,"links":478},[479,480,485,488,496],{"id":32,"depth":10,"text":35},{"id":87,"depth":10,"text":90,"children":481},[482,484],{"id":94,"depth":483,"text":97},3,{"id":113,"depth":483,"text":116},{"id":146,"depth":10,"text":149,"children":486},[487],{"id":175,"depth":483,"text":178},{"id":202,"depth":10,"text":205,"children":489},[490,491,492,493,494,495],{"id":239,"depth":483,"text":213},{"id":279,"depth":483,"text":213},{"id":306,"depth":483,"text":218},{"id":329,"depth":483,"text":332},{"id":357,"depth":483,"text":228},{"id":393,"depth":483,"text":233},{"id":434,"depth":10,"text":437},"markdown","local_fs:modules:publication:slides-publication.pmd","local_fs","modules/publication/slides-publication.pmd","pmd",[503,538],{"_path":504,"_dir":505,"_draft":6,"_partial":6,"_locale":7,"title":506,"description":7,"body":507,"_type":497,"_id":535,"_source":499,"_file":536,"_extension":537},"/main/about","main","About",{"type":12,"children":508,"toc":531},[509,515,520,526],{"type":15,"tag":30,"props":510,"children":512},{"id":511},"about-the-research-software-support",[513],{"type":25,"value":514},"About the Research Software Support",{"type":15,"tag":67,"props":516,"children":517},{},[518],{"type":25,"value":519},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":30,"props":521,"children":523},{"id":522},"target-audience",[524],{"type":25,"value":525},"Target audience",{"type":15,"tag":67,"props":527,"children":528},{},[529],{"type":25,"value":530},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":10,"depth":10,"links":532},[533,534],{"id":511,"depth":10,"text":514},{"id":522,"depth":10,"text":525},"local_fs:main:about.md","main/about.md","md",{"_path":539,"_dir":505,"_draft":6,"_partial":6,"_locale":7,"title":540,"description":7,"body":541,"_type":497,"_id":663,"_source":499,"_file":664,"_extension":537},"/main/contribute","Contribute",{"type":12,"children":542,"toc":658},[543,549,554,560,565],{"type":15,"tag":30,"props":544,"children":546},{"id":545},"contributing-to-the-research-software-support",[547],{"type":25,"value":548},"Contributing to the Research Software Support",{"type":15,"tag":67,"props":550,"children":551},{},[552],{"type":25,"value":553},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":92,"props":555,"children":557},{"id":556},"what-can-i-do",[558],{"type":25,"value":559},"What can I do?",{"type":15,"tag":67,"props":561,"children":562},{},[563],{"type":25,"value":564},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":37,"props":566,"children":567},{},[568,582,623,646],{"type":15,"tag":41,"props":569,"children":570},{},[571,573,580],{"type":25,"value":572},"Contribute to the content discussion in the ",{"type":15,"tag":455,"props":574,"children":577},{"href":575,"rel":576},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[459],[578],{"type":25,"value":579},"chapter issues",{"type":25,"value":581},", e.g. by listing good resources for information.",{"type":15,"tag":41,"props":583,"children":584},{},[585,591,593],{"type":15,"tag":455,"props":586,"children":588},{"href":587},"#elements-of-a-module",[589],{"type":25,"value":590},"Author a lesson",{"type":25,"value":592},", e.g. by:\n",{"type":15,"tag":37,"props":594,"children":595},{},[596,605,614],{"type":15,"tag":41,"props":597,"children":598},{},[599],{"type":15,"tag":455,"props":600,"children":602},{"href":601},"#slides",[603],{"type":25,"value":604},"Creating slides",{"type":15,"tag":41,"props":606,"children":607},{},[608],{"type":15,"tag":455,"props":609,"children":611},{"href":610},"#exercises",[612],{"type":25,"value":613},"Designing an exercise",{"type":15,"tag":41,"props":615,"children":616},{},[617],{"type":15,"tag":455,"props":618,"children":620},{"href":619},"#online-resources",[621],{"type":25,"value":622},"Curating online resources",{"type":15,"tag":41,"props":624,"children":625},{},[626,628,635,637,644],{"type":25,"value":627},"Review a lesson module; both by looking at ",{"type":15,"tag":455,"props":629,"children":632},{"href":630,"rel":631},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[459],[633],{"type":25,"value":634},"open PRs",{"type":25,"value":636},", as well as flagging issues for improvement in the ",{"type":15,"tag":455,"props":638,"children":641},{"href":639,"rel":640},"https://esciencecenter-digital-skills.github.io/research-software-support/",[459],[642],{"type":25,"value":643},"existing content",{"type":25,"value":645},".",{"type":15,"tag":41,"props":647,"children":648},{},[649,656],{"type":15,"tag":455,"props":650,"children":653},{"href":651,"rel":652},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[459],[654],{"type":25,"value":655},"Provide feedback",{"type":25,"value":657}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":10,"depth":10,"links":659},[660],{"id":545,"depth":10,"text":548,"children":661},[662],{"id":556,"depth":483,"text":559},"local_fs:main:contribute.md","main/contribute.md",1715800938125] \ No newline at end of file +[{"data":1,"prerenderedAt":665},["Reactive",2],{"content-query-MDJK2oivIo":3,"content-query-AT44bg6JPw":502},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":497,"_id":498,"_source":499,"_file":500,"_extension":501},"/modules/publication/slides-publication","publication",false,"","Publishing Software","slides",2,{"type":12,"children":13,"toc":477},"root",[14,19,26,29,36,66,72,77,82,85,91,98,111,117,127,131,136,141,144,150,173,179,197,200,206,234,237,242,247,260,265,269,274,277,282,292,296,301,304,309,314,319,324,327,333,338,343,347,352,355,360,365,383,388,391,396,401,424,429,432,438,443,448,451,463,472],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h1",{"id":22},"publishing-software",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":30,"props":31,"children":33},"h2",{"id":32},"what-do-we-mean-by-publishing",[34],{"type":25,"value":35},"What do we mean by publishing?",{"type":15,"tag":37,"props":38,"children":39},"ul",{},[40,61],{"type":15,"tag":41,"props":42,"children":43},"li",{},[44,46,52,54,59],{"type":25,"value":45},"Publishing the ",{"type":15,"tag":47,"props":48,"children":49},"em",{},[50],{"type":25,"value":51},"software itself",{"type":25,"value":53}," (not just publishing an article ",{"type":15,"tag":47,"props":55,"children":56},{},[57],{"type":25,"value":58},"about",{"type":25,"value":60}," it)",{"type":15,"tag":41,"props":62,"children":63},{},[64],{"type":25,"value":65},"There are many ways to do this",{"type":15,"tag":67,"props":68,"children":69},"p",{},[70],{"type":25,"value":71},"Note:",{"type":15,"tag":67,"props":73,"children":74},{},[75],{"type":25,"value":76},"This generally means the source code itself, ideally including instructions on how to use it, what dependencies it has on other software, etc.",{"type":15,"tag":67,"props":78,"children":79},{},[80],{"type":25,"value":81},"The goal is to allow others to find and use your code, if they so wish, without extreme levels of difficulty.",{"type":15,"tag":16,"props":83,"children":84},{},[],{"type":15,"tag":30,"props":86,"children":88},{"id":87},"why-publish",[89],{"type":25,"value":90},"Why Publish?",{"type":15,"tag":92,"props":93,"children":95},"h3",{"id":94},"major-scientific-considerations",[96],{"type":25,"value":97},"Major scientific considerations",{"type":15,"tag":37,"props":99,"children":100},{},[101,106],{"type":15,"tag":41,"props":102,"children":103},{},[104],{"type":25,"value":105},"Citability",{"type":15,"tag":41,"props":107,"children":108},{},[109],{"type":25,"value":110},"Reproducibility",{"type":15,"tag":92,"props":112,"children":114},{"id":113},"fairness",[115],{"type":25,"value":116},"FAIRness",{"type":15,"tag":118,"props":119,"children":120},"center",{},[121],{"type":15,"tag":122,"props":123,"children":126},"img",{"src":124,"width":125},"/modules/fairsoftware/media/fair.png","40%",[],{"type":15,"tag":67,"props":128,"children":129},{},[130],{"type":25,"value":71},{"type":15,"tag":67,"props":132,"children":133},{},[134],{"type":25,"value":135},"Citability - Allows the software authors to get credit for their work\nReproducibility - If software is not published anywhere then few people will successfully reproduce analyses, simulations or other research results that were performed by other researchers",{"type":15,"tag":67,"props":137,"children":138},{},[139],{"type":25,"value":140},"Additionally, publishing is essential for meeting the FAIR principles:\nFindability - if software lives on someone's harddrive then it cannot be easily found by anyone\nAccessibility - the software can e.g. be downloaded and installed using a standard protocol (authentication is still a possibility)\nInteroperability - publishing the dependencies (e.g. software libraries) and input/output formats and versions is necessary for interoperability\nReusability - it's only reusable if it's available, and if people know what they are allowed to do with it (based on its software license)",{"type":15,"tag":16,"props":142,"children":143},{},[],{"type":15,"tag":30,"props":145,"children":147},{"id":146},"traditional-publishing-pipeline",[148],{"type":25,"value":149},"Traditional publishing pipeline",{"type":15,"tag":37,"props":151,"children":152},{},[153,158,163,168],{"type":15,"tag":41,"props":154,"children":155},{},[156],{"type":25,"value":157},"Write some code and leave it on your harddrive",{"type":15,"tag":41,"props":159,"children":160},{},[161],{"type":25,"value":162},"Generate scientific results with it",{"type":15,"tag":41,"props":164,"children":165},{},[166],{"type":25,"value":167},"Write a paper about those results",{"type":15,"tag":41,"props":169,"children":170},{},[171],{"type":25,"value":172},"Possibly not even mentioning the software at all",{"type":15,"tag":92,"props":174,"children":176},{"id":175},"consequences",[177],{"type":25,"value":178},"Consequences",{"type":15,"tag":37,"props":180,"children":181},{},[182,187,192],{"type":15,"tag":41,"props":183,"children":184},{},[185],{"type":25,"value":186},"The software itself is not citable",{"type":15,"tag":41,"props":188,"children":189},{},[190],{"type":25,"value":191},"Methods are not easily reproduced or even analysed",{"type":15,"tag":41,"props":193,"children":194},{},[195],{"type":25,"value":196},"Nobody else can build on top of your research",{"type":15,"tag":16,"props":198,"children":199},{},[],{"type":15,"tag":30,"props":201,"children":203},{"id":202},"modern-publishing-pipeline",[204],{"type":25,"value":205},"Modern publishing pipeline",{"type":15,"tag":37,"props":207,"children":208},{},[209,214,219,224,229],{"type":15,"tag":41,"props":210,"children":211},{},[212],{"type":25,"value":213},"Software repository",{"type":15,"tag":41,"props":215,"children":216},{},[217],{"type":25,"value":218},"Tag/semantic versioning",{"type":15,"tag":41,"props":220,"children":221},{},[222],{"type":25,"value":223},"Get a persistent identifier",{"type":15,"tag":41,"props":225,"children":226},{},[227],{"type":25,"value":228},"Registries",{"type":15,"tag":41,"props":230,"children":231},{},[232],{"type":25,"value":233},"Software Paper",{"type":15,"tag":16,"props":235,"children":236},{},[],{"type":15,"tag":92,"props":238,"children":240},{"id":239},"software-repository",[241],{"type":25,"value":213},{"type":15,"tag":67,"props":243,"children":244},{},[245],{"type":25,"value":246},"Put all source files in a public version-controlled repository\ne.g. github, gitlab",{"type":15,"tag":37,"props":248,"children":249},{},[250,255],{"type":15,"tag":41,"props":251,"children":252},{},[253],{"type":25,"value":254},"Software is immediately Findable",{"type":15,"tag":41,"props":256,"children":257},{},[258],{"type":25,"value":259},"Naturally contains a log of all development history",{"type":15,"tag":67,"props":261,"children":262},{},[263],{"type":25,"value":264},"Include a software license, and a citation.cff file",{"type":15,"tag":67,"props":266,"children":267},{},[268],{"type":25,"value":71},{"type":15,"tag":67,"props":270,"children":271},{},[272],{"type":25,"value":273},"See license, citation and software management chapters",{"type":15,"tag":16,"props":275,"children":276},{},[],{"type":15,"tag":92,"props":278,"children":280},{"id":279},"software-repository-1",[281],{"type":25,"value":213},{"type":15,"tag":67,"props":283,"children":284},{},[285,287],{"type":25,"value":286},"Which one?\n",{"type":15,"tag":122,"props":288,"children":291},{"src":289,"width":290},"media/repository_logos.png","80%",[],{"type":15,"tag":67,"props":293,"children":294},{},[295],{"type":25,"value":71},{"type":15,"tag":67,"props":297,"children":298},{},[299],{"type":25,"value":300},"Anything is better than nothing. Gitlab and Github are the mainstream, used by many and with lots of features. You might run into projects using other repositories.",{"type":15,"tag":16,"props":302,"children":303},{},[],{"type":15,"tag":92,"props":305,"children":307},{"id":306},"tagsemantic-versioning",[308],{"type":25,"value":218},{"type":15,"tag":67,"props":310,"children":311},{},[312],{"type":25,"value":313},"It is important to communicate the actual version of the software used for a particular piece of research",{"type":15,"tag":67,"props":315,"children":316},{},[317],{"type":25,"value":318},"If your software is used as a dependency of another software/workflow then specific versions can be referenced",{"type":15,"tag":67,"props":320,"children":321},{},[322],{"type":25,"value":323},"Ideally, use \"semantic versioning\" in the form MAJOR.MINOR.PATCH (e.g. v2.1.5)",{"type":15,"tag":16,"props":325,"children":326},{},[],{"type":15,"tag":92,"props":328,"children":330},{"id":329},"get-a-persistent-identifier",[331],{"type":25,"value":332},"Get a Persistent Identifier",{"type":15,"tag":67,"props":334,"children":335},{},[336],{"type":25,"value":337},"Specific versions of the software should be published to an archiving service that provides persistent identifiers",{"type":15,"tag":67,"props":339,"children":340},{},[341],{"type":25,"value":342},"For example, Zenodo is a long term archiving service for scientific data and software.\nZenodo will assign a DOI to the published data, making it citable",{"type":15,"tag":67,"props":344,"children":345},{},[346],{"type":25,"value":71},{"type":15,"tag":67,"props":348,"children":349},{},[350],{"type":25,"value":351},"See Citation story",{"type":15,"tag":16,"props":353,"children":354},{},[],{"type":15,"tag":92,"props":356,"children":358},{"id":357},"registries",[359],{"type":25,"value":228},{"type":15,"tag":67,"props":361,"children":362},{},[363],{"type":25,"value":364},"Add a link to your software on a relevant public registry",{"type":15,"tag":37,"props":366,"children":367},{},[368,373,378],{"type":15,"tag":41,"props":369,"children":370},{},[371],{"type":25,"value":372},"For example, the eScience Center maintains the Research Software Directory",{"type":15,"tag":41,"props":374,"children":375},{},[376],{"type":25,"value":377},"Can also be domain specific software registries",{"type":15,"tag":41,"props":379,"children":380},{},[381],{"type":25,"value":382},"Or even list it on awesomelist",{"type":15,"tag":67,"props":384,"children":385},{},[386],{"type":25,"value":387},"This aids greatly in Findability by relevant researchers",{"type":15,"tag":16,"props":389,"children":390},{},[],{"type":15,"tag":92,"props":392,"children":394},{"id":393},"software-paper",[395],{"type":25,"value":233},{"type":15,"tag":67,"props":397,"children":398},{},[399],{"type":25,"value":400},"Publish a journal article about the software specifically",{"type":15,"tag":37,"props":402,"children":403},{},[404,409,414,419],{"type":15,"tag":41,"props":405,"children":406},{},[407],{"type":25,"value":408},"Journal of Research Software (JORS)",{"type":15,"tag":41,"props":410,"children":411},{},[412],{"type":25,"value":413},"Journal of Open Source Software (JOSS)",{"type":15,"tag":41,"props":415,"children":416},{},[417],{"type":25,"value":418},"SoftwareX",{"type":15,"tag":41,"props":420,"children":421},{},[422],{"type":25,"value":423},"CRAN",{"type":15,"tag":67,"props":425,"children":426},{},[427],{"type":25,"value":428},"Some journals perform peer review of the software in question",{"type":15,"tag":16,"props":430,"children":431},{},[],{"type":15,"tag":30,"props":433,"children":435},{"id":434},"automate-as-many-steps-as-possible",[436],{"type":25,"value":437},"Automate as many steps as possible!",{"type":15,"tag":67,"props":439,"children":440},{},[441],{"type":25,"value":442},"For example, you can automate archiving on Zenodo by linking it to your github account",{"type":15,"tag":67,"props":444,"children":445},{},[446],{"type":25,"value":447},"See instructions in the \"Automating software publication\" tab of this story",{"type":15,"tag":16,"props":449,"children":450},{},[],{"type":15,"tag":67,"props":452,"children":453},{},[454],{"type":15,"tag":455,"props":456,"children":460},"a",{"href":457,"rel":458},"http://www.esciencecenter.nl",[459],"nofollow",[461],{"type":25,"value":462},"www.esciencecenter.nl",{"type":15,"tag":67,"props":464,"children":465},{},[466],{"type":15,"tag":455,"props":467,"children":469},{"href":468},"mailto:info@esciencecenter.nl",[470],{"type":25,"value":471},"info@esciencecenter.nl",{"type":15,"tag":67,"props":473,"children":474},{},[475],{"type":25,"value":476},"020 - 460 47 70",{"title":7,"searchDepth":10,"depth":10,"links":478},[479,480,485,488,496],{"id":32,"depth":10,"text":35},{"id":87,"depth":10,"text":90,"children":481},[482,484],{"id":94,"depth":483,"text":97},3,{"id":113,"depth":483,"text":116},{"id":146,"depth":10,"text":149,"children":486},[487],{"id":175,"depth":483,"text":178},{"id":202,"depth":10,"text":205,"children":489},[490,491,492,493,494,495],{"id":239,"depth":483,"text":213},{"id":279,"depth":483,"text":213},{"id":306,"depth":483,"text":218},{"id":329,"depth":483,"text":332},{"id":357,"depth":483,"text":228},{"id":393,"depth":483,"text":233},{"id":434,"depth":10,"text":437},"markdown","local_fs:modules:publication:slides-publication.pmd","local_fs","modules/publication/slides-publication.pmd","pmd",[503,538],{"_path":504,"_dir":505,"_draft":6,"_partial":6,"_locale":7,"title":506,"description":7,"body":507,"_type":497,"_id":535,"_source":499,"_file":536,"_extension":537},"/main/about","main","About",{"type":12,"children":508,"toc":531},[509,515,520,526],{"type":15,"tag":30,"props":510,"children":512},{"id":511},"about-the-research-software-support",[513],{"type":25,"value":514},"About the Research Software Support",{"type":15,"tag":67,"props":516,"children":517},{},[518],{"type":25,"value":519},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":30,"props":521,"children":523},{"id":522},"target-audience",[524],{"type":25,"value":525},"Target audience",{"type":15,"tag":67,"props":527,"children":528},{},[529],{"type":25,"value":530},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":10,"depth":10,"links":532},[533,534],{"id":511,"depth":10,"text":514},{"id":522,"depth":10,"text":525},"local_fs:main:about.md","main/about.md","md",{"_path":539,"_dir":505,"_draft":6,"_partial":6,"_locale":7,"title":540,"description":7,"body":541,"_type":497,"_id":663,"_source":499,"_file":664,"_extension":537},"/main/contribute","Contribute",{"type":12,"children":542,"toc":658},[543,549,554,560,565],{"type":15,"tag":30,"props":544,"children":546},{"id":545},"contributing-to-the-research-software-support",[547],{"type":25,"value":548},"Contributing to the Research Software Support",{"type":15,"tag":67,"props":550,"children":551},{},[552],{"type":25,"value":553},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":92,"props":555,"children":557},{"id":556},"what-can-i-do",[558],{"type":25,"value":559},"What can I do?",{"type":15,"tag":67,"props":561,"children":562},{},[563],{"type":25,"value":564},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":37,"props":566,"children":567},{},[568,582,623,646],{"type":15,"tag":41,"props":569,"children":570},{},[571,573,580],{"type":25,"value":572},"Contribute to the content discussion in the ",{"type":15,"tag":455,"props":574,"children":577},{"href":575,"rel":576},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[459],[578],{"type":25,"value":579},"chapter issues",{"type":25,"value":581},", e.g. by listing good resources for information.",{"type":15,"tag":41,"props":583,"children":584},{},[585,591,593],{"type":15,"tag":455,"props":586,"children":588},{"href":587},"#elements-of-a-module",[589],{"type":25,"value":590},"Author a lesson",{"type":25,"value":592},", e.g. by:\n",{"type":15,"tag":37,"props":594,"children":595},{},[596,605,614],{"type":15,"tag":41,"props":597,"children":598},{},[599],{"type":15,"tag":455,"props":600,"children":602},{"href":601},"#slides",[603],{"type":25,"value":604},"Creating slides",{"type":15,"tag":41,"props":606,"children":607},{},[608],{"type":15,"tag":455,"props":609,"children":611},{"href":610},"#exercises",[612],{"type":25,"value":613},"Designing an exercise",{"type":15,"tag":41,"props":615,"children":616},{},[617],{"type":15,"tag":455,"props":618,"children":620},{"href":619},"#online-resources",[621],{"type":25,"value":622},"Curating online resources",{"type":15,"tag":41,"props":624,"children":625},{},[626,628,635,637,644],{"type":25,"value":627},"Review a lesson module; both by looking at ",{"type":15,"tag":455,"props":629,"children":632},{"href":630,"rel":631},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[459],[633],{"type":25,"value":634},"open PRs",{"type":25,"value":636},", as well as flagging issues for improvement in the ",{"type":15,"tag":455,"props":638,"children":641},{"href":639,"rel":640},"https://esciencecenter-digital-skills.github.io/research-software-support/",[459],[642],{"type":25,"value":643},"existing content",{"type":25,"value":645},".",{"type":15,"tag":41,"props":647,"children":648},{},[649,656],{"type":15,"tag":455,"props":650,"children":653},{"href":651,"rel":652},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[459],[654],{"type":25,"value":655},"Provide feedback",{"type":25,"value":657}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":10,"depth":10,"links":659},[660],{"id":545,"depth":10,"text":548,"children":661},[662],{"id":556,"depth":483,"text":559},"local_fs:main:contribute.md","main/contribute.md",1715801015319] \ No newline at end of file diff --git a/modules/publication/slides-publication/index.html b/modules/publication/slides-publication/index.html index 7f2fc1f6..79416548 100644 --- a/modules/publication/slides-publication/index.html +++ b/modules/publication/slides-publication/index.html @@ -2,7 +2,7 @@ Publishing Software - + - - - - - - - - + + + + + + + + - + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/publication/software_publication_pipeline/_payload.json b/modules/publication/software_publication_pipeline/_payload.json index 6211091e..e89b7e06 100644 --- a/modules/publication/software_publication_pipeline/_payload.json +++ b/modules/publication/software_publication_pipeline/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":549},["Reactive",2],{"content-query-50LR4eMSaL":3,"content-query-AT44bg6JPw":387},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":382,"_id":383,"_source":384,"_file":385,"_extension":386},"/modules/publication/software_publication_pipeline","publication",false,"","Software publication pipeline","reading",3,{"type":12,"children":13,"toc":372},"root",[14,22,29,35,65,70,86,91,96,119,125,152,182,187,210,215,220,234,239,261,266,280,285,290,323,333,338,344,349],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"software-publication-pipeline",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"steps",[27],{"type":21,"value":28},"Steps",{"type":15,"tag":30,"props":31,"children":32},"p",{},[33],{"type":21,"value":34},"It is recommended that all steps in the pipeline are followed, but they are not dependent on each other. In this pipeline we provide resources to achieve the whole pipeline using GitHub or GitLab for hosting the source code",{"type":15,"tag":36,"props":37,"children":38},"ul",{},[39,45,50,55,60],{"type":15,"tag":40,"props":41,"children":42},"li",{},[43],{"type":21,"value":44},"Software repository",{"type":15,"tag":40,"props":46,"children":47},{},[48],{"type":21,"value":49},"Tag/semantic versioning",{"type":15,"tag":40,"props":51,"children":52},{},[53],{"type":21,"value":54},"Get a persistent identifier",{"type":15,"tag":40,"props":56,"children":57},{},[58],{"type":21,"value":59},"Registries",{"type":15,"tag":40,"props":61,"children":62},{},[63],{"type":21,"value":64},"Software Paper",{"type":15,"tag":23,"props":66,"children":68},{"id":67},"software-repository",[69],{"type":21,"value":44},{"type":15,"tag":30,"props":71,"children":72},{},[73,75,84],{"type":21,"value":74},"If possible, during the development of Research Software, changes should be tracked using dedicated version control software like ",{"type":15,"tag":76,"props":77,"children":81},"a",{"href":78,"rel":79},"https://git-scm.com/",[80],"nofollow",[82],{"type":21,"value":83},"git",{"type":21,"value":85},".",{"type":15,"tag":30,"props":87,"children":88},{},[89],{"type":21,"value":90},"Put all source files in a public version-controlled repository, preferably GitHub or GitLab. Both GitHub and Gitlab provide online repositories for hosting source code. As can be inferred from their names, they were designed to be used together with Git version control. The nice thing about using git together with GitHub and GitLab is that it stores the complete history of changes to the source code, rather than just a single version .",{"type":15,"tag":30,"props":92,"children":93},{},[94],{"type":21,"value":95},"A quickstart tutorial for...",{"type":15,"tag":36,"props":97,"children":98},{},[99,109],{"type":15,"tag":40,"props":100,"children":101},{},[102],{"type":15,"tag":76,"props":103,"children":106},{"href":104,"rel":105},"https://docs.github.com/en/get-started/quickstart/create-a-repo",[80],[107],{"type":21,"value":108},"GitHub",{"type":15,"tag":40,"props":110,"children":111},{},[112],{"type":15,"tag":76,"props":113,"children":116},{"href":114,"rel":115},"https://docs.gitlab.com/ee/user/project/index.html",[80],[117],{"type":21,"value":118},"GitLab",{"type":15,"tag":23,"props":120,"children":122},{"id":121},"versions-tags-and-releases",[123],{"type":21,"value":124},"Versions, tags and releases",{"type":15,"tag":30,"props":126,"children":127},{},[128,130,136,138,143,145],{"type":21,"value":129},"Every time software changes, and that history is stored, that can be considered a new ",{"type":15,"tag":131,"props":132,"children":133},"strong",{},[134],{"type":21,"value":135},"version",{"type":21,"value":137}," of the software. It is useful to add special identifiers, called ",{"type":15,"tag":131,"props":139,"children":140},{},[141],{"type":21,"value":142},"tags",{"type":21,"value":144}," to new versions that mark significant changes, so that specific versions of your software can be cited or referenced as dependency by other software. If you use git for version control, you can ",{"type":15,"tag":76,"props":146,"children":149},{"href":147,"rel":148},"https://git-scm.com/book/en/v2/Git-Basics-Tagging",[80],[150],{"type":21,"value":151},"create tags in git",{"type":15,"tag":30,"props":153,"children":154},{},[155,157,167,169,174,176,181],{"type":21,"value":156},"It is good practice to use ",{"type":15,"tag":131,"props":158,"children":159},{},[160],{"type":15,"tag":76,"props":161,"children":164},{"href":162,"rel":163},"https://semver.org/",[80],[165],{"type":21,"value":166},"semantic versioning",{"type":21,"value":168}," to tag the software. In this way, information about the impact of the change from one version to the next is stored in the tag. Usually, tagged versions of the software are opened up to the public in a ",{"type":15,"tag":131,"props":170,"children":171},{},[172],{"type":21,"value":173},"software release",{"type":21,"value":175},", together with updated documentation and a documentation of the changes since the previous release in a so called ",{"type":15,"tag":131,"props":177,"children":178},{},[179],{"type":21,"value":180},"changelog",{"type":21,"value":85},{"type":15,"tag":30,"props":183,"children":184},{},[185],{"type":21,"value":186},"The documentation of creating releases...",{"type":15,"tag":36,"props":188,"children":189},{},[190,200],{"type":15,"tag":40,"props":191,"children":192},{},[193],{"type":15,"tag":76,"props":194,"children":197},{"href":195,"rel":196},"https://docs.github.com/en/repositories/releasing-projects-on-github",[80],[198],{"type":21,"value":199},"on GitHub",{"type":15,"tag":40,"props":201,"children":202},{},[203],{"type":15,"tag":76,"props":204,"children":207},{"href":205,"rel":206},"https://docs.gitlab.com/ee/user/project/releases/",[80],[208],{"type":21,"value":209},"on GitLab",{"type":15,"tag":23,"props":211,"children":213},{"id":212},"get-a-persistent-identifier",[214],{"type":21,"value":54},{"type":15,"tag":30,"props":216,"children":217},{},[218],{"type":21,"value":219},"Specific versions of the software should be published to an archiving service that provides persistent identifiers",{"type":15,"tag":30,"props":221,"children":222},{},[223,225,232],{"type":21,"value":224},"For example, ",{"type":15,"tag":76,"props":226,"children":229},{"href":227,"rel":228},"https://zenodo.org/",[80],[230],{"type":21,"value":231},"Zenodo",{"type":21,"value":233}," is a long term archiving service for scientific data and software.\nZenodo will assign a DOI to the published data, making it citable.",{"type":15,"tag":30,"props":235,"children":236},{},[237],{"type":21,"value":238},"Documentation on how to integrate Zenodo with your repository...",{"type":15,"tag":36,"props":240,"children":241},{},[242,251],{"type":15,"tag":40,"props":243,"children":244},{},[245],{"type":15,"tag":76,"props":246,"children":249},{"href":247,"rel":248},"https://docs.github.com/en/repositories/archiving-a-github-repository/referencing-and-citing-content",[80],[250],{"type":21,"value":199},{"type":15,"tag":40,"props":252,"children":253},{},[254],{"type":15,"tag":76,"props":255,"children":258},{"href":256,"rel":257},"https://gitlab.com/sbeniamine/gitlab2zenodo",[80],[259],{"type":21,"value":260},"on Gitlab",{"type":15,"tag":23,"props":262,"children":264},{"id":263},"registries",[265],{"type":21,"value":59},{"type":15,"tag":30,"props":267,"children":268},{},[269,271,278],{"type":21,"value":270},"To improve findability of the software, it should be shared in ",{"type":15,"tag":76,"props":272,"children":275},{"href":273,"rel":274},"https://github.com/NLeSC/awesome-research-software-registries",[80],[276],{"type":21,"value":277},"existing software registries",{"type":21,"value":279},". Preferably, software is added to a registry specific to the domain and/or programming language. Software can be shared in multiple registries if they are relevant to the software.",{"type":15,"tag":23,"props":281,"children":283},{"id":282},"software-paper",[284],{"type":21,"value":64},{"type":15,"tag":30,"props":286,"children":287},{},[288],{"type":21,"value":289},"A major, but also optional step is to publish a journal article about the software specifically in a dedicated software journal. Some examples are:",{"type":15,"tag":36,"props":291,"children":292},{},[293,303,313],{"type":15,"tag":40,"props":294,"children":295},{},[296],{"type":15,"tag":76,"props":297,"children":300},{"href":298,"rel":299},"https://openresearchsoftware.metajnl.com/",[80],[301],{"type":21,"value":302},"Journal of Open Research Software (JORS)",{"type":15,"tag":40,"props":304,"children":305},{},[306],{"type":15,"tag":76,"props":307,"children":310},{"href":308,"rel":309},"https://joss.theoj.org/",[80],[311],{"type":21,"value":312},"Journal of Open Source Software (JOSS)",{"type":15,"tag":40,"props":314,"children":315},{},[316],{"type":15,"tag":76,"props":317,"children":320},{"href":318,"rel":319},"https://www.softxjournal.com/",[80],[321],{"type":21,"value":322},"SoftwareX",{"type":15,"tag":30,"props":324,"children":325},{},[326],{"type":15,"tag":76,"props":327,"children":330},{"href":328,"rel":329},"https://www.software.ac.uk/top-tip/which-journals-should-i-publish-my-software",[80],[331],{"type":21,"value":332},"Check this extensive list of software journals",{"type":15,"tag":30,"props":334,"children":335},{},[336],{"type":21,"value":337},"Note that this is different than other scientific journal publications in that the publication should be focussing on the software and its features and not on any particular research results. However, research projects in which the software plays a crucial role can of course be mentioned as use cases.",{"type":15,"tag":23,"props":339,"children":341},{"id":340},"communication-and-outreach",[342],{"type":21,"value":343},"Communication and outreach",{"type":15,"tag":30,"props":345,"children":346},{},[347],{"type":21,"value":348},"Once software is released, it is often a good idea to spend some time on communication and outreach to potential users of the software. In this way the world will get to know your software. This can be in many forms:",{"type":15,"tag":36,"props":350,"children":351},{},[352,357,362,367],{"type":15,"tag":40,"props":353,"children":354},{},[355],{"type":21,"value":356},"Blogposts",{"type":15,"tag":40,"props":358,"children":359},{},[360],{"type":21,"value":361},"Organisational/institutional newsletters",{"type":15,"tag":40,"props":363,"children":364},{},[365],{"type":21,"value":366},"Conference presentations/posters",{"type":15,"tag":40,"props":368,"children":369},{},[370],{"type":21,"value":371},"Etc.",{"title":7,"searchDepth":373,"depth":373,"links":374},2,[375,376,377,378,379,380,381],{"id":25,"depth":373,"text":28},{"id":67,"depth":373,"text":44},{"id":121,"depth":373,"text":124},{"id":212,"depth":373,"text":54},{"id":263,"depth":373,"text":59},{"id":282,"depth":373,"text":64},{"id":340,"depth":373,"text":343},"markdown","local_fs:modules:publication:software_publication_pipeline.md","local_fs","modules/publication/software_publication_pipeline.md","md",[388,422],{"_path":389,"_dir":390,"_draft":6,"_partial":6,"_locale":7,"title":391,"description":7,"body":392,"_type":382,"_id":420,"_source":384,"_file":421,"_extension":386},"/main/about","main","About",{"type":12,"children":393,"toc":416},[394,400,405,411],{"type":15,"tag":23,"props":395,"children":397},{"id":396},"about-the-research-software-support",[398],{"type":21,"value":399},"About the Research Software Support",{"type":15,"tag":30,"props":401,"children":402},{},[403],{"type":21,"value":404},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":406,"children":408},{"id":407},"target-audience",[409],{"type":21,"value":410},"Target audience",{"type":15,"tag":30,"props":412,"children":413},{},[414],{"type":21,"value":415},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":373,"depth":373,"links":417},[418,419],{"id":396,"depth":373,"text":399},{"id":407,"depth":373,"text":410},"local_fs:main:about.md","main/about.md",{"_path":423,"_dir":390,"_draft":6,"_partial":6,"_locale":7,"title":424,"description":7,"body":425,"_type":382,"_id":547,"_source":384,"_file":548,"_extension":386},"/main/contribute","Contribute",{"type":12,"children":426,"toc":542},[427,433,438,445,450],{"type":15,"tag":23,"props":428,"children":430},{"id":429},"contributing-to-the-research-software-support",[431],{"type":21,"value":432},"Contributing to the Research Software Support",{"type":15,"tag":30,"props":434,"children":435},{},[436],{"type":21,"value":437},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":439,"props":440,"children":442},"h3",{"id":441},"what-can-i-do",[443],{"type":21,"value":444},"What can I do?",{"type":15,"tag":30,"props":446,"children":447},{},[448],{"type":21,"value":449},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":36,"props":451,"children":452},{},[453,467,508,530],{"type":15,"tag":40,"props":454,"children":455},{},[456,458,465],{"type":21,"value":457},"Contribute to the content discussion in the ",{"type":15,"tag":76,"props":459,"children":462},{"href":460,"rel":461},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[80],[463],{"type":21,"value":464},"chapter issues",{"type":21,"value":466},", e.g. by listing good resources for information.",{"type":15,"tag":40,"props":468,"children":469},{},[470,476,478],{"type":15,"tag":76,"props":471,"children":473},{"href":472},"#elements-of-a-module",[474],{"type":21,"value":475},"Author a lesson",{"type":21,"value":477},", e.g. by:\n",{"type":15,"tag":36,"props":479,"children":480},{},[481,490,499],{"type":15,"tag":40,"props":482,"children":483},{},[484],{"type":15,"tag":76,"props":485,"children":487},{"href":486},"#slides",[488],{"type":21,"value":489},"Creating slides",{"type":15,"tag":40,"props":491,"children":492},{},[493],{"type":15,"tag":76,"props":494,"children":496},{"href":495},"#exercises",[497],{"type":21,"value":498},"Designing an exercise",{"type":15,"tag":40,"props":500,"children":501},{},[502],{"type":15,"tag":76,"props":503,"children":505},{"href":504},"#online-resources",[506],{"type":21,"value":507},"Curating online resources",{"type":15,"tag":40,"props":509,"children":510},{},[511,513,520,522,529],{"type":21,"value":512},"Review a lesson module; both by looking at ",{"type":15,"tag":76,"props":514,"children":517},{"href":515,"rel":516},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[80],[518],{"type":21,"value":519},"open PRs",{"type":21,"value":521},", as well as flagging issues for improvement in the ",{"type":15,"tag":76,"props":523,"children":526},{"href":524,"rel":525},"https://esciencecenter-digital-skills.github.io/research-software-support/",[80],[527],{"type":21,"value":528},"existing content",{"type":21,"value":85},{"type":15,"tag":40,"props":531,"children":532},{},[533,540],{"type":15,"tag":76,"props":534,"children":537},{"href":535,"rel":536},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[80],[538],{"type":21,"value":539},"Provide feedback",{"type":21,"value":541}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":373,"depth":373,"links":543},[544],{"id":429,"depth":373,"text":432,"children":545},[546],{"id":441,"depth":10,"text":444},"local_fs:main:contribute.md","main/contribute.md",1715800938128] \ No newline at end of file +[{"data":1,"prerenderedAt":549},["Reactive",2],{"content-query-50LR4eMSaL":3,"content-query-AT44bg6JPw":387},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":382,"_id":383,"_source":384,"_file":385,"_extension":386},"/modules/publication/software_publication_pipeline","publication",false,"","Software publication pipeline","reading",3,{"type":12,"children":13,"toc":372},"root",[14,22,29,35,65,70,86,91,96,119,125,152,182,187,210,215,220,234,239,261,266,280,285,290,323,333,338,344,349],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"software-publication-pipeline",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"steps",[27],{"type":21,"value":28},"Steps",{"type":15,"tag":30,"props":31,"children":32},"p",{},[33],{"type":21,"value":34},"It is recommended that all steps in the pipeline are followed, but they are not dependent on each other. In this pipeline we provide resources to achieve the whole pipeline using GitHub or GitLab for hosting the source code",{"type":15,"tag":36,"props":37,"children":38},"ul",{},[39,45,50,55,60],{"type":15,"tag":40,"props":41,"children":42},"li",{},[43],{"type":21,"value":44},"Software repository",{"type":15,"tag":40,"props":46,"children":47},{},[48],{"type":21,"value":49},"Tag/semantic versioning",{"type":15,"tag":40,"props":51,"children":52},{},[53],{"type":21,"value":54},"Get a persistent identifier",{"type":15,"tag":40,"props":56,"children":57},{},[58],{"type":21,"value":59},"Registries",{"type":15,"tag":40,"props":61,"children":62},{},[63],{"type":21,"value":64},"Software Paper",{"type":15,"tag":23,"props":66,"children":68},{"id":67},"software-repository",[69],{"type":21,"value":44},{"type":15,"tag":30,"props":71,"children":72},{},[73,75,84],{"type":21,"value":74},"If possible, during the development of Research Software, changes should be tracked using dedicated version control software like ",{"type":15,"tag":76,"props":77,"children":81},"a",{"href":78,"rel":79},"https://git-scm.com/",[80],"nofollow",[82],{"type":21,"value":83},"git",{"type":21,"value":85},".",{"type":15,"tag":30,"props":87,"children":88},{},[89],{"type":21,"value":90},"Put all source files in a public version-controlled repository, preferably GitHub or GitLab. Both GitHub and Gitlab provide online repositories for hosting source code. As can be inferred from their names, they were designed to be used together with Git version control. The nice thing about using git together with GitHub and GitLab is that it stores the complete history of changes to the source code, rather than just a single version .",{"type":15,"tag":30,"props":92,"children":93},{},[94],{"type":21,"value":95},"A quickstart tutorial for...",{"type":15,"tag":36,"props":97,"children":98},{},[99,109],{"type":15,"tag":40,"props":100,"children":101},{},[102],{"type":15,"tag":76,"props":103,"children":106},{"href":104,"rel":105},"https://docs.github.com/en/get-started/quickstart/create-a-repo",[80],[107],{"type":21,"value":108},"GitHub",{"type":15,"tag":40,"props":110,"children":111},{},[112],{"type":15,"tag":76,"props":113,"children":116},{"href":114,"rel":115},"https://docs.gitlab.com/ee/user/project/index.html",[80],[117],{"type":21,"value":118},"GitLab",{"type":15,"tag":23,"props":120,"children":122},{"id":121},"versions-tags-and-releases",[123],{"type":21,"value":124},"Versions, tags and releases",{"type":15,"tag":30,"props":126,"children":127},{},[128,130,136,138,143,145],{"type":21,"value":129},"Every time software changes, and that history is stored, that can be considered a new ",{"type":15,"tag":131,"props":132,"children":133},"strong",{},[134],{"type":21,"value":135},"version",{"type":21,"value":137}," of the software. It is useful to add special identifiers, called ",{"type":15,"tag":131,"props":139,"children":140},{},[141],{"type":21,"value":142},"tags",{"type":21,"value":144}," to new versions that mark significant changes, so that specific versions of your software can be cited or referenced as dependency by other software. If you use git for version control, you can ",{"type":15,"tag":76,"props":146,"children":149},{"href":147,"rel":148},"https://git-scm.com/book/en/v2/Git-Basics-Tagging",[80],[150],{"type":21,"value":151},"create tags in git",{"type":15,"tag":30,"props":153,"children":154},{},[155,157,167,169,174,176,181],{"type":21,"value":156},"It is good practice to use ",{"type":15,"tag":131,"props":158,"children":159},{},[160],{"type":15,"tag":76,"props":161,"children":164},{"href":162,"rel":163},"https://semver.org/",[80],[165],{"type":21,"value":166},"semantic versioning",{"type":21,"value":168}," to tag the software. In this way, information about the impact of the change from one version to the next is stored in the tag. Usually, tagged versions of the software are opened up to the public in a ",{"type":15,"tag":131,"props":170,"children":171},{},[172],{"type":21,"value":173},"software release",{"type":21,"value":175},", together with updated documentation and a documentation of the changes since the previous release in a so called ",{"type":15,"tag":131,"props":177,"children":178},{},[179],{"type":21,"value":180},"changelog",{"type":21,"value":85},{"type":15,"tag":30,"props":183,"children":184},{},[185],{"type":21,"value":186},"The documentation of creating releases...",{"type":15,"tag":36,"props":188,"children":189},{},[190,200],{"type":15,"tag":40,"props":191,"children":192},{},[193],{"type":15,"tag":76,"props":194,"children":197},{"href":195,"rel":196},"https://docs.github.com/en/repositories/releasing-projects-on-github",[80],[198],{"type":21,"value":199},"on GitHub",{"type":15,"tag":40,"props":201,"children":202},{},[203],{"type":15,"tag":76,"props":204,"children":207},{"href":205,"rel":206},"https://docs.gitlab.com/ee/user/project/releases/",[80],[208],{"type":21,"value":209},"on GitLab",{"type":15,"tag":23,"props":211,"children":213},{"id":212},"get-a-persistent-identifier",[214],{"type":21,"value":54},{"type":15,"tag":30,"props":216,"children":217},{},[218],{"type":21,"value":219},"Specific versions of the software should be published to an archiving service that provides persistent identifiers",{"type":15,"tag":30,"props":221,"children":222},{},[223,225,232],{"type":21,"value":224},"For example, ",{"type":15,"tag":76,"props":226,"children":229},{"href":227,"rel":228},"https://zenodo.org/",[80],[230],{"type":21,"value":231},"Zenodo",{"type":21,"value":233}," is a long term archiving service for scientific data and software.\nZenodo will assign a DOI to the published data, making it citable.",{"type":15,"tag":30,"props":235,"children":236},{},[237],{"type":21,"value":238},"Documentation on how to integrate Zenodo with your repository...",{"type":15,"tag":36,"props":240,"children":241},{},[242,251],{"type":15,"tag":40,"props":243,"children":244},{},[245],{"type":15,"tag":76,"props":246,"children":249},{"href":247,"rel":248},"https://docs.github.com/en/repositories/archiving-a-github-repository/referencing-and-citing-content",[80],[250],{"type":21,"value":199},{"type":15,"tag":40,"props":252,"children":253},{},[254],{"type":15,"tag":76,"props":255,"children":258},{"href":256,"rel":257},"https://gitlab.com/sbeniamine/gitlab2zenodo",[80],[259],{"type":21,"value":260},"on Gitlab",{"type":15,"tag":23,"props":262,"children":264},{"id":263},"registries",[265],{"type":21,"value":59},{"type":15,"tag":30,"props":267,"children":268},{},[269,271,278],{"type":21,"value":270},"To improve findability of the software, it should be shared in ",{"type":15,"tag":76,"props":272,"children":275},{"href":273,"rel":274},"https://github.com/NLeSC/awesome-research-software-registries",[80],[276],{"type":21,"value":277},"existing software registries",{"type":21,"value":279},". Preferably, software is added to a registry specific to the domain and/or programming language. Software can be shared in multiple registries if they are relevant to the software.",{"type":15,"tag":23,"props":281,"children":283},{"id":282},"software-paper",[284],{"type":21,"value":64},{"type":15,"tag":30,"props":286,"children":287},{},[288],{"type":21,"value":289},"A major, but also optional step is to publish a journal article about the software specifically in a dedicated software journal. Some examples are:",{"type":15,"tag":36,"props":291,"children":292},{},[293,303,313],{"type":15,"tag":40,"props":294,"children":295},{},[296],{"type":15,"tag":76,"props":297,"children":300},{"href":298,"rel":299},"https://openresearchsoftware.metajnl.com/",[80],[301],{"type":21,"value":302},"Journal of Open Research Software (JORS)",{"type":15,"tag":40,"props":304,"children":305},{},[306],{"type":15,"tag":76,"props":307,"children":310},{"href":308,"rel":309},"https://joss.theoj.org/",[80],[311],{"type":21,"value":312},"Journal of Open Source Software (JOSS)",{"type":15,"tag":40,"props":314,"children":315},{},[316],{"type":15,"tag":76,"props":317,"children":320},{"href":318,"rel":319},"https://www.softxjournal.com/",[80],[321],{"type":21,"value":322},"SoftwareX",{"type":15,"tag":30,"props":324,"children":325},{},[326],{"type":15,"tag":76,"props":327,"children":330},{"href":328,"rel":329},"https://www.software.ac.uk/top-tip/which-journals-should-i-publish-my-software",[80],[331],{"type":21,"value":332},"Check this extensive list of software journals",{"type":15,"tag":30,"props":334,"children":335},{},[336],{"type":21,"value":337},"Note that this is different than other scientific journal publications in that the publication should be focussing on the software and its features and not on any particular research results. However, research projects in which the software plays a crucial role can of course be mentioned as use cases.",{"type":15,"tag":23,"props":339,"children":341},{"id":340},"communication-and-outreach",[342],{"type":21,"value":343},"Communication and outreach",{"type":15,"tag":30,"props":345,"children":346},{},[347],{"type":21,"value":348},"Once software is released, it is often a good idea to spend some time on communication and outreach to potential users of the software. In this way the world will get to know your software. This can be in many forms:",{"type":15,"tag":36,"props":350,"children":351},{},[352,357,362,367],{"type":15,"tag":40,"props":353,"children":354},{},[355],{"type":21,"value":356},"Blogposts",{"type":15,"tag":40,"props":358,"children":359},{},[360],{"type":21,"value":361},"Organisational/institutional newsletters",{"type":15,"tag":40,"props":363,"children":364},{},[365],{"type":21,"value":366},"Conference presentations/posters",{"type":15,"tag":40,"props":368,"children":369},{},[370],{"type":21,"value":371},"Etc.",{"title":7,"searchDepth":373,"depth":373,"links":374},2,[375,376,377,378,379,380,381],{"id":25,"depth":373,"text":28},{"id":67,"depth":373,"text":44},{"id":121,"depth":373,"text":124},{"id":212,"depth":373,"text":54},{"id":263,"depth":373,"text":59},{"id":282,"depth":373,"text":64},{"id":340,"depth":373,"text":343},"markdown","local_fs:modules:publication:software_publication_pipeline.md","local_fs","modules/publication/software_publication_pipeline.md","md",[388,422],{"_path":389,"_dir":390,"_draft":6,"_partial":6,"_locale":7,"title":391,"description":7,"body":392,"_type":382,"_id":420,"_source":384,"_file":421,"_extension":386},"/main/about","main","About",{"type":12,"children":393,"toc":416},[394,400,405,411],{"type":15,"tag":23,"props":395,"children":397},{"id":396},"about-the-research-software-support",[398],{"type":21,"value":399},"About the Research Software Support",{"type":15,"tag":30,"props":401,"children":402},{},[403],{"type":21,"value":404},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":406,"children":408},{"id":407},"target-audience",[409],{"type":21,"value":410},"Target audience",{"type":15,"tag":30,"props":412,"children":413},{},[414],{"type":21,"value":415},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":373,"depth":373,"links":417},[418,419],{"id":396,"depth":373,"text":399},{"id":407,"depth":373,"text":410},"local_fs:main:about.md","main/about.md",{"_path":423,"_dir":390,"_draft":6,"_partial":6,"_locale":7,"title":424,"description":7,"body":425,"_type":382,"_id":547,"_source":384,"_file":548,"_extension":386},"/main/contribute","Contribute",{"type":12,"children":426,"toc":542},[427,433,438,445,450],{"type":15,"tag":23,"props":428,"children":430},{"id":429},"contributing-to-the-research-software-support",[431],{"type":21,"value":432},"Contributing to the Research Software Support",{"type":15,"tag":30,"props":434,"children":435},{},[436],{"type":21,"value":437},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":439,"props":440,"children":442},"h3",{"id":441},"what-can-i-do",[443],{"type":21,"value":444},"What can I do?",{"type":15,"tag":30,"props":446,"children":447},{},[448],{"type":21,"value":449},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":36,"props":451,"children":452},{},[453,467,508,530],{"type":15,"tag":40,"props":454,"children":455},{},[456,458,465],{"type":21,"value":457},"Contribute to the content discussion in the ",{"type":15,"tag":76,"props":459,"children":462},{"href":460,"rel":461},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[80],[463],{"type":21,"value":464},"chapter issues",{"type":21,"value":466},", e.g. by listing good resources for information.",{"type":15,"tag":40,"props":468,"children":469},{},[470,476,478],{"type":15,"tag":76,"props":471,"children":473},{"href":472},"#elements-of-a-module",[474],{"type":21,"value":475},"Author a lesson",{"type":21,"value":477},", e.g. by:\n",{"type":15,"tag":36,"props":479,"children":480},{},[481,490,499],{"type":15,"tag":40,"props":482,"children":483},{},[484],{"type":15,"tag":76,"props":485,"children":487},{"href":486},"#slides",[488],{"type":21,"value":489},"Creating slides",{"type":15,"tag":40,"props":491,"children":492},{},[493],{"type":15,"tag":76,"props":494,"children":496},{"href":495},"#exercises",[497],{"type":21,"value":498},"Designing an exercise",{"type":15,"tag":40,"props":500,"children":501},{},[502],{"type":15,"tag":76,"props":503,"children":505},{"href":504},"#online-resources",[506],{"type":21,"value":507},"Curating online resources",{"type":15,"tag":40,"props":509,"children":510},{},[511,513,520,522,529],{"type":21,"value":512},"Review a lesson module; both by looking at ",{"type":15,"tag":76,"props":514,"children":517},{"href":515,"rel":516},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[80],[518],{"type":21,"value":519},"open PRs",{"type":21,"value":521},", as well as flagging issues for improvement in the ",{"type":15,"tag":76,"props":523,"children":526},{"href":524,"rel":525},"https://esciencecenter-digital-skills.github.io/research-software-support/",[80],[527],{"type":21,"value":528},"existing content",{"type":21,"value":85},{"type":15,"tag":40,"props":531,"children":532},{},[533,540],{"type":15,"tag":76,"props":534,"children":537},{"href":535,"rel":536},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[80],[538],{"type":21,"value":539},"Provide feedback",{"type":21,"value":541}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":373,"depth":373,"links":543},[544],{"id":429,"depth":373,"text":432,"children":545},[546],{"id":441,"depth":10,"text":444},"local_fs:main:contribute.md","main/contribute.md",1715801015329] \ No newline at end of file diff --git a/modules/publication/software_publication_pipeline/index.html b/modules/publication/software_publication_pipeline/index.html index 05d1428b..82632d3a 100644 --- a/modules/publication/software_publication_pipeline/index.html +++ b/modules/publication/software_publication_pipeline/index.html @@ -2,7 +2,7 @@ Software publication pipeline - + - - - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + - - + + -

    Module: publication

    Software publication pipeline

    Steps

    It is recommended that all steps in the pipeline are followed, but they are not dependent on each other. In this pipeline we provide resources to achieve the whole pipeline using GitHub or GitLab for hosting the source code

    • Software repository
    • Tag/semantic versioning
    • Get a persistent identifier
    • Registries
    • Software Paper

    Software repository

    If possible, during the development of Research Software, changes should be tracked using dedicated version control software like git.

    Put all source files in a public version-controlled repository, preferably GitHub or GitLab. Both GitHub and Gitlab provide online repositories for hosting source code. As can be inferred from their names, they were designed to be used together with Git version control. The nice thing about using git together with GitHub and GitLab is that it stores the complete history of changes to the source code, rather than just a single version .

    A quickstart tutorial for...

    Versions, tags and releases

    Every time software changes, and that history is stored, that can be considered a new version of the software. It is useful to add special identifiers, called tags to new versions that mark significant changes, so that specific versions of your software can be cited or referenced as dependency by other software. If you use git for version control, you can create tags in git

    It is good practice to use semantic versioning to tag the software. In this way, information about the impact of the change from one version to the next is stored in the tag. Usually, tagged versions of the software are opened up to the public in a software release, together with updated documentation and a documentation of the changes since the previous release in a so called changelog.

    The documentation of creating releases...

    Get a persistent identifier

    Specific versions of the software should be published to an archiving service that provides persistent identifiers

    For example, Zenodo is a long term archiving service for scientific data and software. -Zenodo will assign a DOI to the published data, making it citable.

    Documentation on how to integrate Zenodo with your repository...

    Registries

    To improve findability of the software, it should be shared in existing software registries. Preferably, software is added to a registry specific to the domain and/or programming language. Software can be shared in multiple registries if they are relevant to the software.

    Software Paper

    A major, but also optional step is to publish a journal article about the software specifically in a dedicated software journal. Some examples are:

    Check this extensive list of software journals

    Note that this is different than other scientific journal publications in that the publication should be focussing on the software and its features and not on any particular research results. However, research projects in which the software plays a crucial role can of course be mentioned as use cases.

    Communication and outreach

    Once software is released, it is often a good idea to spend some time on communication and outreach to potential users of the software. In this way the world will get to know your software. This can be in many forms:

    • Blogposts
    • Organisational/institutional newsletters
    • Conference presentations/posters
    • Etc.
    - \ No newline at end of file +

    Module: publication

    Software publication pipeline

    Steps

    It is recommended that all steps in the pipeline are followed, but they are not dependent on each other. In this pipeline we provide resources to achieve the whole pipeline using GitHub or GitLab for hosting the source code

    • Software repository
    • Tag/semantic versioning
    • Get a persistent identifier
    • Registries
    • Software Paper

    Software repository

    If possible, during the development of Research Software, changes should be tracked using dedicated version control software like git.

    Put all source files in a public version-controlled repository, preferably GitHub or GitLab. Both GitHub and Gitlab provide online repositories for hosting source code. As can be inferred from their names, they were designed to be used together with Git version control. The nice thing about using git together with GitHub and GitLab is that it stores the complete history of changes to the source code, rather than just a single version .

    A quickstart tutorial for...

    Versions, tags and releases

    Every time software changes, and that history is stored, that can be considered a new version of the software. It is useful to add special identifiers, called tags to new versions that mark significant changes, so that specific versions of your software can be cited or referenced as dependency by other software. If you use git for version control, you can create tags in git

    It is good practice to use semantic versioning to tag the software. In this way, information about the impact of the change from one version to the next is stored in the tag. Usually, tagged versions of the software are opened up to the public in a software release, together with updated documentation and a documentation of the changes since the previous release in a so called changelog.

    The documentation of creating releases...

    Get a persistent identifier

    Specific versions of the software should be published to an archiving service that provides persistent identifiers

    For example, Zenodo is a long term archiving service for scientific data and software. +Zenodo will assign a DOI to the published data, making it citable.

    Documentation on how to integrate Zenodo with your repository...

    Registries

    To improve findability of the software, it should be shared in existing software registries. Preferably, software is added to a registry specific to the domain and/or programming language. Software can be shared in multiple registries if they are relevant to the software.

    Software Paper

    A major, but also optional step is to publish a journal article about the software specifically in a dedicated software journal. Some examples are:

    Check this extensive list of software journals

    Note that this is different than other scientific journal publications in that the publication should be focussing on the software and its features and not on any particular research results. However, research projects in which the software plays a crucial role can of course be mentioned as use cases.

    Communication and outreach

    Once software is released, it is often a good idea to spend some time on communication and outreach to potential users of the software. In this way the world will get to know your software. This can be in many forms:

    • Blogposts
    • Organisational/institutional newsletters
    • Conference presentations/posters
    • Etc.
    + \ No newline at end of file diff --git a/modules/researchsoftware/exercise-is-it-research-software/_payload.json b/modules/researchsoftware/exercise-is-it-research-software/_payload.json index db9bfbe2..8437dd12 100644 --- a/modules/researchsoftware/exercise-is-it-research-software/_payload.json +++ b/modules/researchsoftware/exercise-is-it-research-software/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":279},["Reactive",2],{"content-query-p2igmqVN0Y":3,"content-query-AT44bg6JPw":115},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":110,"_id":111,"_source":112,"_file":113,"_extension":114},"/modules/researchsoftware/exercise-is-it-research-software","researchsoftware",false,"","Is it research software?","exercise",3,{"type":12,"children":13,"toc":103},"root",[14,23,29,36,43,66,71,77,88,92,98],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"exercise-is-it-research-software",[20],{"type":21,"value":22},"text","Exercise: Is it research software?",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27],{"type":21,"value":28},"Using the definition of research software from the FAIR4RS working group, try to classify the following as \"research software\" or \"software in research\"",{"type":15,"tag":30,"props":31,"children":33},"h3",{"id":32},"example-software-tools",[34],{"type":21,"value":35},"Example software tools",{"type":15,"tag":37,"props":38,"children":40},"h4",{"id":39},"shape-preserving-local-histogram-modification-algorithm",[41],{"type":21,"value":42},"Shape Preserving Local Histogram Modification Algorithm",{"type":15,"tag":24,"props":44,"children":45},{},[46,55,57,64],{"type":15,"tag":47,"props":48,"children":52},"a",{"href":49,"rel":50},"https://doi.org/10.5201/ipol.2018.236",[51],"nofollow",[53],{"type":21,"value":54},"An Analysis and Implementation of the Shape Preserving Local Histogram Modification Algorithm",{"type":21,"value":56}," is a published article on ",{"type":15,"tag":47,"props":58,"children":61},{"href":59,"rel":60},"https://www.ipol.im/",[51],[62],{"type":21,"value":63},"IPOL",{"type":21,"value":65},". The source code implementing the algorithm is available for download.",{"type":15,"tag":24,"props":67,"children":68},{},[69],{"type":21,"value":70},"Is this \"research software\" or \"software in research\"?",{"type":15,"tag":37,"props":72,"children":74},{"id":73},"scipy",[75],{"type":21,"value":76},"SciPy",{"type":15,"tag":24,"props":78,"children":79},{},[80,86],{"type":15,"tag":47,"props":81,"children":84},{"href":82,"rel":83},"https://zbmath.org/software/6293",[51],[85],{"type":21,"value":76},{"type":21,"value":87}," is open-source software for mathematics, science, and engineering.\nIt is also the name of a very popular conference on scientific programming with Python. The SciPy library depends on NumPy, which provides convenient and fast N-dimensional array manipulation.\nThe SciPy library is built to work with NumPy arrays, and provides many user-friendly and efficient numerical routines such as routines for numerical integration and optimization.\nTogether, they run on all popular operating systems, are quick to install, and are free of charge.\nNumPy and SciPy are easy to use, but powerful enough to be depended upon by some of the world’s leading scientists and engineers.",{"type":15,"tag":24,"props":89,"children":90},{},[91],{"type":21,"value":70},{"type":15,"tag":30,"props":93,"children":95},{"id":94},"other-software-tools",[96],{"type":21,"value":97},"Other software tools",{"type":15,"tag":24,"props":99,"children":100},{},[101],{"type":21,"value":102},"How about other software tools you are familiar with?\nCan you provide an example of software you are familiar with, and then classify it as \"research software\" or \"software in research\"?",{"title":7,"searchDepth":104,"depth":104,"links":105},2,[106],{"id":18,"depth":104,"text":22,"children":107},[108,109],{"id":32,"depth":10,"text":35},{"id":94,"depth":10,"text":97},"markdown","local_fs:modules:researchsoftware:exercise-is-it-research-software.md","local_fs","modules/researchsoftware/exercise-is-it-research-software.md","md",[116,150],{"_path":117,"_dir":118,"_draft":6,"_partial":6,"_locale":7,"title":119,"description":7,"body":120,"_type":110,"_id":148,"_source":112,"_file":149,"_extension":114},"/main/about","main","About",{"type":12,"children":121,"toc":144},[122,128,133,139],{"type":15,"tag":16,"props":123,"children":125},{"id":124},"about-the-research-software-support",[126],{"type":21,"value":127},"About the Research Software Support",{"type":15,"tag":24,"props":129,"children":130},{},[131],{"type":21,"value":132},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":134,"children":136},{"id":135},"target-audience",[137],{"type":21,"value":138},"Target audience",{"type":15,"tag":24,"props":140,"children":141},{},[142],{"type":21,"value":143},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":104,"depth":104,"links":145},[146,147],{"id":124,"depth":104,"text":127},{"id":135,"depth":104,"text":138},"local_fs:main:about.md","main/about.md",{"_path":151,"_dir":118,"_draft":6,"_partial":6,"_locale":7,"title":152,"description":7,"body":153,"_type":110,"_id":277,"_source":112,"_file":278,"_extension":114},"/main/contribute","Contribute",{"type":12,"children":154,"toc":272},[155,161,166,172,177],{"type":15,"tag":16,"props":156,"children":158},{"id":157},"contributing-to-the-research-software-support",[159],{"type":21,"value":160},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":162,"children":163},{},[164],{"type":21,"value":165},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":30,"props":167,"children":169},{"id":168},"what-can-i-do",[170],{"type":21,"value":171},"What can I do?",{"type":15,"tag":24,"props":173,"children":174},{},[175],{"type":21,"value":176},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":178,"props":179,"children":180},"ul",{},[181,196,237,260],{"type":15,"tag":182,"props":183,"children":184},"li",{},[185,187,194],{"type":21,"value":186},"Contribute to the content discussion in the ",{"type":15,"tag":47,"props":188,"children":191},{"href":189,"rel":190},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[51],[192],{"type":21,"value":193},"chapter issues",{"type":21,"value":195},", e.g. by listing good resources for information.",{"type":15,"tag":182,"props":197,"children":198},{},[199,205,207],{"type":15,"tag":47,"props":200,"children":202},{"href":201},"#elements-of-a-module",[203],{"type":21,"value":204},"Author a lesson",{"type":21,"value":206},", e.g. by:\n",{"type":15,"tag":178,"props":208,"children":209},{},[210,219,228],{"type":15,"tag":182,"props":211,"children":212},{},[213],{"type":15,"tag":47,"props":214,"children":216},{"href":215},"#slides",[217],{"type":21,"value":218},"Creating slides",{"type":15,"tag":182,"props":220,"children":221},{},[222],{"type":15,"tag":47,"props":223,"children":225},{"href":224},"#exercises",[226],{"type":21,"value":227},"Designing an exercise",{"type":15,"tag":182,"props":229,"children":230},{},[231],{"type":15,"tag":47,"props":232,"children":234},{"href":233},"#online-resources",[235],{"type":21,"value":236},"Curating online resources",{"type":15,"tag":182,"props":238,"children":239},{},[240,242,249,251,258],{"type":21,"value":241},"Review a lesson module; both by looking at ",{"type":15,"tag":47,"props":243,"children":246},{"href":244,"rel":245},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[51],[247],{"type":21,"value":248},"open PRs",{"type":21,"value":250},", as well as flagging issues for improvement in the ",{"type":15,"tag":47,"props":252,"children":255},{"href":253,"rel":254},"https://esciencecenter-digital-skills.github.io/research-software-support/",[51],[256],{"type":21,"value":257},"existing content",{"type":21,"value":259},".",{"type":15,"tag":182,"props":261,"children":262},{},[263,270],{"type":15,"tag":47,"props":264,"children":267},{"href":265,"rel":266},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[51],[268],{"type":21,"value":269},"Provide feedback",{"type":21,"value":271}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":104,"depth":104,"links":273},[274],{"id":157,"depth":104,"text":160,"children":275},[276],{"id":168,"depth":10,"text":171},"local_fs:main:contribute.md","main/contribute.md",1715800937513] \ No newline at end of file +[{"data":1,"prerenderedAt":279},["Reactive",2],{"content-query-p2igmqVN0Y":3,"content-query-AT44bg6JPw":115},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":110,"_id":111,"_source":112,"_file":113,"_extension":114},"/modules/researchsoftware/exercise-is-it-research-software","researchsoftware",false,"","Is it research software?","exercise",3,{"type":12,"children":13,"toc":103},"root",[14,23,29,36,43,66,71,77,88,92,98],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"exercise-is-it-research-software",[20],{"type":21,"value":22},"text","Exercise: Is it research software?",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27],{"type":21,"value":28},"Using the definition of research software from the FAIR4RS working group, try to classify the following as \"research software\" or \"software in research\"",{"type":15,"tag":30,"props":31,"children":33},"h3",{"id":32},"example-software-tools",[34],{"type":21,"value":35},"Example software tools",{"type":15,"tag":37,"props":38,"children":40},"h4",{"id":39},"shape-preserving-local-histogram-modification-algorithm",[41],{"type":21,"value":42},"Shape Preserving Local Histogram Modification Algorithm",{"type":15,"tag":24,"props":44,"children":45},{},[46,55,57,64],{"type":15,"tag":47,"props":48,"children":52},"a",{"href":49,"rel":50},"https://doi.org/10.5201/ipol.2018.236",[51],"nofollow",[53],{"type":21,"value":54},"An Analysis and Implementation of the Shape Preserving Local Histogram Modification Algorithm",{"type":21,"value":56}," is a published article on ",{"type":15,"tag":47,"props":58,"children":61},{"href":59,"rel":60},"https://www.ipol.im/",[51],[62],{"type":21,"value":63},"IPOL",{"type":21,"value":65},". The source code implementing the algorithm is available for download.",{"type":15,"tag":24,"props":67,"children":68},{},[69],{"type":21,"value":70},"Is this \"research software\" or \"software in research\"?",{"type":15,"tag":37,"props":72,"children":74},{"id":73},"scipy",[75],{"type":21,"value":76},"SciPy",{"type":15,"tag":24,"props":78,"children":79},{},[80,86],{"type":15,"tag":47,"props":81,"children":84},{"href":82,"rel":83},"https://zbmath.org/software/6293",[51],[85],{"type":21,"value":76},{"type":21,"value":87}," is open-source software for mathematics, science, and engineering.\nIt is also the name of a very popular conference on scientific programming with Python. The SciPy library depends on NumPy, which provides convenient and fast N-dimensional array manipulation.\nThe SciPy library is built to work with NumPy arrays, and provides many user-friendly and efficient numerical routines such as routines for numerical integration and optimization.\nTogether, they run on all popular operating systems, are quick to install, and are free of charge.\nNumPy and SciPy are easy to use, but powerful enough to be depended upon by some of the world’s leading scientists and engineers.",{"type":15,"tag":24,"props":89,"children":90},{},[91],{"type":21,"value":70},{"type":15,"tag":30,"props":93,"children":95},{"id":94},"other-software-tools",[96],{"type":21,"value":97},"Other software tools",{"type":15,"tag":24,"props":99,"children":100},{},[101],{"type":21,"value":102},"How about other software tools you are familiar with?\nCan you provide an example of software you are familiar with, and then classify it as \"research software\" or \"software in research\"?",{"title":7,"searchDepth":104,"depth":104,"links":105},2,[106],{"id":18,"depth":104,"text":22,"children":107},[108,109],{"id":32,"depth":10,"text":35},{"id":94,"depth":10,"text":97},"markdown","local_fs:modules:researchsoftware:exercise-is-it-research-software.md","local_fs","modules/researchsoftware/exercise-is-it-research-software.md","md",[116,150],{"_path":117,"_dir":118,"_draft":6,"_partial":6,"_locale":7,"title":119,"description":7,"body":120,"_type":110,"_id":148,"_source":112,"_file":149,"_extension":114},"/main/about","main","About",{"type":12,"children":121,"toc":144},[122,128,133,139],{"type":15,"tag":16,"props":123,"children":125},{"id":124},"about-the-research-software-support",[126],{"type":21,"value":127},"About the Research Software Support",{"type":15,"tag":24,"props":129,"children":130},{},[131],{"type":21,"value":132},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":134,"children":136},{"id":135},"target-audience",[137],{"type":21,"value":138},"Target audience",{"type":15,"tag":24,"props":140,"children":141},{},[142],{"type":21,"value":143},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":104,"depth":104,"links":145},[146,147],{"id":124,"depth":104,"text":127},{"id":135,"depth":104,"text":138},"local_fs:main:about.md","main/about.md",{"_path":151,"_dir":118,"_draft":6,"_partial":6,"_locale":7,"title":152,"description":7,"body":153,"_type":110,"_id":277,"_source":112,"_file":278,"_extension":114},"/main/contribute","Contribute",{"type":12,"children":154,"toc":272},[155,161,166,172,177],{"type":15,"tag":16,"props":156,"children":158},{"id":157},"contributing-to-the-research-software-support",[159],{"type":21,"value":160},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":162,"children":163},{},[164],{"type":21,"value":165},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":30,"props":167,"children":169},{"id":168},"what-can-i-do",[170],{"type":21,"value":171},"What can I do?",{"type":15,"tag":24,"props":173,"children":174},{},[175],{"type":21,"value":176},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":178,"props":179,"children":180},"ul",{},[181,196,237,260],{"type":15,"tag":182,"props":183,"children":184},"li",{},[185,187,194],{"type":21,"value":186},"Contribute to the content discussion in the ",{"type":15,"tag":47,"props":188,"children":191},{"href":189,"rel":190},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[51],[192],{"type":21,"value":193},"chapter issues",{"type":21,"value":195},", e.g. by listing good resources for information.",{"type":15,"tag":182,"props":197,"children":198},{},[199,205,207],{"type":15,"tag":47,"props":200,"children":202},{"href":201},"#elements-of-a-module",[203],{"type":21,"value":204},"Author a lesson",{"type":21,"value":206},", e.g. by:\n",{"type":15,"tag":178,"props":208,"children":209},{},[210,219,228],{"type":15,"tag":182,"props":211,"children":212},{},[213],{"type":15,"tag":47,"props":214,"children":216},{"href":215},"#slides",[217],{"type":21,"value":218},"Creating slides",{"type":15,"tag":182,"props":220,"children":221},{},[222],{"type":15,"tag":47,"props":223,"children":225},{"href":224},"#exercises",[226],{"type":21,"value":227},"Designing an exercise",{"type":15,"tag":182,"props":229,"children":230},{},[231],{"type":15,"tag":47,"props":232,"children":234},{"href":233},"#online-resources",[235],{"type":21,"value":236},"Curating online resources",{"type":15,"tag":182,"props":238,"children":239},{},[240,242,249,251,258],{"type":21,"value":241},"Review a lesson module; both by looking at ",{"type":15,"tag":47,"props":243,"children":246},{"href":244,"rel":245},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[51],[247],{"type":21,"value":248},"open PRs",{"type":21,"value":250},", as well as flagging issues for improvement in the ",{"type":15,"tag":47,"props":252,"children":255},{"href":253,"rel":254},"https://esciencecenter-digital-skills.github.io/research-software-support/",[51],[256],{"type":21,"value":257},"existing content",{"type":21,"value":259},".",{"type":15,"tag":182,"props":261,"children":262},{},[263,270],{"type":15,"tag":47,"props":264,"children":267},{"href":265,"rel":266},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[51],[268],{"type":21,"value":269},"Provide feedback",{"type":21,"value":271}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":104,"depth":104,"links":273},[274],{"id":157,"depth":104,"text":160,"children":275},[276],{"id":168,"depth":10,"text":171},"local_fs:main:contribute.md","main/contribute.md",1715801014696] \ No newline at end of file diff --git a/modules/researchsoftware/exercise-is-it-research-software/index.html b/modules/researchsoftware/exercise-is-it-research-software/index.html index 2c044258..8463a980 100644 --- a/modules/researchsoftware/exercise-is-it-research-software/index.html +++ b/modules/researchsoftware/exercise-is-it-research-software/index.html @@ -2,7 +2,7 @@ Is it research software? - + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - - + + -

    Module: researchsoftware

    Exercise: Is it research software?

    Using the definition of research software from the FAIR4RS working group, try to classify the following as "research software" or "software in research"

    Example software tools

    Shape Preserving Local Histogram Modification Algorithm

    An Analysis and Implementation of the Shape Preserving Local Histogram Modification Algorithm is a published article on IPOL. The source code implementing the algorithm is available for download.

    Is this "research software" or "software in research"?

    SciPy

    SciPy is open-source software for mathematics, science, and engineering. +

    Module: researchsoftware

    Exercise: Is it research software?

    Using the definition of research software from the FAIR4RS working group, try to classify the following as "research software" or "software in research"

    Example software tools

    Shape Preserving Local Histogram Modification Algorithm

    An Analysis and Implementation of the Shape Preserving Local Histogram Modification Algorithm is a published article on IPOL. The source code implementing the algorithm is available for download.

    Is this "research software" or "software in research"?

    SciPy

    SciPy is open-source software for mathematics, science, and engineering. It is also the name of a very popular conference on scientific programming with Python. The SciPy library depends on NumPy, which provides convenient and fast N-dimensional array manipulation. The SciPy library is built to work with NumPy arrays, and provides many user-friendly and efficient numerical routines such as routines for numerical integration and optimization. Together, they run on all popular operating systems, are quick to install, and are free of charge. NumPy and SciPy are easy to use, but powerful enough to be depended upon by some of the world’s leading scientists and engineers.

    Is this "research software" or "software in research"?

    Other software tools

    How about other software tools you are familiar with? -Can you provide an example of software you are familiar with, and then classify it as "research software" or "software in research"?

    - \ No newline at end of file +Can you provide an example of software you are familiar with, and then classify it as "research software" or "software in research"?

    + \ No newline at end of file diff --git a/modules/researchsoftware/exercise-research-life-cycle/_payload.json b/modules/researchsoftware/exercise-research-life-cycle/_payload.json index 964fb4d4..4daf81fc 100644 --- a/modules/researchsoftware/exercise-research-life-cycle/_payload.json +++ b/modules/researchsoftware/exercise-research-life-cycle/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":289},["Reactive",2],{"content-query-a6tZcpsSAy":3,"content-query-AT44bg6JPw":127},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":122,"_id":123,"_source":124,"_file":125,"_extension":126},"/modules/researchsoftware/exercise-research-life-cycle","researchsoftware",false,"","Where does software fit in the research life cycle?","exercise",4,{"type":12,"children":13,"toc":115},"root",[14,23,29,36,41,46,53,58],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"exercise-where-does-software-fit-in-the-research-life-cycle",[20],{"type":21,"value":22},"text","Exercise: Where does software fit in the research life cycle?",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27],{"type":21,"value":28},"Take a look at the research life cycle below.",{"type":15,"tag":30,"props":31,"children":35},"img",{"src":32,"alt":33,"width":34},"stories/_fairsoftware/researchcycle.png","The Research Life Cycle",400,[],{"type":15,"tag":24,"props":37,"children":38},{},[39],{"type":21,"value":40},"Think of a piece of research software you have used or developed.",{"type":15,"tag":24,"props":42,"children":43},{},[44],{"type":21,"value":45},"Where does it fit in the research life cycle?",{"type":15,"tag":47,"props":48,"children":50},"h3",{"id":49},"existing-software",[51],{"type":21,"value":52},"Existing software",{"type":15,"tag":24,"props":54,"children":55},{},[56],{"type":21,"value":57},"The following research software can also be used as examples:",{"type":15,"tag":59,"props":60,"children":61},"ul",{},[62,75,85,95,105],{"type":15,"tag":63,"props":64,"children":65},"li",{},[66],{"type":15,"tag":67,"props":68,"children":72},"a",{"href":69,"rel":70},"https://research-software-directory.org/software/xenon",[71],"nofollow",[73],{"type":21,"value":74},"Xenon",{"type":15,"tag":63,"props":76,"children":77},{},[78],{"type":15,"tag":67,"props":79,"children":82},{"href":80,"rel":81},"https://research-software-directory.org/software/esmvaltool",[71],[83],{"type":21,"value":84},"ESMValTool",{"type":15,"tag":63,"props":86,"children":87},{},[88],{"type":15,"tag":67,"props":89,"children":92},{"href":90,"rel":91},"https://research-software-directory.org/projects/rs-dat",[71],[93],{"type":21,"value":94},"RS-DAT",{"type":15,"tag":63,"props":96,"children":97},{},[98],{"type":15,"tag":67,"props":99,"children":102},{"href":100,"rel":101},"https://research-software-directory.org/software/haddock3",[71],[103],{"type":21,"value":104},"Haddock",{"type":15,"tag":63,"props":106,"children":107},{},[108],{"type":15,"tag":67,"props":109,"children":112},{"href":110,"rel":111},"https://cjvanlissa.github.io/worcs/index.html",[71],[113],{"type":21,"value":114},"worcs",{"title":7,"searchDepth":116,"depth":116,"links":117},2,[118],{"id":18,"depth":116,"text":22,"children":119},[120],{"id":49,"depth":121,"text":52},3,"markdown","local_fs:modules:researchsoftware:exercise-research-life-cycle.md","local_fs","modules/researchsoftware/exercise-research-life-cycle.md","md",[128,162],{"_path":129,"_dir":130,"_draft":6,"_partial":6,"_locale":7,"title":131,"description":7,"body":132,"_type":122,"_id":160,"_source":124,"_file":161,"_extension":126},"/main/about","main","About",{"type":12,"children":133,"toc":156},[134,140,145,151],{"type":15,"tag":16,"props":135,"children":137},{"id":136},"about-the-research-software-support",[138],{"type":21,"value":139},"About the Research Software Support",{"type":15,"tag":24,"props":141,"children":142},{},[143],{"type":21,"value":144},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":146,"children":148},{"id":147},"target-audience",[149],{"type":21,"value":150},"Target audience",{"type":15,"tag":24,"props":152,"children":153},{},[154],{"type":21,"value":155},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":116,"depth":116,"links":157},[158,159],{"id":136,"depth":116,"text":139},{"id":147,"depth":116,"text":150},"local_fs:main:about.md","main/about.md",{"_path":163,"_dir":130,"_draft":6,"_partial":6,"_locale":7,"title":164,"description":7,"body":165,"_type":122,"_id":287,"_source":124,"_file":288,"_extension":126},"/main/contribute","Contribute",{"type":12,"children":166,"toc":282},[167,173,178,184,189],{"type":15,"tag":16,"props":168,"children":170},{"id":169},"contributing-to-the-research-software-support",[171],{"type":21,"value":172},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":174,"children":175},{},[176],{"type":21,"value":177},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":47,"props":179,"children":181},{"id":180},"what-can-i-do",[182],{"type":21,"value":183},"What can I do?",{"type":15,"tag":24,"props":185,"children":186},{},[187],{"type":21,"value":188},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":59,"props":190,"children":191},{},[192,206,247,270],{"type":15,"tag":63,"props":193,"children":194},{},[195,197,204],{"type":21,"value":196},"Contribute to the content discussion in the ",{"type":15,"tag":67,"props":198,"children":201},{"href":199,"rel":200},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[71],[202],{"type":21,"value":203},"chapter issues",{"type":21,"value":205},", e.g. by listing good resources for information.",{"type":15,"tag":63,"props":207,"children":208},{},[209,215,217],{"type":15,"tag":67,"props":210,"children":212},{"href":211},"#elements-of-a-module",[213],{"type":21,"value":214},"Author a lesson",{"type":21,"value":216},", e.g. by:\n",{"type":15,"tag":59,"props":218,"children":219},{},[220,229,238],{"type":15,"tag":63,"props":221,"children":222},{},[223],{"type":15,"tag":67,"props":224,"children":226},{"href":225},"#slides",[227],{"type":21,"value":228},"Creating slides",{"type":15,"tag":63,"props":230,"children":231},{},[232],{"type":15,"tag":67,"props":233,"children":235},{"href":234},"#exercises",[236],{"type":21,"value":237},"Designing an exercise",{"type":15,"tag":63,"props":239,"children":240},{},[241],{"type":15,"tag":67,"props":242,"children":244},{"href":243},"#online-resources",[245],{"type":21,"value":246},"Curating online resources",{"type":15,"tag":63,"props":248,"children":249},{},[250,252,259,261,268],{"type":21,"value":251},"Review a lesson module; both by looking at ",{"type":15,"tag":67,"props":253,"children":256},{"href":254,"rel":255},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[71],[257],{"type":21,"value":258},"open PRs",{"type":21,"value":260},", as well as flagging issues for improvement in the ",{"type":15,"tag":67,"props":262,"children":265},{"href":263,"rel":264},"https://esciencecenter-digital-skills.github.io/research-software-support/",[71],[266],{"type":21,"value":267},"existing content",{"type":21,"value":269},".",{"type":15,"tag":63,"props":271,"children":272},{},[273,280],{"type":15,"tag":67,"props":274,"children":277},{"href":275,"rel":276},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[71],[278],{"type":21,"value":279},"Provide feedback",{"type":21,"value":281}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":116,"depth":116,"links":283},[284],{"id":169,"depth":116,"text":172,"children":285},[286],{"id":180,"depth":121,"text":183},"local_fs:main:contribute.md","main/contribute.md",1715800937516] \ No newline at end of file +[{"data":1,"prerenderedAt":289},["Reactive",2],{"content-query-a6tZcpsSAy":3,"content-query-AT44bg6JPw":127},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":122,"_id":123,"_source":124,"_file":125,"_extension":126},"/modules/researchsoftware/exercise-research-life-cycle","researchsoftware",false,"","Where does software fit in the research life cycle?","exercise",4,{"type":12,"children":13,"toc":115},"root",[14,23,29,36,41,46,53,58],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"exercise-where-does-software-fit-in-the-research-life-cycle",[20],{"type":21,"value":22},"text","Exercise: Where does software fit in the research life cycle?",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27],{"type":21,"value":28},"Take a look at the research life cycle below.",{"type":15,"tag":30,"props":31,"children":35},"img",{"src":32,"alt":33,"width":34},"stories/_fairsoftware/researchcycle.png","The Research Life Cycle",400,[],{"type":15,"tag":24,"props":37,"children":38},{},[39],{"type":21,"value":40},"Think of a piece of research software you have used or developed.",{"type":15,"tag":24,"props":42,"children":43},{},[44],{"type":21,"value":45},"Where does it fit in the research life cycle?",{"type":15,"tag":47,"props":48,"children":50},"h3",{"id":49},"existing-software",[51],{"type":21,"value":52},"Existing software",{"type":15,"tag":24,"props":54,"children":55},{},[56],{"type":21,"value":57},"The following research software can also be used as examples:",{"type":15,"tag":59,"props":60,"children":61},"ul",{},[62,75,85,95,105],{"type":15,"tag":63,"props":64,"children":65},"li",{},[66],{"type":15,"tag":67,"props":68,"children":72},"a",{"href":69,"rel":70},"https://research-software-directory.org/software/xenon",[71],"nofollow",[73],{"type":21,"value":74},"Xenon",{"type":15,"tag":63,"props":76,"children":77},{},[78],{"type":15,"tag":67,"props":79,"children":82},{"href":80,"rel":81},"https://research-software-directory.org/software/esmvaltool",[71],[83],{"type":21,"value":84},"ESMValTool",{"type":15,"tag":63,"props":86,"children":87},{},[88],{"type":15,"tag":67,"props":89,"children":92},{"href":90,"rel":91},"https://research-software-directory.org/projects/rs-dat",[71],[93],{"type":21,"value":94},"RS-DAT",{"type":15,"tag":63,"props":96,"children":97},{},[98],{"type":15,"tag":67,"props":99,"children":102},{"href":100,"rel":101},"https://research-software-directory.org/software/haddock3",[71],[103],{"type":21,"value":104},"Haddock",{"type":15,"tag":63,"props":106,"children":107},{},[108],{"type":15,"tag":67,"props":109,"children":112},{"href":110,"rel":111},"https://cjvanlissa.github.io/worcs/index.html",[71],[113],{"type":21,"value":114},"worcs",{"title":7,"searchDepth":116,"depth":116,"links":117},2,[118],{"id":18,"depth":116,"text":22,"children":119},[120],{"id":49,"depth":121,"text":52},3,"markdown","local_fs:modules:researchsoftware:exercise-research-life-cycle.md","local_fs","modules/researchsoftware/exercise-research-life-cycle.md","md",[128,162],{"_path":129,"_dir":130,"_draft":6,"_partial":6,"_locale":7,"title":131,"description":7,"body":132,"_type":122,"_id":160,"_source":124,"_file":161,"_extension":126},"/main/about","main","About",{"type":12,"children":133,"toc":156},[134,140,145,151],{"type":15,"tag":16,"props":135,"children":137},{"id":136},"about-the-research-software-support",[138],{"type":21,"value":139},"About the Research Software Support",{"type":15,"tag":24,"props":141,"children":142},{},[143],{"type":21,"value":144},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":146,"children":148},{"id":147},"target-audience",[149],{"type":21,"value":150},"Target audience",{"type":15,"tag":24,"props":152,"children":153},{},[154],{"type":21,"value":155},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":116,"depth":116,"links":157},[158,159],{"id":136,"depth":116,"text":139},{"id":147,"depth":116,"text":150},"local_fs:main:about.md","main/about.md",{"_path":163,"_dir":130,"_draft":6,"_partial":6,"_locale":7,"title":164,"description":7,"body":165,"_type":122,"_id":287,"_source":124,"_file":288,"_extension":126},"/main/contribute","Contribute",{"type":12,"children":166,"toc":282},[167,173,178,184,189],{"type":15,"tag":16,"props":168,"children":170},{"id":169},"contributing-to-the-research-software-support",[171],{"type":21,"value":172},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":174,"children":175},{},[176],{"type":21,"value":177},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":47,"props":179,"children":181},{"id":180},"what-can-i-do",[182],{"type":21,"value":183},"What can I do?",{"type":15,"tag":24,"props":185,"children":186},{},[187],{"type":21,"value":188},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":59,"props":190,"children":191},{},[192,206,247,270],{"type":15,"tag":63,"props":193,"children":194},{},[195,197,204],{"type":21,"value":196},"Contribute to the content discussion in the ",{"type":15,"tag":67,"props":198,"children":201},{"href":199,"rel":200},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[71],[202],{"type":21,"value":203},"chapter issues",{"type":21,"value":205},", e.g. by listing good resources for information.",{"type":15,"tag":63,"props":207,"children":208},{},[209,215,217],{"type":15,"tag":67,"props":210,"children":212},{"href":211},"#elements-of-a-module",[213],{"type":21,"value":214},"Author a lesson",{"type":21,"value":216},", e.g. by:\n",{"type":15,"tag":59,"props":218,"children":219},{},[220,229,238],{"type":15,"tag":63,"props":221,"children":222},{},[223],{"type":15,"tag":67,"props":224,"children":226},{"href":225},"#slides",[227],{"type":21,"value":228},"Creating slides",{"type":15,"tag":63,"props":230,"children":231},{},[232],{"type":15,"tag":67,"props":233,"children":235},{"href":234},"#exercises",[236],{"type":21,"value":237},"Designing an exercise",{"type":15,"tag":63,"props":239,"children":240},{},[241],{"type":15,"tag":67,"props":242,"children":244},{"href":243},"#online-resources",[245],{"type":21,"value":246},"Curating online resources",{"type":15,"tag":63,"props":248,"children":249},{},[250,252,259,261,268],{"type":21,"value":251},"Review a lesson module; both by looking at ",{"type":15,"tag":67,"props":253,"children":256},{"href":254,"rel":255},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[71],[257],{"type":21,"value":258},"open PRs",{"type":21,"value":260},", as well as flagging issues for improvement in the ",{"type":15,"tag":67,"props":262,"children":265},{"href":263,"rel":264},"https://esciencecenter-digital-skills.github.io/research-software-support/",[71],[266],{"type":21,"value":267},"existing content",{"type":21,"value":269},".",{"type":15,"tag":63,"props":271,"children":272},{},[273,280],{"type":15,"tag":67,"props":274,"children":277},{"href":275,"rel":276},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[71],[278],{"type":21,"value":279},"Provide feedback",{"type":21,"value":281}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":116,"depth":116,"links":283},[284],{"id":169,"depth":116,"text":172,"children":285},[286],{"id":180,"depth":121,"text":183},"local_fs:main:contribute.md","main/contribute.md",1715801014699] \ No newline at end of file diff --git a/modules/researchsoftware/exercise-research-life-cycle/index.html b/modules/researchsoftware/exercise-research-life-cycle/index.html index 6fc65199..3c835495 100644 --- a/modules/researchsoftware/exercise-research-life-cycle/index.html +++ b/modules/researchsoftware/exercise-research-life-cycle/index.html @@ -2,7 +2,7 @@ Where does software fit in the research life cycle? - + - - - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + - - + + -

    Module: researchsoftware

    Exercise: Where does software fit in the research life cycle?

    Take a look at the research life cycle below.

    The Research Life Cycle

    Think of a piece of research software you have used or developed.

    Where does it fit in the research life cycle?

    Existing software

    The following research software can also be used as examples:

    - \ No newline at end of file +

    Module: researchsoftware

    Exercise: Where does software fit in the research life cycle?

    Take a look at the research life cycle below.

    The Research Life Cycle

    Think of a piece of research software you have used or developed.

    Where does it fit in the research life cycle?

    Existing software

    The following research software can also be used as examples:

    + \ No newline at end of file diff --git a/modules/researchsoftware/info/_payload.json b/modules/researchsoftware/info/_payload.json index 6e3d3592..6b7b450e 100644 --- a/modules/researchsoftware/info/_payload.json +++ b/modules/researchsoftware/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-KMyp2EvWEb":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/researchsoftware/info","researchsoftware",false,"","Learning objectives","Learning objectives for the Research Software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:researchsoftware:info.md","local_fs","modules/researchsoftware/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715800937071] \ No newline at end of file +[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-KMyp2EvWEb":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/researchsoftware/info","researchsoftware",false,"","Learning objectives","Learning objectives for the Research Software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:researchsoftware:info.md","local_fs","modules/researchsoftware/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715801014239] \ No newline at end of file diff --git a/modules/researchsoftware/info/index.html b/modules/researchsoftware/info/index.html index be57d7e0..10657791 100644 --- a/modules/researchsoftware/info/index.html +++ b/modules/researchsoftware/info/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - + + + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/researchsoftware/research-software/_payload.json b/modules/researchsoftware/research-software/_payload.json index b32dcdc7..f9abe759 100644 --- a/modules/researchsoftware/research-software/_payload.json +++ b/modules/researchsoftware/research-software/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":244},["Reactive",2],{"content-query-XjWHvXhoX7":3,"content-query-AT44bg6JPw":80},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":75,"_id":76,"_source":77,"_file":78,"_extension":79},"/modules/researchsoftware/research-software","researchsoftware",false,"","The role of research software","reading",5,{"type":12,"children":13,"toc":71},"root",[14,23,29,34,46,51],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"the-role-of-research-software-10-minutes",[20],{"type":21,"value":22},"text","The role of research software (10 minutes)",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27],{"type":21,"value":28},"The following piece was written after a workshop called \"The Future of Research Software\", held in the Netherlands in 2022.",{"type":15,"tag":24,"props":30,"children":31},{},[32],{"type":21,"value":33},"It explores the different roles for research software in the research life cycle, strengthening the case for sustainable software.",{"type":15,"tag":24,"props":35,"children":36},{},[37],{"type":15,"tag":38,"props":39,"children":43},"a",{"href":40,"rel":41},"https://upstream.force11.org/defining-the-roles-of-research-software/",[42],"nofollow",[44],{"type":21,"value":45},"Defining the Roles of Research Software",{"type":15,"tag":24,"props":47,"children":48},{},[49],{"type":21,"value":50},"After reading the piece, discuss the following questions:",{"type":15,"tag":52,"props":53,"children":54},"ul",{},[55,61,66],{"type":15,"tag":56,"props":57,"children":58},"li",{},[59],{"type":21,"value":60},"What are the different roles of research software?",{"type":15,"tag":56,"props":62,"children":63},{},[64],{"type":21,"value":65},"What are the challenges for each of these roles?",{"type":15,"tag":56,"props":67,"children":68},{},[69],{"type":21,"value":70},"How can we address these challenges?",{"title":7,"searchDepth":72,"depth":72,"links":73},2,[74],{"id":18,"depth":72,"text":22},"markdown","local_fs:modules:researchsoftware:research-software.md","local_fs","modules/researchsoftware/research-software.md","md",[81,115],{"_path":82,"_dir":83,"_draft":6,"_partial":6,"_locale":7,"title":84,"description":7,"body":85,"_type":75,"_id":113,"_source":77,"_file":114,"_extension":79},"/main/about","main","About",{"type":12,"children":86,"toc":109},[87,93,98,104],{"type":15,"tag":16,"props":88,"children":90},{"id":89},"about-the-research-software-support",[91],{"type":21,"value":92},"About the Research Software Support",{"type":15,"tag":24,"props":94,"children":95},{},[96],{"type":21,"value":97},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":99,"children":101},{"id":100},"target-audience",[102],{"type":21,"value":103},"Target audience",{"type":15,"tag":24,"props":105,"children":106},{},[107],{"type":21,"value":108},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":72,"depth":72,"links":110},[111,112],{"id":89,"depth":72,"text":92},{"id":100,"depth":72,"text":103},"local_fs:main:about.md","main/about.md",{"_path":116,"_dir":83,"_draft":6,"_partial":6,"_locale":7,"title":117,"description":7,"body":118,"_type":75,"_id":242,"_source":77,"_file":243,"_extension":79},"/main/contribute","Contribute",{"type":12,"children":119,"toc":236},[120,126,131,138,143],{"type":15,"tag":16,"props":121,"children":123},{"id":122},"contributing-to-the-research-software-support",[124],{"type":21,"value":125},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":127,"children":128},{},[129],{"type":21,"value":130},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":132,"props":133,"children":135},"h3",{"id":134},"what-can-i-do",[136],{"type":21,"value":137},"What can I do?",{"type":15,"tag":24,"props":139,"children":140},{},[141],{"type":21,"value":142},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":52,"props":144,"children":145},{},[146,160,201,224],{"type":15,"tag":56,"props":147,"children":148},{},[149,151,158],{"type":21,"value":150},"Contribute to the content discussion in the ",{"type":15,"tag":38,"props":152,"children":155},{"href":153,"rel":154},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[42],[156],{"type":21,"value":157},"chapter issues",{"type":21,"value":159},", e.g. by listing good resources for information.",{"type":15,"tag":56,"props":161,"children":162},{},[163,169,171],{"type":15,"tag":38,"props":164,"children":166},{"href":165},"#elements-of-a-module",[167],{"type":21,"value":168},"Author a lesson",{"type":21,"value":170},", e.g. by:\n",{"type":15,"tag":52,"props":172,"children":173},{},[174,183,192],{"type":15,"tag":56,"props":175,"children":176},{},[177],{"type":15,"tag":38,"props":178,"children":180},{"href":179},"#slides",[181],{"type":21,"value":182},"Creating slides",{"type":15,"tag":56,"props":184,"children":185},{},[186],{"type":15,"tag":38,"props":187,"children":189},{"href":188},"#exercises",[190],{"type":21,"value":191},"Designing an exercise",{"type":15,"tag":56,"props":193,"children":194},{},[195],{"type":15,"tag":38,"props":196,"children":198},{"href":197},"#online-resources",[199],{"type":21,"value":200},"Curating online resources",{"type":15,"tag":56,"props":202,"children":203},{},[204,206,213,215,222],{"type":21,"value":205},"Review a lesson module; both by looking at ",{"type":15,"tag":38,"props":207,"children":210},{"href":208,"rel":209},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[42],[211],{"type":21,"value":212},"open PRs",{"type":21,"value":214},", as well as flagging issues for improvement in the ",{"type":15,"tag":38,"props":216,"children":219},{"href":217,"rel":218},"https://esciencecenter-digital-skills.github.io/research-software-support/",[42],[220],{"type":21,"value":221},"existing content",{"type":21,"value":223},".",{"type":15,"tag":56,"props":225,"children":226},{},[227,234],{"type":15,"tag":38,"props":228,"children":231},{"href":229,"rel":230},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[42],[232],{"type":21,"value":233},"Provide feedback",{"type":21,"value":235}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":72,"depth":72,"links":237},[238],{"id":122,"depth":72,"text":125,"children":239},[240],{"id":134,"depth":241,"text":137},3,"local_fs:main:contribute.md","main/contribute.md",1715800937518] \ No newline at end of file +[{"data":1,"prerenderedAt":244},["Reactive",2],{"content-query-XjWHvXhoX7":3,"content-query-AT44bg6JPw":80},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":75,"_id":76,"_source":77,"_file":78,"_extension":79},"/modules/researchsoftware/research-software","researchsoftware",false,"","The role of research software","reading",5,{"type":12,"children":13,"toc":71},"root",[14,23,29,34,46,51],{"type":15,"tag":16,"props":17,"children":19},"element","h2",{"id":18},"the-role-of-research-software-10-minutes",[20],{"type":21,"value":22},"text","The role of research software (10 minutes)",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27],{"type":21,"value":28},"The following piece was written after a workshop called \"The Future of Research Software\", held in the Netherlands in 2022.",{"type":15,"tag":24,"props":30,"children":31},{},[32],{"type":21,"value":33},"It explores the different roles for research software in the research life cycle, strengthening the case for sustainable software.",{"type":15,"tag":24,"props":35,"children":36},{},[37],{"type":15,"tag":38,"props":39,"children":43},"a",{"href":40,"rel":41},"https://upstream.force11.org/defining-the-roles-of-research-software/",[42],"nofollow",[44],{"type":21,"value":45},"Defining the Roles of Research Software",{"type":15,"tag":24,"props":47,"children":48},{},[49],{"type":21,"value":50},"After reading the piece, discuss the following questions:",{"type":15,"tag":52,"props":53,"children":54},"ul",{},[55,61,66],{"type":15,"tag":56,"props":57,"children":58},"li",{},[59],{"type":21,"value":60},"What are the different roles of research software?",{"type":15,"tag":56,"props":62,"children":63},{},[64],{"type":21,"value":65},"What are the challenges for each of these roles?",{"type":15,"tag":56,"props":67,"children":68},{},[69],{"type":21,"value":70},"How can we address these challenges?",{"title":7,"searchDepth":72,"depth":72,"links":73},2,[74],{"id":18,"depth":72,"text":22},"markdown","local_fs:modules:researchsoftware:research-software.md","local_fs","modules/researchsoftware/research-software.md","md",[81,115],{"_path":82,"_dir":83,"_draft":6,"_partial":6,"_locale":7,"title":84,"description":7,"body":85,"_type":75,"_id":113,"_source":77,"_file":114,"_extension":79},"/main/about","main","About",{"type":12,"children":86,"toc":109},[87,93,98,104],{"type":15,"tag":16,"props":88,"children":90},{"id":89},"about-the-research-software-support",[91],{"type":21,"value":92},"About the Research Software Support",{"type":15,"tag":24,"props":94,"children":95},{},[96],{"type":21,"value":97},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":16,"props":99,"children":101},{"id":100},"target-audience",[102],{"type":21,"value":103},"Target audience",{"type":15,"tag":24,"props":105,"children":106},{},[107],{"type":21,"value":108},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":72,"depth":72,"links":110},[111,112],{"id":89,"depth":72,"text":92},{"id":100,"depth":72,"text":103},"local_fs:main:about.md","main/about.md",{"_path":116,"_dir":83,"_draft":6,"_partial":6,"_locale":7,"title":117,"description":7,"body":118,"_type":75,"_id":242,"_source":77,"_file":243,"_extension":79},"/main/contribute","Contribute",{"type":12,"children":119,"toc":236},[120,126,131,138,143],{"type":15,"tag":16,"props":121,"children":123},{"id":122},"contributing-to-the-research-software-support",[124],{"type":21,"value":125},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":127,"children":128},{},[129],{"type":21,"value":130},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":132,"props":133,"children":135},"h3",{"id":134},"what-can-i-do",[136],{"type":21,"value":137},"What can I do?",{"type":15,"tag":24,"props":139,"children":140},{},[141],{"type":21,"value":142},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":52,"props":144,"children":145},{},[146,160,201,224],{"type":15,"tag":56,"props":147,"children":148},{},[149,151,158],{"type":21,"value":150},"Contribute to the content discussion in the ",{"type":15,"tag":38,"props":152,"children":155},{"href":153,"rel":154},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[42],[156],{"type":21,"value":157},"chapter issues",{"type":21,"value":159},", e.g. by listing good resources for information.",{"type":15,"tag":56,"props":161,"children":162},{},[163,169,171],{"type":15,"tag":38,"props":164,"children":166},{"href":165},"#elements-of-a-module",[167],{"type":21,"value":168},"Author a lesson",{"type":21,"value":170},", e.g. by:\n",{"type":15,"tag":52,"props":172,"children":173},{},[174,183,192],{"type":15,"tag":56,"props":175,"children":176},{},[177],{"type":15,"tag":38,"props":178,"children":180},{"href":179},"#slides",[181],{"type":21,"value":182},"Creating slides",{"type":15,"tag":56,"props":184,"children":185},{},[186],{"type":15,"tag":38,"props":187,"children":189},{"href":188},"#exercises",[190],{"type":21,"value":191},"Designing an exercise",{"type":15,"tag":56,"props":193,"children":194},{},[195],{"type":15,"tag":38,"props":196,"children":198},{"href":197},"#online-resources",[199],{"type":21,"value":200},"Curating online resources",{"type":15,"tag":56,"props":202,"children":203},{},[204,206,213,215,222],{"type":21,"value":205},"Review a lesson module; both by looking at ",{"type":15,"tag":38,"props":207,"children":210},{"href":208,"rel":209},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[42],[211],{"type":21,"value":212},"open PRs",{"type":21,"value":214},", as well as flagging issues for improvement in the ",{"type":15,"tag":38,"props":216,"children":219},{"href":217,"rel":218},"https://esciencecenter-digital-skills.github.io/research-software-support/",[42],[220],{"type":21,"value":221},"existing content",{"type":21,"value":223},".",{"type":15,"tag":56,"props":225,"children":226},{},[227,234],{"type":15,"tag":38,"props":228,"children":231},{"href":229,"rel":230},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[42],[232],{"type":21,"value":233},"Provide feedback",{"type":21,"value":235}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":72,"depth":72,"links":237},[238],{"id":122,"depth":72,"text":125,"children":239},[240],{"id":134,"depth":241,"text":137},3,"local_fs:main:contribute.md","main/contribute.md",1715801014709] \ No newline at end of file diff --git a/modules/researchsoftware/research-software/index.html b/modules/researchsoftware/research-software/index.html index 2547f4ee..a8cd0836 100644 --- a/modules/researchsoftware/research-software/index.html +++ b/modules/researchsoftware/research-software/index.html @@ -2,7 +2,7 @@ The role of research software - + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - - + + -

    Module: researchsoftware

    The role of research software (10 minutes)

    The following piece was written after a workshop called "The Future of Research Software", held in the Netherlands in 2022.

    It explores the different roles for research software in the research life cycle, strengthening the case for sustainable software.

    Defining the Roles of Research Software

    After reading the piece, discuss the following questions:

    • What are the different roles of research software?
    • What are the challenges for each of these roles?
    • How can we address these challenges?
    - \ No newline at end of file +

    Module: researchsoftware

    The role of research software (10 minutes)

    The following piece was written after a workshop called "The Future of Research Software", held in the Netherlands in 2022.

    It explores the different roles for research software in the research life cycle, strengthening the case for sustainable software.

    Defining the Roles of Research Software

    After reading the piece, discuss the following questions:

    • What are the different roles of research software?
    • What are the challenges for each of these roles?
    • How can we address these challenges?
    + \ No newline at end of file diff --git a/modules/researchsoftware/slides-researchsoftware/_payload.json b/modules/researchsoftware/slides-researchsoftware/_payload.json index 14940989..6470bd2e 100644 --- a/modules/researchsoftware/slides-researchsoftware/_payload.json +++ b/modules/researchsoftware/slides-researchsoftware/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":428},["Reactive",2],{"content-query-qRUdVkOtTn":3,"content-query-AT44bg6JPw":263},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":258,"_id":259,"_source":260,"_file":261,"_extension":262},"/modules/researchsoftware/slides-researchsoftware","researchsoftware",false,"","Research Software","slides",2,{"type":12,"children":13,"toc":252},"root",[14,23,27,38,48,67,72,84,89,94,99,102,108,116,124,128,133,136,143,151,155,160,163,169,189,193,198,201,207,225,228,238,247],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"research-software",[20],{"type":21,"value":22},"text","Research software",{"type":15,"tag":24,"props":25,"children":26},"hr",{},[],{"type":15,"tag":28,"props":29,"children":31},"h2",{"id":30},"ceci-nest-pas-une-photo",[32],{"type":15,"tag":33,"props":34,"children":35},"em",{},[36],{"type":21,"value":37},"Ceci n'est pas une photo",{"type":15,"tag":39,"props":40,"children":41},"center",{},[42],{"type":15,"tag":43,"props":44,"children":47},"img",{"src":45,"width":46},"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Black_hole_-_Messier_87_crop_max_res.jpg/1280px-Black_hole_-_Messier_87_crop_max_res.jpg","55%",[],{"type":15,"tag":49,"props":50,"children":51},"p",{},[52],{"type":15,"tag":53,"props":54,"children":55},"small",{},[56,65],{"type":15,"tag":57,"props":58,"children":62},"a",{"href":59,"rel":60},"https://doi.org/10.3847/2041-8213/ab0ec7",[61],"nofollow",[63],{"type":21,"value":64},"The Event Horizon Telescope Collaboration et al. 2019",{"type":21,"value":66}," (CC BY 3.0)",{"type":15,"tag":49,"props":68,"children":69},{},[70],{"type":21,"value":71},"Note:",{"type":15,"tag":49,"props":73,"children":74},{},[75,77,82],{"type":21,"value":76},"Software plays an important role in science. A first thought may be its role in data collection and analysis. Further, it may play a role in designing experiments, based on models generated. It may ",{"type":15,"tag":33,"props":78,"children":79},{},[80],{"type":21,"value":81},"be",{"type":21,"value":83}," the experiment itself, simulate a research outcome based on data or ideas entered; it may also be the \"brain\" behind controlling crucial instrumentation.",{"type":15,"tag":49,"props":85,"children":86},{},[87],{"type":21,"value":88},"What scientific software can you think of?",{"type":15,"tag":49,"props":90,"children":91},{},[92],{"type":21,"value":93},"What role does it play?",{"type":15,"tag":49,"props":95,"children":96},{},[97],{"type":21,"value":98},"An example here: the Event Horizon Telescope, which took a \"picture\" of a black hole.\nThe \"telescope\" is not a single tool, but complex: a \"planet-scale array of eight ground-based radio telescopes\" (wikipedia).\nThe separate telescopes collect data that is synchronized with atomic clocks, and the data is combined at highly specialised supercomputers.\nThe data can be converted into an image using custom software.",{"type":15,"tag":24,"props":100,"children":101},{},[],{"type":15,"tag":28,"props":103,"children":105},{"id":104},"the-research-lifecycle",[106],{"type":21,"value":107},"The research lifecycle",{"type":15,"tag":39,"props":109,"children":110},{},[111],{"type":15,"tag":43,"props":112,"children":115},{"src":113,"alt":114,"width":46},"stories/_fairsoftware/researchcycle.png","The Research Life Cycle",[],{"type":15,"tag":49,"props":117,"children":118},{},[119],{"type":15,"tag":53,"props":120,"children":121},{},[122],{"type":21,"value":123},"Software is used all across the research lifecycle",{"type":15,"tag":49,"props":125,"children":126},{},[127],{"type":21,"value":71},{"type":15,"tag":49,"props":129,"children":130},{},[131],{"type":21,"value":132},"Software is used all across the research life cycle.",{"type":15,"tag":24,"props":134,"children":135},{},[],{"type":15,"tag":39,"props":137,"children":138},{},[139],{"type":15,"tag":43,"props":140,"children":142},{"src":141,"width":46},"stories/_fairsoftware/definition.png",[],{"type":15,"tag":49,"props":144,"children":145},{},[146],{"type":15,"tag":53,"props":147,"children":148},{},[149],{"type":21,"value":150},"definition of Research Software from the FAIR4RS working group",{"type":15,"tag":49,"props":152,"children":153},{},[154],{"type":21,"value":71},{"type":15,"tag":49,"props":156,"children":157},{},[158],{"type":21,"value":159},"A definition of research software, from the FAIR4RS working group.\nIt is important that not all software that is used in research is research software.\nFor example, a text editor that is used to write a paper is not research software.\nNor is powerpoint, a web browser, or the software used to guide the telescope.\nEven tools like R or Python are not necessarily research software.\nThe code written in R or Python for an analysis would be research software, however.\nJust like a custom-made Excel macro that is used to analyse data.\nOr a custom-made web application that is used to collect data.",{"type":15,"tag":24,"props":161,"children":162},{},[],{"type":15,"tag":28,"props":164,"children":166},{"id":165},"why-the-distinction",[167],{"type":21,"value":168},"Why the distinction?",{"type":15,"tag":170,"props":171,"children":172},"ul",{},[173,179,184],{"type":15,"tag":174,"props":175,"children":176},"li",{},[177],{"type":21,"value":178},"Research software is an important asset and output of research",{"type":15,"tag":174,"props":180,"children":181},{},[182],{"type":21,"value":183},"Enable proper attribution",{"type":15,"tag":174,"props":185,"children":186},{},[187],{"type":21,"value":188},"Increase Findability and Reuse",{"type":15,"tag":49,"props":190,"children":191},{},[192],{"type":21,"value":71},{"type":15,"tag":49,"props":194,"children":195},{},[196],{"type":21,"value":197},"The distinction is important",{"type":15,"tag":24,"props":199,"children":200},{},[],{"type":15,"tag":28,"props":202,"children":204},{"id":203},"take-home-messages",[205],{"type":21,"value":206},"Take home messages",{"type":15,"tag":170,"props":208,"children":209},{},[210,215,220],{"type":15,"tag":174,"props":211,"children":212},{},[213],{"type":21,"value":214},"Software is an important part of research",{"type":15,"tag":174,"props":216,"children":217},{},[218],{"type":21,"value":219},"Not all software used in research is research software",{"type":15,"tag":174,"props":221,"children":222},{},[223],{"type":21,"value":224},"It is important to regard research software in the whole research lifecycle",{"type":15,"tag":24,"props":226,"children":227},{},[],{"type":15,"tag":49,"props":229,"children":230},{},[231],{"type":15,"tag":57,"props":232,"children":235},{"href":233,"rel":234},"http://www.esciencecenter.nl",[61],[236],{"type":21,"value":237},"www.esciencecenter.nl",{"type":15,"tag":49,"props":239,"children":240},{},[241],{"type":15,"tag":57,"props":242,"children":244},{"href":243},"mailto:info@esciencecenter.nl",[245],{"type":21,"value":246},"info@esciencecenter.nl",{"type":15,"tag":49,"props":248,"children":249},{},[250],{"type":21,"value":251},"020 - 460 47 70",{"title":7,"searchDepth":10,"depth":10,"links":253},[254,255,256,257],{"id":30,"depth":10,"text":37},{"id":104,"depth":10,"text":107},{"id":165,"depth":10,"text":168},{"id":203,"depth":10,"text":206},"markdown","local_fs:modules:researchsoftware:slides-researchsoftware.pmd","local_fs","modules/researchsoftware/slides-researchsoftware.pmd","pmd",[264,299],{"_path":265,"_dir":266,"_draft":6,"_partial":6,"_locale":7,"title":267,"description":7,"body":268,"_type":258,"_id":296,"_source":260,"_file":297,"_extension":298},"/main/about","main","About",{"type":12,"children":269,"toc":292},[270,276,281,287],{"type":15,"tag":28,"props":271,"children":273},{"id":272},"about-the-research-software-support",[274],{"type":21,"value":275},"About the Research Software Support",{"type":15,"tag":49,"props":277,"children":278},{},[279],{"type":21,"value":280},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":28,"props":282,"children":284},{"id":283},"target-audience",[285],{"type":21,"value":286},"Target audience",{"type":15,"tag":49,"props":288,"children":289},{},[290],{"type":21,"value":291},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":10,"depth":10,"links":293},[294,295],{"id":272,"depth":10,"text":275},{"id":283,"depth":10,"text":286},"local_fs:main:about.md","main/about.md","md",{"_path":300,"_dir":266,"_draft":6,"_partial":6,"_locale":7,"title":301,"description":7,"body":302,"_type":258,"_id":426,"_source":260,"_file":427,"_extension":298},"/main/contribute","Contribute",{"type":12,"children":303,"toc":420},[304,310,315,322,327],{"type":15,"tag":28,"props":305,"children":307},{"id":306},"contributing-to-the-research-software-support",[308],{"type":21,"value":309},"Contributing to the Research Software Support",{"type":15,"tag":49,"props":311,"children":312},{},[313],{"type":21,"value":314},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":316,"props":317,"children":319},"h3",{"id":318},"what-can-i-do",[320],{"type":21,"value":321},"What can I do?",{"type":15,"tag":49,"props":323,"children":324},{},[325],{"type":21,"value":326},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":170,"props":328,"children":329},{},[330,344,385,408],{"type":15,"tag":174,"props":331,"children":332},{},[333,335,342],{"type":21,"value":334},"Contribute to the content discussion in the ",{"type":15,"tag":57,"props":336,"children":339},{"href":337,"rel":338},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[61],[340],{"type":21,"value":341},"chapter issues",{"type":21,"value":343},", e.g. by listing good resources for information.",{"type":15,"tag":174,"props":345,"children":346},{},[347,353,355],{"type":15,"tag":57,"props":348,"children":350},{"href":349},"#elements-of-a-module",[351],{"type":21,"value":352},"Author a lesson",{"type":21,"value":354},", e.g. by:\n",{"type":15,"tag":170,"props":356,"children":357},{},[358,367,376],{"type":15,"tag":174,"props":359,"children":360},{},[361],{"type":15,"tag":57,"props":362,"children":364},{"href":363},"#slides",[365],{"type":21,"value":366},"Creating slides",{"type":15,"tag":174,"props":368,"children":369},{},[370],{"type":15,"tag":57,"props":371,"children":373},{"href":372},"#exercises",[374],{"type":21,"value":375},"Designing an exercise",{"type":15,"tag":174,"props":377,"children":378},{},[379],{"type":15,"tag":57,"props":380,"children":382},{"href":381},"#online-resources",[383],{"type":21,"value":384},"Curating online resources",{"type":15,"tag":174,"props":386,"children":387},{},[388,390,397,399,406],{"type":21,"value":389},"Review a lesson module; both by looking at ",{"type":15,"tag":57,"props":391,"children":394},{"href":392,"rel":393},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[61],[395],{"type":21,"value":396},"open PRs",{"type":21,"value":398},", as well as flagging issues for improvement in the ",{"type":15,"tag":57,"props":400,"children":403},{"href":401,"rel":402},"https://esciencecenter-digital-skills.github.io/research-software-support/",[61],[404],{"type":21,"value":405},"existing content",{"type":21,"value":407},".",{"type":15,"tag":174,"props":409,"children":410},{},[411,418],{"type":15,"tag":57,"props":412,"children":415},{"href":413,"rel":414},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[61],[416],{"type":21,"value":417},"Provide feedback",{"type":21,"value":419}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":10,"depth":10,"links":421},[422],{"id":306,"depth":10,"text":309,"children":423},[424],{"id":318,"depth":425,"text":321},3,"local_fs:main:contribute.md","main/contribute.md",1715800937511] \ No newline at end of file +[{"data":1,"prerenderedAt":428},["Reactive",2],{"content-query-qRUdVkOtTn":3,"content-query-AT44bg6JPw":263},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":258,"_id":259,"_source":260,"_file":261,"_extension":262},"/modules/researchsoftware/slides-researchsoftware","researchsoftware",false,"","Research Software","slides",2,{"type":12,"children":13,"toc":252},"root",[14,23,27,38,48,67,72,84,89,94,99,102,108,116,124,128,133,136,143,151,155,160,163,169,189,193,198,201,207,225,228,238,247],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"research-software",[20],{"type":21,"value":22},"text","Research software",{"type":15,"tag":24,"props":25,"children":26},"hr",{},[],{"type":15,"tag":28,"props":29,"children":31},"h2",{"id":30},"ceci-nest-pas-une-photo",[32],{"type":15,"tag":33,"props":34,"children":35},"em",{},[36],{"type":21,"value":37},"Ceci n'est pas une photo",{"type":15,"tag":39,"props":40,"children":41},"center",{},[42],{"type":15,"tag":43,"props":44,"children":47},"img",{"src":45,"width":46},"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Black_hole_-_Messier_87_crop_max_res.jpg/1280px-Black_hole_-_Messier_87_crop_max_res.jpg","55%",[],{"type":15,"tag":49,"props":50,"children":51},"p",{},[52],{"type":15,"tag":53,"props":54,"children":55},"small",{},[56,65],{"type":15,"tag":57,"props":58,"children":62},"a",{"href":59,"rel":60},"https://doi.org/10.3847/2041-8213/ab0ec7",[61],"nofollow",[63],{"type":21,"value":64},"The Event Horizon Telescope Collaboration et al. 2019",{"type":21,"value":66}," (CC BY 3.0)",{"type":15,"tag":49,"props":68,"children":69},{},[70],{"type":21,"value":71},"Note:",{"type":15,"tag":49,"props":73,"children":74},{},[75,77,82],{"type":21,"value":76},"Software plays an important role in science. A first thought may be its role in data collection and analysis. Further, it may play a role in designing experiments, based on models generated. It may ",{"type":15,"tag":33,"props":78,"children":79},{},[80],{"type":21,"value":81},"be",{"type":21,"value":83}," the experiment itself, simulate a research outcome based on data or ideas entered; it may also be the \"brain\" behind controlling crucial instrumentation.",{"type":15,"tag":49,"props":85,"children":86},{},[87],{"type":21,"value":88},"What scientific software can you think of?",{"type":15,"tag":49,"props":90,"children":91},{},[92],{"type":21,"value":93},"What role does it play?",{"type":15,"tag":49,"props":95,"children":96},{},[97],{"type":21,"value":98},"An example here: the Event Horizon Telescope, which took a \"picture\" of a black hole.\nThe \"telescope\" is not a single tool, but complex: a \"planet-scale array of eight ground-based radio telescopes\" (wikipedia).\nThe separate telescopes collect data that is synchronized with atomic clocks, and the data is combined at highly specialised supercomputers.\nThe data can be converted into an image using custom software.",{"type":15,"tag":24,"props":100,"children":101},{},[],{"type":15,"tag":28,"props":103,"children":105},{"id":104},"the-research-lifecycle",[106],{"type":21,"value":107},"The research lifecycle",{"type":15,"tag":39,"props":109,"children":110},{},[111],{"type":15,"tag":43,"props":112,"children":115},{"src":113,"alt":114,"width":46},"stories/_fairsoftware/researchcycle.png","The Research Life Cycle",[],{"type":15,"tag":49,"props":117,"children":118},{},[119],{"type":15,"tag":53,"props":120,"children":121},{},[122],{"type":21,"value":123},"Software is used all across the research lifecycle",{"type":15,"tag":49,"props":125,"children":126},{},[127],{"type":21,"value":71},{"type":15,"tag":49,"props":129,"children":130},{},[131],{"type":21,"value":132},"Software is used all across the research life cycle.",{"type":15,"tag":24,"props":134,"children":135},{},[],{"type":15,"tag":39,"props":137,"children":138},{},[139],{"type":15,"tag":43,"props":140,"children":142},{"src":141,"width":46},"stories/_fairsoftware/definition.png",[],{"type":15,"tag":49,"props":144,"children":145},{},[146],{"type":15,"tag":53,"props":147,"children":148},{},[149],{"type":21,"value":150},"definition of Research Software from the FAIR4RS working group",{"type":15,"tag":49,"props":152,"children":153},{},[154],{"type":21,"value":71},{"type":15,"tag":49,"props":156,"children":157},{},[158],{"type":21,"value":159},"A definition of research software, from the FAIR4RS working group.\nIt is important that not all software that is used in research is research software.\nFor example, a text editor that is used to write a paper is not research software.\nNor is powerpoint, a web browser, or the software used to guide the telescope.\nEven tools like R or Python are not necessarily research software.\nThe code written in R or Python for an analysis would be research software, however.\nJust like a custom-made Excel macro that is used to analyse data.\nOr a custom-made web application that is used to collect data.",{"type":15,"tag":24,"props":161,"children":162},{},[],{"type":15,"tag":28,"props":164,"children":166},{"id":165},"why-the-distinction",[167],{"type":21,"value":168},"Why the distinction?",{"type":15,"tag":170,"props":171,"children":172},"ul",{},[173,179,184],{"type":15,"tag":174,"props":175,"children":176},"li",{},[177],{"type":21,"value":178},"Research software is an important asset and output of research",{"type":15,"tag":174,"props":180,"children":181},{},[182],{"type":21,"value":183},"Enable proper attribution",{"type":15,"tag":174,"props":185,"children":186},{},[187],{"type":21,"value":188},"Increase Findability and Reuse",{"type":15,"tag":49,"props":190,"children":191},{},[192],{"type":21,"value":71},{"type":15,"tag":49,"props":194,"children":195},{},[196],{"type":21,"value":197},"The distinction is important",{"type":15,"tag":24,"props":199,"children":200},{},[],{"type":15,"tag":28,"props":202,"children":204},{"id":203},"take-home-messages",[205],{"type":21,"value":206},"Take home messages",{"type":15,"tag":170,"props":208,"children":209},{},[210,215,220],{"type":15,"tag":174,"props":211,"children":212},{},[213],{"type":21,"value":214},"Software is an important part of research",{"type":15,"tag":174,"props":216,"children":217},{},[218],{"type":21,"value":219},"Not all software used in research is research software",{"type":15,"tag":174,"props":221,"children":222},{},[223],{"type":21,"value":224},"It is important to regard research software in the whole research lifecycle",{"type":15,"tag":24,"props":226,"children":227},{},[],{"type":15,"tag":49,"props":229,"children":230},{},[231],{"type":15,"tag":57,"props":232,"children":235},{"href":233,"rel":234},"http://www.esciencecenter.nl",[61],[236],{"type":21,"value":237},"www.esciencecenter.nl",{"type":15,"tag":49,"props":239,"children":240},{},[241],{"type":15,"tag":57,"props":242,"children":244},{"href":243},"mailto:info@esciencecenter.nl",[245],{"type":21,"value":246},"info@esciencecenter.nl",{"type":15,"tag":49,"props":248,"children":249},{},[250],{"type":21,"value":251},"020 - 460 47 70",{"title":7,"searchDepth":10,"depth":10,"links":253},[254,255,256,257],{"id":30,"depth":10,"text":37},{"id":104,"depth":10,"text":107},{"id":165,"depth":10,"text":168},{"id":203,"depth":10,"text":206},"markdown","local_fs:modules:researchsoftware:slides-researchsoftware.pmd","local_fs","modules/researchsoftware/slides-researchsoftware.pmd","pmd",[264,299],{"_path":265,"_dir":266,"_draft":6,"_partial":6,"_locale":7,"title":267,"description":7,"body":268,"_type":258,"_id":296,"_source":260,"_file":297,"_extension":298},"/main/about","main","About",{"type":12,"children":269,"toc":292},[270,276,281,287],{"type":15,"tag":28,"props":271,"children":273},{"id":272},"about-the-research-software-support",[274],{"type":21,"value":275},"About the Research Software Support",{"type":15,"tag":49,"props":277,"children":278},{},[279],{"type":21,"value":280},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":28,"props":282,"children":284},{"id":283},"target-audience",[285],{"type":21,"value":286},"Target audience",{"type":15,"tag":49,"props":288,"children":289},{},[290],{"type":21,"value":291},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":10,"depth":10,"links":293},[294,295],{"id":272,"depth":10,"text":275},{"id":283,"depth":10,"text":286},"local_fs:main:about.md","main/about.md","md",{"_path":300,"_dir":266,"_draft":6,"_partial":6,"_locale":7,"title":301,"description":7,"body":302,"_type":258,"_id":426,"_source":260,"_file":427,"_extension":298},"/main/contribute","Contribute",{"type":12,"children":303,"toc":420},[304,310,315,322,327],{"type":15,"tag":28,"props":305,"children":307},{"id":306},"contributing-to-the-research-software-support",[308],{"type":21,"value":309},"Contributing to the Research Software Support",{"type":15,"tag":49,"props":311,"children":312},{},[313],{"type":21,"value":314},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":316,"props":317,"children":319},"h3",{"id":318},"what-can-i-do",[320],{"type":21,"value":321},"What can I do?",{"type":15,"tag":49,"props":323,"children":324},{},[325],{"type":21,"value":326},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":170,"props":328,"children":329},{},[330,344,385,408],{"type":15,"tag":174,"props":331,"children":332},{},[333,335,342],{"type":21,"value":334},"Contribute to the content discussion in the ",{"type":15,"tag":57,"props":336,"children":339},{"href":337,"rel":338},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[61],[340],{"type":21,"value":341},"chapter issues",{"type":21,"value":343},", e.g. by listing good resources for information.",{"type":15,"tag":174,"props":345,"children":346},{},[347,353,355],{"type":15,"tag":57,"props":348,"children":350},{"href":349},"#elements-of-a-module",[351],{"type":21,"value":352},"Author a lesson",{"type":21,"value":354},", e.g. by:\n",{"type":15,"tag":170,"props":356,"children":357},{},[358,367,376],{"type":15,"tag":174,"props":359,"children":360},{},[361],{"type":15,"tag":57,"props":362,"children":364},{"href":363},"#slides",[365],{"type":21,"value":366},"Creating slides",{"type":15,"tag":174,"props":368,"children":369},{},[370],{"type":15,"tag":57,"props":371,"children":373},{"href":372},"#exercises",[374],{"type":21,"value":375},"Designing an exercise",{"type":15,"tag":174,"props":377,"children":378},{},[379],{"type":15,"tag":57,"props":380,"children":382},{"href":381},"#online-resources",[383],{"type":21,"value":384},"Curating online resources",{"type":15,"tag":174,"props":386,"children":387},{},[388,390,397,399,406],{"type":21,"value":389},"Review a lesson module; both by looking at ",{"type":15,"tag":57,"props":391,"children":394},{"href":392,"rel":393},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[61],[395],{"type":21,"value":396},"open PRs",{"type":21,"value":398},", as well as flagging issues for improvement in the ",{"type":15,"tag":57,"props":400,"children":403},{"href":401,"rel":402},"https://esciencecenter-digital-skills.github.io/research-software-support/",[61],[404],{"type":21,"value":405},"existing content",{"type":21,"value":407},".",{"type":15,"tag":174,"props":409,"children":410},{},[411,418],{"type":15,"tag":57,"props":412,"children":415},{"href":413,"rel":414},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[61],[416],{"type":21,"value":417},"Provide feedback",{"type":21,"value":419}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":10,"depth":10,"links":421},[422],{"id":306,"depth":10,"text":309,"children":423},[424],{"id":318,"depth":425,"text":321},3,"local_fs:main:contribute.md","main/contribute.md",1715801014689] \ No newline at end of file diff --git a/modules/researchsoftware/slides-researchsoftware/index.html b/modules/researchsoftware/slides-researchsoftware/index.html index 82a1ca0e..cc09ea1f 100644 --- a/modules/researchsoftware/slides-researchsoftware/index.html +++ b/modules/researchsoftware/slides-researchsoftware/index.html @@ -2,7 +2,7 @@ Research Software - + - - - - - - - - + + + + + + + + - + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/researchsoftware/slides-software/_payload.json b/modules/researchsoftware/slides-software/_payload.json index 33c0f20d..3691fcdf 100644 --- a/modules/researchsoftware/slides-software/_payload.json +++ b/modules/researchsoftware/slides-software/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":568},["Reactive",2],{"content-query-VQ0D2fQsLl":3,"content-query-AT44bg6JPw":403},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":398,"_id":399,"_source":400,"_file":401,"_extension":402},"/modules/researchsoftware/slides-software","researchsoftware",false,"","What is software?","slides",1,{"type":12,"children":13,"toc":388},"root",[14,19,26,29,36,48,58,82,87,90,95,100,120,125,130,133,147,157,164,183,186,191,194,204,209,253,258,263,268,291,294,300,328,333,336,342,360,363,374,383],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h1",{"id":22},"what-is-software",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":30,"props":31,"children":33},"h2",{"id":32},"software-is-data",[34],{"type":25,"value":35},"Software is data",{"type":15,"tag":37,"props":38,"children":39},"p",{},[40,42],{"type":25,"value":41},"Computer scientist: ",{"type":15,"tag":43,"props":44,"children":45},"em",{},[46],{"type":25,"value":47},"\"Software is just data\"",{"type":15,"tag":49,"props":50,"children":51},"center",{},[52],{"type":15,"tag":53,"props":54,"children":57},"img",{"src":55,"width":56},"stories/_researchsoftware/bits_heart.jpg","55%",[],{"type":15,"tag":37,"props":59,"children":60},{},[61],{"type":15,"tag":62,"props":63,"children":64},"small",{},[65,67,74,76],{"type":25,"value":66},"Photo by ",{"type":15,"tag":68,"props":69,"children":71},"a",{"href":70},"https://unsplash.com/@swimstaralex?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[72],{"type":25,"value":73},"Alexander Sinn",{"type":25,"value":75}," on ",{"type":15,"tag":68,"props":77,"children":79},{"href":78},"https://unsplash.com/photos/a-heart-is-shown-on-a-computer-screen-KgLtFCgfC28?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[80],{"type":25,"value":81},"Unsplash",{"type":15,"tag":37,"props":83,"children":84},{},[85],{"type":25,"value":86},"Note:\nInside the computer, software is just some type of data.",{"type":15,"tag":16,"props":88,"children":89},{},[],{"type":15,"tag":30,"props":91,"children":93},{"id":92},"software-is-data-1",[94],{"type":25,"value":35},{"type":15,"tag":37,"props":96,"children":97},{},[98],{"type":25,"value":99},"Software is ...",{"type":15,"tag":101,"props":102,"children":103},"ul",{},[104,110,115],{"type":15,"tag":105,"props":106,"children":107},"li",{},[108],{"type":25,"value":109},"stored as bits",{"type":15,"tag":105,"props":111,"children":112},{},[113],{"type":25,"value":114},"read, loaded and processed",{"type":15,"tag":105,"props":116,"children":117},{},[118],{"type":25,"value":119},"can be input, and can be output",{"type":15,"tag":37,"props":121,"children":122},{},[123],{"type":25,"value":124},"... just like all other data",{"type":15,"tag":37,"props":126,"children":127},{},[128],{"type":25,"value":129},"Note:\nSoftware is stored as bits and read from disk, loaded into memory and processed in exactly the same way as other data. Software can be input, and software can be output.",{"type":15,"tag":16,"props":131,"children":132},{},[],{"type":15,"tag":30,"props":134,"children":136},{"id":135},"software-is-not-data",[137,139,145],{"type":25,"value":138},"Software is ",{"type":15,"tag":140,"props":141,"children":142},"u",{},[143],{"type":25,"value":144},"not",{"type":25,"value":146}," data",{"type":15,"tag":37,"props":148,"children":149},{},[150,152],{"type":25,"value":151},"Everyone but computer scientists: ",{"type":15,"tag":43,"props":153,"children":154},{},[155],{"type":25,"value":156},"\"Software is not data\"",{"type":15,"tag":49,"props":158,"children":159},{},[160],{"type":15,"tag":53,"props":161,"children":163},{"src":162,"width":56},"stories/_researchsoftware/tools.jpg",[],{"type":15,"tag":37,"props":165,"children":166},{},[167],{"type":15,"tag":62,"props":168,"children":169},{},[170,171,177,178],{"type":25,"value":66},{"type":15,"tag":68,"props":172,"children":174},{"href":173},"https://unsplash.com/@barnimages?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[175],{"type":25,"value":176},"Barn Images",{"type":25,"value":75},{"type":15,"tag":68,"props":179,"children":181},{"href":180},"https://unsplash.com/photos/assorted-handheld-tools-in-tool-rack-t5YUoHW6zRo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[182],{"type":25,"value":81},{"type":15,"tag":62,"props":184,"children":185},{},[],{"type":15,"tag":37,"props":187,"children":188},{},[189],{"type":25,"value":190},"Note:\nFor all other practical purposes it is often helpful to make a distinction between software and other data.\nSoftware is a tool, while data is the material that you use the tool on.",{"type":15,"tag":16,"props":192,"children":193},{},[],{"type":15,"tag":30,"props":195,"children":197},{"id":196},"software-is-not-data-1",[198,199,203],{"type":25,"value":138},{"type":15,"tag":140,"props":200,"children":201},{},[202],{"type":25,"value":144},{"type":25,"value":146},{"type":15,"tag":37,"props":205,"children":206},{},[207],{"type":25,"value":208},"Software is...",{"type":15,"tag":101,"props":210,"children":211},{},[212,223,233,243],{"type":15,"tag":105,"props":213,"children":214},{},[215,221],{"type":15,"tag":216,"props":217,"children":218},"strong",{},[219],{"type":25,"value":220},"complex",{"type":25,"value":222},": code is creatively generated, interconnected and multi-layered",{"type":15,"tag":105,"props":224,"children":225},{},[226,231],{"type":15,"tag":216,"props":227,"children":228},{},[229],{"type":25,"value":230},"interdependent",{"type":25,"value":232},": it builds upon and therefore depends on other software",{"type":15,"tag":105,"props":234,"children":235},{},[236,241],{"type":15,"tag":216,"props":237,"children":238},{},[239],{"type":25,"value":240},"executable",{"type":25,"value":242},": it is not static, but can be run (to process data)",{"type":15,"tag":105,"props":244,"children":245},{},[246,251],{"type":15,"tag":216,"props":247,"children":248},{},[249],{"type":25,"value":250},"dynamic",{"type":25,"value":252},": it can (and will) break soon, needs to be updated",{"type":15,"tag":37,"props":254,"children":255},{},[256],{"type":25,"value":257},"Note:\nWhile technically, software is a special kind of data (in that it is representation of information in a digital state), they are in essence quite different.",{"type":15,"tag":37,"props":259,"children":260},{},[261],{"type":25,"value":262},"Software and data both are digital objects, sharing certain characteristics: they can be assigned a DOI, and they can have a license.",{"type":15,"tag":37,"props":264,"children":265},{},[266],{"type":25,"value":267},"Software is quite different from data, however. Consider:",{"type":15,"tag":101,"props":269,"children":270},{},[271,276,281,286],{"type":15,"tag":105,"props":272,"children":273},{},[274],{"type":25,"value":275},"Complexity; it is not a single file, but a collection of files that are interconnected and multi-layered, and do not necessarily stand on their own. Software is also the result of a creative process that provides a tool to do something, and not the result of a measurement or observation.",{"type":15,"tag":105,"props":277,"children":278},{},[279],{"type":25,"value":280},"Interdependence; software is often built using other software, and rarely built completely from scratch. This makes it dependent on other existing applications, which themselves may also change over time.",{"type":15,"tag":105,"props":282,"children":283},{},[284],{"type":25,"value":285},"Executability; software is in its dryest form a set of instructions that can be an archive of a procedure. However, the main goal of software is that these instructions can be executed. Data, by contrast, stand on their own.",{"type":15,"tag":105,"props":287,"children":288},{},[289],{"type":25,"value":290},"Dynamic vs static; its interdependence and context-dependency drives software to require maintenance to retain its value, and this maintenance is not straightforward. Maintenance is also counter to academic culture; it does not fit in existing structures (both in terms of reward/recognition, but also in terms of funding and understanding of what is needed). Versioning of software is very common, while data is often static (though versions may happen).",{"type":15,"tag":16,"props":292,"children":293},{},[],{"type":15,"tag":30,"props":295,"children":297},{"id":296},"software-vs-data-management",[298],{"type":25,"value":299},"Software vs data management",{"type":15,"tag":101,"props":301,"children":302},{},[303,313,318,323],{"type":15,"tag":105,"props":304,"children":305},{},[306,308],{"type":25,"value":307},"Software is a ",{"type":15,"tag":216,"props":309,"children":310},{},[311],{"type":25,"value":312},"living thing",{"type":15,"tag":105,"props":314,"children":315},{},[316],{"type":25,"value":317},"Some FAIR data management practices apply to software",{"type":15,"tag":105,"props":319,"children":320},{},[321],{"type":25,"value":322},"Many FAIR principles do not apply easily to software",{"type":15,"tag":105,"props":324,"children":325},{},[326],{"type":25,"value":327},"Good data management will not ensure good software management",{"type":15,"tag":37,"props":329,"children":330},{},[331],{"type":25,"value":332},"Note:\nThe different nature of software also provides opportunities but also requires extra thought on its management.\nSoftware is a living thing, and therefore it is easier to adopt good practices early on.\nCrucially, there is a community driven openness in software that long predates the open science movement.\nThis is not to say that software is inherently open, but that there is a broad open culture, which also comes with existing tools and pathways to facilitate openness and transparency.\nConsider GitHub (and other code hosting platforms), which are designed for this purpose.\nConsider also version control software, a good software development practice that builds in provenance.",{"type":15,"tag":16,"props":334,"children":335},{},[],{"type":15,"tag":30,"props":337,"children":339},{"id":338},"take-home-messages",[340],{"type":25,"value":341},"Take home messages",{"type":15,"tag":101,"props":343,"children":344},{},[345,350,355],{"type":15,"tag":105,"props":346,"children":347},{},[348],{"type":25,"value":349},"Software is a special kind of data",{"type":15,"tag":105,"props":351,"children":352},{},[353],{"type":25,"value":354},"Some FAIR data management",{"type":15,"tag":105,"props":356,"children":357},{},[358],{"type":25,"value":359},"Wee need extra and different techniques for software management",{"type":15,"tag":16,"props":361,"children":362},{},[],{"type":15,"tag":37,"props":364,"children":365},{},[366],{"type":15,"tag":68,"props":367,"children":371},{"href":368,"rel":369},"http://www.esciencecenter.nl",[370],"nofollow",[372],{"type":25,"value":373},"www.esciencecenter.nl",{"type":15,"tag":37,"props":375,"children":376},{},[377],{"type":15,"tag":68,"props":378,"children":380},{"href":379},"mailto:info@esciencecenter.nl",[381],{"type":25,"value":382},"info@esciencecenter.nl",{"type":15,"tag":37,"props":384,"children":385},{},[386],{"type":25,"value":387},"020 - 460 47 70",{"title":7,"searchDepth":389,"depth":389,"links":390},2,[391,392,393,395,396,397],{"id":32,"depth":389,"text":35},{"id":92,"depth":389,"text":35},{"id":135,"depth":389,"text":394},"Software is not data",{"id":196,"depth":389,"text":394},{"id":296,"depth":389,"text":299},{"id":338,"depth":389,"text":341},"markdown","local_fs:modules:researchsoftware:slides-software.pmd","local_fs","modules/researchsoftware/slides-software.pmd","pmd",[404,439],{"_path":405,"_dir":406,"_draft":6,"_partial":6,"_locale":7,"title":407,"description":7,"body":408,"_type":398,"_id":436,"_source":400,"_file":437,"_extension":438},"/main/about","main","About",{"type":12,"children":409,"toc":432},[410,416,421,427],{"type":15,"tag":30,"props":411,"children":413},{"id":412},"about-the-research-software-support",[414],{"type":25,"value":415},"About the Research Software Support",{"type":15,"tag":37,"props":417,"children":418},{},[419],{"type":25,"value":420},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":30,"props":422,"children":424},{"id":423},"target-audience",[425],{"type":25,"value":426},"Target audience",{"type":15,"tag":37,"props":428,"children":429},{},[430],{"type":25,"value":431},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":389,"depth":389,"links":433},[434,435],{"id":412,"depth":389,"text":415},{"id":423,"depth":389,"text":426},"local_fs:main:about.md","main/about.md","md",{"_path":440,"_dir":406,"_draft":6,"_partial":6,"_locale":7,"title":441,"description":7,"body":442,"_type":398,"_id":566,"_source":400,"_file":567,"_extension":438},"/main/contribute","Contribute",{"type":12,"children":443,"toc":560},[444,450,455,462,467],{"type":15,"tag":30,"props":445,"children":447},{"id":446},"contributing-to-the-research-software-support",[448],{"type":25,"value":449},"Contributing to the Research Software Support",{"type":15,"tag":37,"props":451,"children":452},{},[453],{"type":25,"value":454},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":456,"props":457,"children":459},"h3",{"id":458},"what-can-i-do",[460],{"type":25,"value":461},"What can I do?",{"type":15,"tag":37,"props":463,"children":464},{},[465],{"type":25,"value":466},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":101,"props":468,"children":469},{},[470,484,525,548],{"type":15,"tag":105,"props":471,"children":472},{},[473,475,482],{"type":25,"value":474},"Contribute to the content discussion in the ",{"type":15,"tag":68,"props":476,"children":479},{"href":477,"rel":478},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[370],[480],{"type":25,"value":481},"chapter issues",{"type":25,"value":483},", e.g. by listing good resources for information.",{"type":15,"tag":105,"props":485,"children":486},{},[487,493,495],{"type":15,"tag":68,"props":488,"children":490},{"href":489},"#elements-of-a-module",[491],{"type":25,"value":492},"Author a lesson",{"type":25,"value":494},", e.g. by:\n",{"type":15,"tag":101,"props":496,"children":497},{},[498,507,516],{"type":15,"tag":105,"props":499,"children":500},{},[501],{"type":15,"tag":68,"props":502,"children":504},{"href":503},"#slides",[505],{"type":25,"value":506},"Creating slides",{"type":15,"tag":105,"props":508,"children":509},{},[510],{"type":15,"tag":68,"props":511,"children":513},{"href":512},"#exercises",[514],{"type":25,"value":515},"Designing an exercise",{"type":15,"tag":105,"props":517,"children":518},{},[519],{"type":15,"tag":68,"props":520,"children":522},{"href":521},"#online-resources",[523],{"type":25,"value":524},"Curating online resources",{"type":15,"tag":105,"props":526,"children":527},{},[528,530,537,539,546],{"type":25,"value":529},"Review a lesson module; both by looking at ",{"type":15,"tag":68,"props":531,"children":534},{"href":532,"rel":533},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[370],[535],{"type":25,"value":536},"open PRs",{"type":25,"value":538},", as well as flagging issues for improvement in the ",{"type":15,"tag":68,"props":540,"children":543},{"href":541,"rel":542},"https://esciencecenter-digital-skills.github.io/research-software-support/",[370],[544],{"type":25,"value":545},"existing content",{"type":25,"value":547},".",{"type":15,"tag":105,"props":549,"children":550},{},[551,558],{"type":15,"tag":68,"props":552,"children":555},{"href":553,"rel":554},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[370],[556],{"type":25,"value":557},"Provide feedback",{"type":25,"value":559}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":389,"depth":389,"links":561},[562],{"id":446,"depth":389,"text":449,"children":563},[564],{"id":458,"depth":565,"text":461},3,"local_fs:main:contribute.md","main/contribute.md",1715800937505] \ No newline at end of file +[{"data":1,"prerenderedAt":568},["Reactive",2],{"content-query-VQ0D2fQsLl":3,"content-query-AT44bg6JPw":403},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":398,"_id":399,"_source":400,"_file":401,"_extension":402},"/modules/researchsoftware/slides-software","researchsoftware",false,"","What is software?","slides",1,{"type":12,"children":13,"toc":388},"root",[14,19,26,29,36,48,58,82,87,90,95,100,120,125,130,133,147,157,164,183,186,191,194,204,209,253,258,263,268,291,294,300,328,333,336,342,360,363,374,383],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h1",{"id":22},"what-is-software",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":30,"props":31,"children":33},"h2",{"id":32},"software-is-data",[34],{"type":25,"value":35},"Software is data",{"type":15,"tag":37,"props":38,"children":39},"p",{},[40,42],{"type":25,"value":41},"Computer scientist: ",{"type":15,"tag":43,"props":44,"children":45},"em",{},[46],{"type":25,"value":47},"\"Software is just data\"",{"type":15,"tag":49,"props":50,"children":51},"center",{},[52],{"type":15,"tag":53,"props":54,"children":57},"img",{"src":55,"width":56},"stories/_researchsoftware/bits_heart.jpg","55%",[],{"type":15,"tag":37,"props":59,"children":60},{},[61],{"type":15,"tag":62,"props":63,"children":64},"small",{},[65,67,74,76],{"type":25,"value":66},"Photo by ",{"type":15,"tag":68,"props":69,"children":71},"a",{"href":70},"https://unsplash.com/@swimstaralex?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[72],{"type":25,"value":73},"Alexander Sinn",{"type":25,"value":75}," on ",{"type":15,"tag":68,"props":77,"children":79},{"href":78},"https://unsplash.com/photos/a-heart-is-shown-on-a-computer-screen-KgLtFCgfC28?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[80],{"type":25,"value":81},"Unsplash",{"type":15,"tag":37,"props":83,"children":84},{},[85],{"type":25,"value":86},"Note:\nInside the computer, software is just some type of data.",{"type":15,"tag":16,"props":88,"children":89},{},[],{"type":15,"tag":30,"props":91,"children":93},{"id":92},"software-is-data-1",[94],{"type":25,"value":35},{"type":15,"tag":37,"props":96,"children":97},{},[98],{"type":25,"value":99},"Software is ...",{"type":15,"tag":101,"props":102,"children":103},"ul",{},[104,110,115],{"type":15,"tag":105,"props":106,"children":107},"li",{},[108],{"type":25,"value":109},"stored as bits",{"type":15,"tag":105,"props":111,"children":112},{},[113],{"type":25,"value":114},"read, loaded and processed",{"type":15,"tag":105,"props":116,"children":117},{},[118],{"type":25,"value":119},"can be input, and can be output",{"type":15,"tag":37,"props":121,"children":122},{},[123],{"type":25,"value":124},"... just like all other data",{"type":15,"tag":37,"props":126,"children":127},{},[128],{"type":25,"value":129},"Note:\nSoftware is stored as bits and read from disk, loaded into memory and processed in exactly the same way as other data. Software can be input, and software can be output.",{"type":15,"tag":16,"props":131,"children":132},{},[],{"type":15,"tag":30,"props":134,"children":136},{"id":135},"software-is-not-data",[137,139,145],{"type":25,"value":138},"Software is ",{"type":15,"tag":140,"props":141,"children":142},"u",{},[143],{"type":25,"value":144},"not",{"type":25,"value":146}," data",{"type":15,"tag":37,"props":148,"children":149},{},[150,152],{"type":25,"value":151},"Everyone but computer scientists: ",{"type":15,"tag":43,"props":153,"children":154},{},[155],{"type":25,"value":156},"\"Software is not data\"",{"type":15,"tag":49,"props":158,"children":159},{},[160],{"type":15,"tag":53,"props":161,"children":163},{"src":162,"width":56},"stories/_researchsoftware/tools.jpg",[],{"type":15,"tag":37,"props":165,"children":166},{},[167],{"type":15,"tag":62,"props":168,"children":169},{},[170,171,177,178],{"type":25,"value":66},{"type":15,"tag":68,"props":172,"children":174},{"href":173},"https://unsplash.com/@barnimages?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[175],{"type":25,"value":176},"Barn Images",{"type":25,"value":75},{"type":15,"tag":68,"props":179,"children":181},{"href":180},"https://unsplash.com/photos/assorted-handheld-tools-in-tool-rack-t5YUoHW6zRo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash",[182],{"type":25,"value":81},{"type":15,"tag":62,"props":184,"children":185},{},[],{"type":15,"tag":37,"props":187,"children":188},{},[189],{"type":25,"value":190},"Note:\nFor all other practical purposes it is often helpful to make a distinction between software and other data.\nSoftware is a tool, while data is the material that you use the tool on.",{"type":15,"tag":16,"props":192,"children":193},{},[],{"type":15,"tag":30,"props":195,"children":197},{"id":196},"software-is-not-data-1",[198,199,203],{"type":25,"value":138},{"type":15,"tag":140,"props":200,"children":201},{},[202],{"type":25,"value":144},{"type":25,"value":146},{"type":15,"tag":37,"props":205,"children":206},{},[207],{"type":25,"value":208},"Software is...",{"type":15,"tag":101,"props":210,"children":211},{},[212,223,233,243],{"type":15,"tag":105,"props":213,"children":214},{},[215,221],{"type":15,"tag":216,"props":217,"children":218},"strong",{},[219],{"type":25,"value":220},"complex",{"type":25,"value":222},": code is creatively generated, interconnected and multi-layered",{"type":15,"tag":105,"props":224,"children":225},{},[226,231],{"type":15,"tag":216,"props":227,"children":228},{},[229],{"type":25,"value":230},"interdependent",{"type":25,"value":232},": it builds upon and therefore depends on other software",{"type":15,"tag":105,"props":234,"children":235},{},[236,241],{"type":15,"tag":216,"props":237,"children":238},{},[239],{"type":25,"value":240},"executable",{"type":25,"value":242},": it is not static, but can be run (to process data)",{"type":15,"tag":105,"props":244,"children":245},{},[246,251],{"type":15,"tag":216,"props":247,"children":248},{},[249],{"type":25,"value":250},"dynamic",{"type":25,"value":252},": it can (and will) break soon, needs to be updated",{"type":15,"tag":37,"props":254,"children":255},{},[256],{"type":25,"value":257},"Note:\nWhile technically, software is a special kind of data (in that it is representation of information in a digital state), they are in essence quite different.",{"type":15,"tag":37,"props":259,"children":260},{},[261],{"type":25,"value":262},"Software and data both are digital objects, sharing certain characteristics: they can be assigned a DOI, and they can have a license.",{"type":15,"tag":37,"props":264,"children":265},{},[266],{"type":25,"value":267},"Software is quite different from data, however. Consider:",{"type":15,"tag":101,"props":269,"children":270},{},[271,276,281,286],{"type":15,"tag":105,"props":272,"children":273},{},[274],{"type":25,"value":275},"Complexity; it is not a single file, but a collection of files that are interconnected and multi-layered, and do not necessarily stand on their own. Software is also the result of a creative process that provides a tool to do something, and not the result of a measurement or observation.",{"type":15,"tag":105,"props":277,"children":278},{},[279],{"type":25,"value":280},"Interdependence; software is often built using other software, and rarely built completely from scratch. This makes it dependent on other existing applications, which themselves may also change over time.",{"type":15,"tag":105,"props":282,"children":283},{},[284],{"type":25,"value":285},"Executability; software is in its dryest form a set of instructions that can be an archive of a procedure. However, the main goal of software is that these instructions can be executed. Data, by contrast, stand on their own.",{"type":15,"tag":105,"props":287,"children":288},{},[289],{"type":25,"value":290},"Dynamic vs static; its interdependence and context-dependency drives software to require maintenance to retain its value, and this maintenance is not straightforward. Maintenance is also counter to academic culture; it does not fit in existing structures (both in terms of reward/recognition, but also in terms of funding and understanding of what is needed). Versioning of software is very common, while data is often static (though versions may happen).",{"type":15,"tag":16,"props":292,"children":293},{},[],{"type":15,"tag":30,"props":295,"children":297},{"id":296},"software-vs-data-management",[298],{"type":25,"value":299},"Software vs data management",{"type":15,"tag":101,"props":301,"children":302},{},[303,313,318,323],{"type":15,"tag":105,"props":304,"children":305},{},[306,308],{"type":25,"value":307},"Software is a ",{"type":15,"tag":216,"props":309,"children":310},{},[311],{"type":25,"value":312},"living thing",{"type":15,"tag":105,"props":314,"children":315},{},[316],{"type":25,"value":317},"Some FAIR data management practices apply to software",{"type":15,"tag":105,"props":319,"children":320},{},[321],{"type":25,"value":322},"Many FAIR principles do not apply easily to software",{"type":15,"tag":105,"props":324,"children":325},{},[326],{"type":25,"value":327},"Good data management will not ensure good software management",{"type":15,"tag":37,"props":329,"children":330},{},[331],{"type":25,"value":332},"Note:\nThe different nature of software also provides opportunities but also requires extra thought on its management.\nSoftware is a living thing, and therefore it is easier to adopt good practices early on.\nCrucially, there is a community driven openness in software that long predates the open science movement.\nThis is not to say that software is inherently open, but that there is a broad open culture, which also comes with existing tools and pathways to facilitate openness and transparency.\nConsider GitHub (and other code hosting platforms), which are designed for this purpose.\nConsider also version control software, a good software development practice that builds in provenance.",{"type":15,"tag":16,"props":334,"children":335},{},[],{"type":15,"tag":30,"props":337,"children":339},{"id":338},"take-home-messages",[340],{"type":25,"value":341},"Take home messages",{"type":15,"tag":101,"props":343,"children":344},{},[345,350,355],{"type":15,"tag":105,"props":346,"children":347},{},[348],{"type":25,"value":349},"Software is a special kind of data",{"type":15,"tag":105,"props":351,"children":352},{},[353],{"type":25,"value":354},"Some FAIR data management",{"type":15,"tag":105,"props":356,"children":357},{},[358],{"type":25,"value":359},"Wee need extra and different techniques for software management",{"type":15,"tag":16,"props":361,"children":362},{},[],{"type":15,"tag":37,"props":364,"children":365},{},[366],{"type":15,"tag":68,"props":367,"children":371},{"href":368,"rel":369},"http://www.esciencecenter.nl",[370],"nofollow",[372],{"type":25,"value":373},"www.esciencecenter.nl",{"type":15,"tag":37,"props":375,"children":376},{},[377],{"type":15,"tag":68,"props":378,"children":380},{"href":379},"mailto:info@esciencecenter.nl",[381],{"type":25,"value":382},"info@esciencecenter.nl",{"type":15,"tag":37,"props":384,"children":385},{},[386],{"type":25,"value":387},"020 - 460 47 70",{"title":7,"searchDepth":389,"depth":389,"links":390},2,[391,392,393,395,396,397],{"id":32,"depth":389,"text":35},{"id":92,"depth":389,"text":35},{"id":135,"depth":389,"text":394},"Software is not data",{"id":196,"depth":389,"text":394},{"id":296,"depth":389,"text":299},{"id":338,"depth":389,"text":341},"markdown","local_fs:modules:researchsoftware:slides-software.pmd","local_fs","modules/researchsoftware/slides-software.pmd","pmd",[404,439],{"_path":405,"_dir":406,"_draft":6,"_partial":6,"_locale":7,"title":407,"description":7,"body":408,"_type":398,"_id":436,"_source":400,"_file":437,"_extension":438},"/main/about","main","About",{"type":12,"children":409,"toc":432},[410,416,421,427],{"type":15,"tag":30,"props":411,"children":413},{"id":412},"about-the-research-software-support",[414],{"type":25,"value":415},"About the Research Software Support",{"type":15,"tag":37,"props":417,"children":418},{},[419],{"type":25,"value":420},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":30,"props":422,"children":424},{"id":423},"target-audience",[425],{"type":25,"value":426},"Target audience",{"type":15,"tag":37,"props":428,"children":429},{},[430],{"type":25,"value":431},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":389,"depth":389,"links":433},[434,435],{"id":412,"depth":389,"text":415},{"id":423,"depth":389,"text":426},"local_fs:main:about.md","main/about.md","md",{"_path":440,"_dir":406,"_draft":6,"_partial":6,"_locale":7,"title":441,"description":7,"body":442,"_type":398,"_id":566,"_source":400,"_file":567,"_extension":438},"/main/contribute","Contribute",{"type":12,"children":443,"toc":560},[444,450,455,462,467],{"type":15,"tag":30,"props":445,"children":447},{"id":446},"contributing-to-the-research-software-support",[448],{"type":25,"value":449},"Contributing to the Research Software Support",{"type":15,"tag":37,"props":451,"children":452},{},[453],{"type":25,"value":454},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":456,"props":457,"children":459},"h3",{"id":458},"what-can-i-do",[460],{"type":25,"value":461},"What can I do?",{"type":15,"tag":37,"props":463,"children":464},{},[465],{"type":25,"value":466},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":101,"props":468,"children":469},{},[470,484,525,548],{"type":15,"tag":105,"props":471,"children":472},{},[473,475,482],{"type":25,"value":474},"Contribute to the content discussion in the ",{"type":15,"tag":68,"props":476,"children":479},{"href":477,"rel":478},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[370],[480],{"type":25,"value":481},"chapter issues",{"type":25,"value":483},", e.g. by listing good resources for information.",{"type":15,"tag":105,"props":485,"children":486},{},[487,493,495],{"type":15,"tag":68,"props":488,"children":490},{"href":489},"#elements-of-a-module",[491],{"type":25,"value":492},"Author a lesson",{"type":25,"value":494},", e.g. by:\n",{"type":15,"tag":101,"props":496,"children":497},{},[498,507,516],{"type":15,"tag":105,"props":499,"children":500},{},[501],{"type":15,"tag":68,"props":502,"children":504},{"href":503},"#slides",[505],{"type":25,"value":506},"Creating slides",{"type":15,"tag":105,"props":508,"children":509},{},[510],{"type":15,"tag":68,"props":511,"children":513},{"href":512},"#exercises",[514],{"type":25,"value":515},"Designing an exercise",{"type":15,"tag":105,"props":517,"children":518},{},[519],{"type":15,"tag":68,"props":520,"children":522},{"href":521},"#online-resources",[523],{"type":25,"value":524},"Curating online resources",{"type":15,"tag":105,"props":526,"children":527},{},[528,530,537,539,546],{"type":25,"value":529},"Review a lesson module; both by looking at ",{"type":15,"tag":68,"props":531,"children":534},{"href":532,"rel":533},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[370],[535],{"type":25,"value":536},"open PRs",{"type":25,"value":538},", as well as flagging issues for improvement in the ",{"type":15,"tag":68,"props":540,"children":543},{"href":541,"rel":542},"https://esciencecenter-digital-skills.github.io/research-software-support/",[370],[544],{"type":25,"value":545},"existing content",{"type":25,"value":547},".",{"type":15,"tag":105,"props":549,"children":550},{},[551,558],{"type":15,"tag":68,"props":552,"children":555},{"href":553,"rel":554},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[370],[556],{"type":25,"value":557},"Provide feedback",{"type":25,"value":559}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":389,"depth":389,"links":561},[562],{"id":446,"depth":389,"text":449,"children":563},[564],{"id":458,"depth":565,"text":461},3,"local_fs:main:contribute.md","main/contribute.md",1715801014686] \ No newline at end of file diff --git a/modules/researchsoftware/slides-software/index.html b/modules/researchsoftware/slides-software/index.html index 2d761207..b0f4918a 100644 --- a/modules/researchsoftware/slides-software/index.html +++ b/modules/researchsoftware/slides-software/index.html @@ -2,7 +2,7 @@ What is software? - + - - - - - - - - + + + + + + + + - + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/researchsoftware/software-and-data/_payload.json b/modules/researchsoftware/software-and-data/_payload.json index f5cc8b73..9daf62bc 100644 --- a/modules/researchsoftware/software-and-data/_payload.json +++ b/modules/researchsoftware/software-and-data/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":288},["Reactive",2],{"content-query-yJhsM5kJP8":3,"content-query-AT44bg6JPw":125},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":120,"_id":121,"_source":122,"_file":123,"_extension":124},"/modules/researchsoftware/software-and-data","researchsoftware",false,"","Software is data","reading",6,{"type":12,"children":13,"toc":113},"root",[14,23,29,42,48,53,78,87,96,102],{"type":15,"tag":16,"props":17,"children":19},"element","h3",{"id":18},"software-is-data-10-minutes-optional",[20],{"type":21,"value":22},"text","Software is data (10 minutes, optional)",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27],{"type":21,"value":28},"In computer science, the fact that software is data is considered one of the fundamental concepts of computing. The fact that the thing that operates the machine (software) is the same kind of thing as the thing it operates on (data) is definitely one of the strengths of current computersystems and one of the main reasons why we can do such complex and powerful things with the combination of hardware and software.",{"type":15,"tag":24,"props":30,"children":31},{},[32,34],{"type":21,"value":33},"Read the following blogpost about why this concept is so powerful:\n",{"type":15,"tag":35,"props":36,"children":40},"a",{"href":37,"rel":38},"https://www.blackliszt.com/2014/04/fundamental-concepts-of-computing-software-is-data.html",[39],"nofollow",[41],{"type":21,"value":37},{"type":15,"tag":16,"props":43,"children":45},{"id":44},"software-is-a-special-type-of-data",[46],{"type":21,"value":47},"Software is a special type of data ()",{"type":15,"tag":24,"props":49,"children":50},{},[51],{"type":21,"value":52},"However for most practical purposes in most domains of scientific research (except maybe the domain of computer science) it is useful to make a distinction between the data that is software and other data. From now on, when we use the word data, we mean the kind fo data which is not software and which we use to store more static information.",{"type":15,"tag":54,"props":55,"children":56},"ul",{},[57,63,68,73],{"type":15,"tag":58,"props":59,"children":60},"li",{},[61],{"type":21,"value":62},"Software is executable, data is not.",{"type":15,"tag":58,"props":64,"children":65},{},[66],{"type":21,"value":67},"Data provides information or evidence, software provides a tool to do work on the data.",{"type":15,"tag":58,"props":69,"children":70},{},[71],{"type":21,"value":72},"Software is a creative work, scientific data are facts or observations.",{"type":15,"tag":58,"props":74,"children":75},{},[76],{"type":21,"value":77},"The lifetime of software is generally not as long as that of data.",{"type":15,"tag":24,"props":79,"children":80},{},[81],{"type":15,"tag":35,"props":82,"children":85},{"href":83,"rel":84},"https://github.com/danielskatz/software-vs-data",[39],[86],{"type":21,"value":83},{"type":15,"tag":24,"props":88,"children":89},{},[90],{"type":15,"tag":35,"props":91,"children":94},{"href":92,"rel":93},"https://doi.org/10.7287/peerj.preprints.2630v1",[39],[95],{"type":21,"value":92},{"type":15,"tag":16,"props":97,"children":99},{"id":98},"discussion",[100],{"type":21,"value":101},"Discussion",{"type":15,"tag":54,"props":103,"children":104},{},[105,108],{"type":15,"tag":58,"props":106,"children":107},{},[],{"type":15,"tag":58,"props":109,"children":110},{},[111],{"type":21,"value":112},"Can you think of examples where the line between software and data becomes fuzzy?",{"title":7,"searchDepth":114,"depth":114,"links":115},2,[116,118,119],{"id":18,"depth":117,"text":22},3,{"id":44,"depth":117,"text":47},{"id":98,"depth":117,"text":101},"markdown","local_fs:modules:researchsoftware:software-and-data.md","local_fs","modules/researchsoftware/software-and-data.md","md",[126,161],{"_path":127,"_dir":128,"_draft":6,"_partial":6,"_locale":7,"title":129,"description":7,"body":130,"_type":120,"_id":159,"_source":122,"_file":160,"_extension":124},"/main/about","main","About",{"type":12,"children":131,"toc":155},[132,139,144,150],{"type":15,"tag":133,"props":134,"children":136},"h2",{"id":135},"about-the-research-software-support",[137],{"type":21,"value":138},"About the Research Software Support",{"type":15,"tag":24,"props":140,"children":141},{},[142],{"type":21,"value":143},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":133,"props":145,"children":147},{"id":146},"target-audience",[148],{"type":21,"value":149},"Target audience",{"type":15,"tag":24,"props":151,"children":152},{},[153],{"type":21,"value":154},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":114,"depth":114,"links":156},[157,158],{"id":135,"depth":114,"text":138},{"id":146,"depth":114,"text":149},"local_fs:main:about.md","main/about.md",{"_path":162,"_dir":128,"_draft":6,"_partial":6,"_locale":7,"title":163,"description":7,"body":164,"_type":120,"_id":286,"_source":122,"_file":287,"_extension":124},"/main/contribute","Contribute",{"type":12,"children":165,"toc":281},[166,172,177,183,188],{"type":15,"tag":133,"props":167,"children":169},{"id":168},"contributing-to-the-research-software-support",[170],{"type":21,"value":171},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":173,"children":174},{},[175],{"type":21,"value":176},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":16,"props":178,"children":180},{"id":179},"what-can-i-do",[181],{"type":21,"value":182},"What can I do?",{"type":15,"tag":24,"props":184,"children":185},{},[186],{"type":21,"value":187},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":54,"props":189,"children":190},{},[191,205,246,269],{"type":15,"tag":58,"props":192,"children":193},{},[194,196,203],{"type":21,"value":195},"Contribute to the content discussion in the ",{"type":15,"tag":35,"props":197,"children":200},{"href":198,"rel":199},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[39],[201],{"type":21,"value":202},"chapter issues",{"type":21,"value":204},", e.g. by listing good resources for information.",{"type":15,"tag":58,"props":206,"children":207},{},[208,214,216],{"type":15,"tag":35,"props":209,"children":211},{"href":210},"#elements-of-a-module",[212],{"type":21,"value":213},"Author a lesson",{"type":21,"value":215},", e.g. by:\n",{"type":15,"tag":54,"props":217,"children":218},{},[219,228,237],{"type":15,"tag":58,"props":220,"children":221},{},[222],{"type":15,"tag":35,"props":223,"children":225},{"href":224},"#slides",[226],{"type":21,"value":227},"Creating slides",{"type":15,"tag":58,"props":229,"children":230},{},[231],{"type":15,"tag":35,"props":232,"children":234},{"href":233},"#exercises",[235],{"type":21,"value":236},"Designing an exercise",{"type":15,"tag":58,"props":238,"children":239},{},[240],{"type":15,"tag":35,"props":241,"children":243},{"href":242},"#online-resources",[244],{"type":21,"value":245},"Curating online resources",{"type":15,"tag":58,"props":247,"children":248},{},[249,251,258,260,267],{"type":21,"value":250},"Review a lesson module; both by looking at ",{"type":15,"tag":35,"props":252,"children":255},{"href":253,"rel":254},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[39],[256],{"type":21,"value":257},"open PRs",{"type":21,"value":259},", as well as flagging issues for improvement in the ",{"type":15,"tag":35,"props":261,"children":264},{"href":262,"rel":263},"https://esciencecenter-digital-skills.github.io/research-software-support/",[39],[265],{"type":21,"value":266},"existing content",{"type":21,"value":268},".",{"type":15,"tag":58,"props":270,"children":271},{},[272,279],{"type":15,"tag":35,"props":273,"children":276},{"href":274,"rel":275},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[39],[277],{"type":21,"value":278},"Provide feedback",{"type":21,"value":280}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":114,"depth":114,"links":282},[283],{"id":168,"depth":114,"text":171,"children":284},[285],{"id":179,"depth":117,"text":182},"local_fs:main:contribute.md","main/contribute.md",1715800937526] \ No newline at end of file +[{"data":1,"prerenderedAt":288},["Reactive",2],{"content-query-yJhsM5kJP8":3,"content-query-AT44bg6JPw":125},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":120,"_id":121,"_source":122,"_file":123,"_extension":124},"/modules/researchsoftware/software-and-data","researchsoftware",false,"","Software is data","reading",6,{"type":12,"children":13,"toc":113},"root",[14,23,29,42,48,53,78,87,96,102],{"type":15,"tag":16,"props":17,"children":19},"element","h3",{"id":18},"software-is-data-10-minutes-optional",[20],{"type":21,"value":22},"text","Software is data (10 minutes, optional)",{"type":15,"tag":24,"props":25,"children":26},"p",{},[27],{"type":21,"value":28},"In computer science, the fact that software is data is considered one of the fundamental concepts of computing. The fact that the thing that operates the machine (software) is the same kind of thing as the thing it operates on (data) is definitely one of the strengths of current computersystems and one of the main reasons why we can do such complex and powerful things with the combination of hardware and software.",{"type":15,"tag":24,"props":30,"children":31},{},[32,34],{"type":21,"value":33},"Read the following blogpost about why this concept is so powerful:\n",{"type":15,"tag":35,"props":36,"children":40},"a",{"href":37,"rel":38},"https://www.blackliszt.com/2014/04/fundamental-concepts-of-computing-software-is-data.html",[39],"nofollow",[41],{"type":21,"value":37},{"type":15,"tag":16,"props":43,"children":45},{"id":44},"software-is-a-special-type-of-data",[46],{"type":21,"value":47},"Software is a special type of data ()",{"type":15,"tag":24,"props":49,"children":50},{},[51],{"type":21,"value":52},"However for most practical purposes in most domains of scientific research (except maybe the domain of computer science) it is useful to make a distinction between the data that is software and other data. From now on, when we use the word data, we mean the kind fo data which is not software and which we use to store more static information.",{"type":15,"tag":54,"props":55,"children":56},"ul",{},[57,63,68,73],{"type":15,"tag":58,"props":59,"children":60},"li",{},[61],{"type":21,"value":62},"Software is executable, data is not.",{"type":15,"tag":58,"props":64,"children":65},{},[66],{"type":21,"value":67},"Data provides information or evidence, software provides a tool to do work on the data.",{"type":15,"tag":58,"props":69,"children":70},{},[71],{"type":21,"value":72},"Software is a creative work, scientific data are facts or observations.",{"type":15,"tag":58,"props":74,"children":75},{},[76],{"type":21,"value":77},"The lifetime of software is generally not as long as that of data.",{"type":15,"tag":24,"props":79,"children":80},{},[81],{"type":15,"tag":35,"props":82,"children":85},{"href":83,"rel":84},"https://github.com/danielskatz/software-vs-data",[39],[86],{"type":21,"value":83},{"type":15,"tag":24,"props":88,"children":89},{},[90],{"type":15,"tag":35,"props":91,"children":94},{"href":92,"rel":93},"https://doi.org/10.7287/peerj.preprints.2630v1",[39],[95],{"type":21,"value":92},{"type":15,"tag":16,"props":97,"children":99},{"id":98},"discussion",[100],{"type":21,"value":101},"Discussion",{"type":15,"tag":54,"props":103,"children":104},{},[105,108],{"type":15,"tag":58,"props":106,"children":107},{},[],{"type":15,"tag":58,"props":109,"children":110},{},[111],{"type":21,"value":112},"Can you think of examples where the line between software and data becomes fuzzy?",{"title":7,"searchDepth":114,"depth":114,"links":115},2,[116,118,119],{"id":18,"depth":117,"text":22},3,{"id":44,"depth":117,"text":47},{"id":98,"depth":117,"text":101},"markdown","local_fs:modules:researchsoftware:software-and-data.md","local_fs","modules/researchsoftware/software-and-data.md","md",[126,161],{"_path":127,"_dir":128,"_draft":6,"_partial":6,"_locale":7,"title":129,"description":7,"body":130,"_type":120,"_id":159,"_source":122,"_file":160,"_extension":124},"/main/about","main","About",{"type":12,"children":131,"toc":155},[132,139,144,150],{"type":15,"tag":133,"props":134,"children":136},"h2",{"id":135},"about-the-research-software-support",[137],{"type":21,"value":138},"About the Research Software Support",{"type":15,"tag":24,"props":140,"children":141},{},[142],{"type":21,"value":143},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":133,"props":145,"children":147},{"id":146},"target-audience",[148],{"type":21,"value":149},"Target audience",{"type":15,"tag":24,"props":151,"children":152},{},[153],{"type":21,"value":154},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":114,"depth":114,"links":156},[157,158],{"id":135,"depth":114,"text":138},{"id":146,"depth":114,"text":149},"local_fs:main:about.md","main/about.md",{"_path":162,"_dir":128,"_draft":6,"_partial":6,"_locale":7,"title":163,"description":7,"body":164,"_type":120,"_id":286,"_source":122,"_file":287,"_extension":124},"/main/contribute","Contribute",{"type":12,"children":165,"toc":281},[166,172,177,183,188],{"type":15,"tag":133,"props":167,"children":169},{"id":168},"contributing-to-the-research-software-support",[170],{"type":21,"value":171},"Contributing to the Research Software Support",{"type":15,"tag":24,"props":173,"children":174},{},[175],{"type":21,"value":176},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":16,"props":178,"children":180},{"id":179},"what-can-i-do",[181],{"type":21,"value":182},"What can I do?",{"type":15,"tag":24,"props":184,"children":185},{},[186],{"type":21,"value":187},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":54,"props":189,"children":190},{},[191,205,246,269],{"type":15,"tag":58,"props":192,"children":193},{},[194,196,203],{"type":21,"value":195},"Contribute to the content discussion in the ",{"type":15,"tag":35,"props":197,"children":200},{"href":198,"rel":199},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[39],[201],{"type":21,"value":202},"chapter issues",{"type":21,"value":204},", e.g. by listing good resources for information.",{"type":15,"tag":58,"props":206,"children":207},{},[208,214,216],{"type":15,"tag":35,"props":209,"children":211},{"href":210},"#elements-of-a-module",[212],{"type":21,"value":213},"Author a lesson",{"type":21,"value":215},", e.g. by:\n",{"type":15,"tag":54,"props":217,"children":218},{},[219,228,237],{"type":15,"tag":58,"props":220,"children":221},{},[222],{"type":15,"tag":35,"props":223,"children":225},{"href":224},"#slides",[226],{"type":21,"value":227},"Creating slides",{"type":15,"tag":58,"props":229,"children":230},{},[231],{"type":15,"tag":35,"props":232,"children":234},{"href":233},"#exercises",[235],{"type":21,"value":236},"Designing an exercise",{"type":15,"tag":58,"props":238,"children":239},{},[240],{"type":15,"tag":35,"props":241,"children":243},{"href":242},"#online-resources",[244],{"type":21,"value":245},"Curating online resources",{"type":15,"tag":58,"props":247,"children":248},{},[249,251,258,260,267],{"type":21,"value":250},"Review a lesson module; both by looking at ",{"type":15,"tag":35,"props":252,"children":255},{"href":253,"rel":254},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[39],[256],{"type":21,"value":257},"open PRs",{"type":21,"value":259},", as well as flagging issues for improvement in the ",{"type":15,"tag":35,"props":261,"children":264},{"href":262,"rel":263},"https://esciencecenter-digital-skills.github.io/research-software-support/",[39],[265],{"type":21,"value":266},"existing content",{"type":21,"value":268},".",{"type":15,"tag":58,"props":270,"children":271},{},[272,279],{"type":15,"tag":35,"props":273,"children":276},{"href":274,"rel":275},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[39],[277],{"type":21,"value":278},"Provide feedback",{"type":21,"value":280}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":114,"depth":114,"links":282},[283],{"id":168,"depth":114,"text":171,"children":284},[285],{"id":179,"depth":117,"text":182},"local_fs:main:contribute.md","main/contribute.md",1715801014720] \ No newline at end of file diff --git a/modules/researchsoftware/software-and-data/index.html b/modules/researchsoftware/software-and-data/index.html index f43fa9e7..0f24ce77 100644 --- a/modules/researchsoftware/software-and-data/index.html +++ b/modules/researchsoftware/software-and-data/index.html @@ -2,7 +2,7 @@ Software is data - + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - - + + -

    Module: researchsoftware

    Software is data (10 minutes, optional)

    In computer science, the fact that software is data is considered one of the fundamental concepts of computing. The fact that the thing that operates the machine (software) is the same kind of thing as the thing it operates on (data) is definitely one of the strengths of current computersystems and one of the main reasons why we can do such complex and powerful things with the combination of hardware and software.

    Read the following blogpost about why this concept is so powerful: -https://www.blackliszt.com/2014/04/fundamental-concepts-of-computing-software-is-data.html

    Software is a special type of data ()

    However for most practical purposes in most domains of scientific research (except maybe the domain of computer science) it is useful to make a distinction between the data that is software and other data. From now on, when we use the word data, we mean the kind fo data which is not software and which we use to store more static information.

    • Software is executable, data is not.
    • Data provides information or evidence, software provides a tool to do work on the data.
    • Software is a creative work, scientific data are facts or observations.
    • The lifetime of software is generally not as long as that of data.

    https://github.com/danielskatz/software-vs-data

    https://doi.org/10.7287/peerj.preprints.2630v1

    Discussion

    • Can you think of examples where the line between software and data becomes fuzzy?
    - \ No newline at end of file +

    Module: researchsoftware

    Software is data (10 minutes, optional)

    In computer science, the fact that software is data is considered one of the fundamental concepts of computing. The fact that the thing that operates the machine (software) is the same kind of thing as the thing it operates on (data) is definitely one of the strengths of current computersystems and one of the main reasons why we can do such complex and powerful things with the combination of hardware and software.

    Read the following blogpost about why this concept is so powerful: +https://www.blackliszt.com/2014/04/fundamental-concepts-of-computing-software-is-data.html

    Software is a special type of data ()

    However for most practical purposes in most domains of scientific research (except maybe the domain of computer science) it is useful to make a distinction between the data that is software and other data. From now on, when we use the word data, we mean the kind fo data which is not software and which we use to store more static information.

    • Software is executable, data is not.
    • Data provides information or evidence, software provides a tool to do work on the data.
    • Software is a creative work, scientific data are facts or observations.
    • The lifetime of software is generally not as long as that of data.

    https://github.com/danielskatz/software-vs-data

    https://doi.org/10.7287/peerj.preprints.2630v1

    Discussion

    • Can you think of examples where the line between software and data becomes fuzzy?
    + \ No newline at end of file diff --git a/modules/smp/exercise1/_payload.json b/modules/smp/exercise1/_payload.json index 25b67cf3..7a06812f 100644 --- a/modules/smp/exercise1/_payload.json +++ b/modules/smp/exercise1/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":282},["Reactive",2],{"content-query-zduCKct5Oy":3,"content-query-AT44bg6JPw":118},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":113,"_id":114,"_source":115,"_file":116,"_extension":117},"/modules/smp/exercise1","smp",false,"","Exercise 1","exercise",2,{"type":12,"children":13,"toc":110},"root",[14,22,29,35,40,65,70,82,87],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-1",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"software-management-plans-10-minutes",[27],{"type":21,"value":28},"Software Management Plans (10 minutes)",{"type":15,"tag":30,"props":31,"children":32},"p",{},[33],{"type":21,"value":34},"Research software plays a crucial role in academic research and has become a key output of many research projects. A software management plan helps to implement best practices during software development and ensures that software is accessible and reusable in the short and longer term. It also contributes to the reproducibility of results and stimulates collaborative work on open-source software for research.",{"type":15,"tag":30,"props":36,"children":37},{},[38],{"type":21,"value":39},"In practice, a software management plan helps:",{"type":15,"tag":41,"props":42,"children":43},"ul",{},[44,50,55,60],{"type":15,"tag":45,"props":46,"children":47},"li",{},[48],{"type":21,"value":49},"Assess whether developing new software is necessary",{"type":15,"tag":45,"props":51,"children":52},{},[53],{"type":21,"value":54},"Plan to make the research software reusable and sustainable",{"type":15,"tag":45,"props":56,"children":57},{},[58],{"type":21,"value":59},"Plan for necessary resources",{"type":15,"tag":45,"props":61,"children":62},{},[63],{"type":21,"value":64},"Allow for verification of work that went into implementation",{"type":15,"tag":30,"props":66,"children":67},{},[68],{"type":21,"value":69},"In the Practical Guide to Software Management plans, this is described in more detail:",{"type":15,"tag":30,"props":71,"children":72},{},[73],{"type":15,"tag":74,"props":75,"children":79},"a",{"href":76,"rel":77},"https://zenodo.org/record/7589725",[78],"nofollow",[80],{"type":21,"value":81},"A practical guide to software management plans",{"type":15,"tag":30,"props":83,"children":84},{},[85],{"type":21,"value":86},"After reading this guide, you should:",{"type":15,"tag":41,"props":88,"children":89},{},[90,95,100,105],{"type":15,"tag":45,"props":91,"children":92},{},[93],{"type":21,"value":94},"Be aware of different types of research software",{"type":15,"tag":45,"props":96,"children":97},{},[98],{"type":21,"value":99},"Understand different demands placed on these types of software",{"type":15,"tag":45,"props":101,"children":102},{},[103],{"type":21,"value":104},"Know about various aspects of software management",{"type":15,"tag":45,"props":106,"children":107},{},[108],{"type":21,"value":109},"Be able to explain the importance of a software management plan for software sustainability.",{"title":7,"searchDepth":10,"depth":10,"links":111},[112],{"id":25,"depth":10,"text":28},"markdown","local_fs:modules:smp:exercise1.md","local_fs","modules/smp/exercise1.md","md",[119,153],{"_path":120,"_dir":121,"_draft":6,"_partial":6,"_locale":7,"title":122,"description":7,"body":123,"_type":113,"_id":151,"_source":115,"_file":152,"_extension":117},"/main/about","main","About",{"type":12,"children":124,"toc":147},[125,131,136,142],{"type":15,"tag":23,"props":126,"children":128},{"id":127},"about-the-research-software-support",[129],{"type":21,"value":130},"About the Research Software Support",{"type":15,"tag":30,"props":132,"children":133},{},[134],{"type":21,"value":135},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":137,"children":139},{"id":138},"target-audience",[140],{"type":21,"value":141},"Target audience",{"type":15,"tag":30,"props":143,"children":144},{},[145],{"type":21,"value":146},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":10,"depth":10,"links":148},[149,150],{"id":127,"depth":10,"text":130},{"id":138,"depth":10,"text":141},"local_fs:main:about.md","main/about.md",{"_path":154,"_dir":121,"_draft":6,"_partial":6,"_locale":7,"title":155,"description":7,"body":156,"_type":113,"_id":280,"_source":115,"_file":281,"_extension":117},"/main/contribute","Contribute",{"type":12,"children":157,"toc":274},[158,164,169,176,181],{"type":15,"tag":23,"props":159,"children":161},{"id":160},"contributing-to-the-research-software-support",[162],{"type":21,"value":163},"Contributing to the Research Software Support",{"type":15,"tag":30,"props":165,"children":166},{},[167],{"type":21,"value":168},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":170,"props":171,"children":173},"h3",{"id":172},"what-can-i-do",[174],{"type":21,"value":175},"What can I do?",{"type":15,"tag":30,"props":177,"children":178},{},[179],{"type":21,"value":180},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":41,"props":182,"children":183},{},[184,198,239,262],{"type":15,"tag":45,"props":185,"children":186},{},[187,189,196],{"type":21,"value":188},"Contribute to the content discussion in the ",{"type":15,"tag":74,"props":190,"children":193},{"href":191,"rel":192},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[78],[194],{"type":21,"value":195},"chapter issues",{"type":21,"value":197},", e.g. by listing good resources for information.",{"type":15,"tag":45,"props":199,"children":200},{},[201,207,209],{"type":15,"tag":74,"props":202,"children":204},{"href":203},"#elements-of-a-module",[205],{"type":21,"value":206},"Author a lesson",{"type":21,"value":208},", e.g. by:\n",{"type":15,"tag":41,"props":210,"children":211},{},[212,221,230],{"type":15,"tag":45,"props":213,"children":214},{},[215],{"type":15,"tag":74,"props":216,"children":218},{"href":217},"#slides",[219],{"type":21,"value":220},"Creating slides",{"type":15,"tag":45,"props":222,"children":223},{},[224],{"type":15,"tag":74,"props":225,"children":227},{"href":226},"#exercises",[228],{"type":21,"value":229},"Designing an exercise",{"type":15,"tag":45,"props":231,"children":232},{},[233],{"type":15,"tag":74,"props":234,"children":236},{"href":235},"#online-resources",[237],{"type":21,"value":238},"Curating online resources",{"type":15,"tag":45,"props":240,"children":241},{},[242,244,251,253,260],{"type":21,"value":243},"Review a lesson module; both by looking at ",{"type":15,"tag":74,"props":245,"children":248},{"href":246,"rel":247},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[78],[249],{"type":21,"value":250},"open PRs",{"type":21,"value":252},", as well as flagging issues for improvement in the ",{"type":15,"tag":74,"props":254,"children":257},{"href":255,"rel":256},"https://esciencecenter-digital-skills.github.io/research-software-support/",[78],[258],{"type":21,"value":259},"existing content",{"type":21,"value":261},".",{"type":15,"tag":45,"props":263,"children":264},{},[265,272],{"type":15,"tag":74,"props":266,"children":269},{"href":267,"rel":268},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[78],[270],{"type":21,"value":271},"Provide feedback",{"type":21,"value":273}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":10,"depth":10,"links":275},[276],{"id":160,"depth":10,"text":163,"children":277},[278],{"id":172,"depth":279,"text":175},3,"local_fs:main:contribute.md","main/contribute.md",1715800937873] \ No newline at end of file +[{"data":1,"prerenderedAt":282},["Reactive",2],{"content-query-zduCKct5Oy":3,"content-query-AT44bg6JPw":118},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":113,"_id":114,"_source":115,"_file":116,"_extension":117},"/modules/smp/exercise1","smp",false,"","Exercise 1","exercise",2,{"type":12,"children":13,"toc":110},"root",[14,22,29,35,40,65,70,82,87],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-1",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"software-management-plans-10-minutes",[27],{"type":21,"value":28},"Software Management Plans (10 minutes)",{"type":15,"tag":30,"props":31,"children":32},"p",{},[33],{"type":21,"value":34},"Research software plays a crucial role in academic research and has become a key output of many research projects. A software management plan helps to implement best practices during software development and ensures that software is accessible and reusable in the short and longer term. It also contributes to the reproducibility of results and stimulates collaborative work on open-source software for research.",{"type":15,"tag":30,"props":36,"children":37},{},[38],{"type":21,"value":39},"In practice, a software management plan helps:",{"type":15,"tag":41,"props":42,"children":43},"ul",{},[44,50,55,60],{"type":15,"tag":45,"props":46,"children":47},"li",{},[48],{"type":21,"value":49},"Assess whether developing new software is necessary",{"type":15,"tag":45,"props":51,"children":52},{},[53],{"type":21,"value":54},"Plan to make the research software reusable and sustainable",{"type":15,"tag":45,"props":56,"children":57},{},[58],{"type":21,"value":59},"Plan for necessary resources",{"type":15,"tag":45,"props":61,"children":62},{},[63],{"type":21,"value":64},"Allow for verification of work that went into implementation",{"type":15,"tag":30,"props":66,"children":67},{},[68],{"type":21,"value":69},"In the Practical Guide to Software Management plans, this is described in more detail:",{"type":15,"tag":30,"props":71,"children":72},{},[73],{"type":15,"tag":74,"props":75,"children":79},"a",{"href":76,"rel":77},"https://zenodo.org/record/7589725",[78],"nofollow",[80],{"type":21,"value":81},"A practical guide to software management plans",{"type":15,"tag":30,"props":83,"children":84},{},[85],{"type":21,"value":86},"After reading this guide, you should:",{"type":15,"tag":41,"props":88,"children":89},{},[90,95,100,105],{"type":15,"tag":45,"props":91,"children":92},{},[93],{"type":21,"value":94},"Be aware of different types of research software",{"type":15,"tag":45,"props":96,"children":97},{},[98],{"type":21,"value":99},"Understand different demands placed on these types of software",{"type":15,"tag":45,"props":101,"children":102},{},[103],{"type":21,"value":104},"Know about various aspects of software management",{"type":15,"tag":45,"props":106,"children":107},{},[108],{"type":21,"value":109},"Be able to explain the importance of a software management plan for software sustainability.",{"title":7,"searchDepth":10,"depth":10,"links":111},[112],{"id":25,"depth":10,"text":28},"markdown","local_fs:modules:smp:exercise1.md","local_fs","modules/smp/exercise1.md","md",[119,153],{"_path":120,"_dir":121,"_draft":6,"_partial":6,"_locale":7,"title":122,"description":7,"body":123,"_type":113,"_id":151,"_source":115,"_file":152,"_extension":117},"/main/about","main","About",{"type":12,"children":124,"toc":147},[125,131,136,142],{"type":15,"tag":23,"props":126,"children":128},{"id":127},"about-the-research-software-support",[129],{"type":21,"value":130},"About the Research Software Support",{"type":15,"tag":30,"props":132,"children":133},{},[134],{"type":21,"value":135},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":137,"children":139},{"id":138},"target-audience",[140],{"type":21,"value":141},"Target audience",{"type":15,"tag":30,"props":143,"children":144},{},[145],{"type":21,"value":146},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":10,"depth":10,"links":148},[149,150],{"id":127,"depth":10,"text":130},{"id":138,"depth":10,"text":141},"local_fs:main:about.md","main/about.md",{"_path":154,"_dir":121,"_draft":6,"_partial":6,"_locale":7,"title":155,"description":7,"body":156,"_type":113,"_id":280,"_source":115,"_file":281,"_extension":117},"/main/contribute","Contribute",{"type":12,"children":157,"toc":274},[158,164,169,176,181],{"type":15,"tag":23,"props":159,"children":161},{"id":160},"contributing-to-the-research-software-support",[162],{"type":21,"value":163},"Contributing to the Research Software Support",{"type":15,"tag":30,"props":165,"children":166},{},[167],{"type":21,"value":168},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":170,"props":171,"children":173},"h3",{"id":172},"what-can-i-do",[174],{"type":21,"value":175},"What can I do?",{"type":15,"tag":30,"props":177,"children":178},{},[179],{"type":21,"value":180},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":41,"props":182,"children":183},{},[184,198,239,262],{"type":15,"tag":45,"props":185,"children":186},{},[187,189,196],{"type":21,"value":188},"Contribute to the content discussion in the ",{"type":15,"tag":74,"props":190,"children":193},{"href":191,"rel":192},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[78],[194],{"type":21,"value":195},"chapter issues",{"type":21,"value":197},", e.g. by listing good resources for information.",{"type":15,"tag":45,"props":199,"children":200},{},[201,207,209],{"type":15,"tag":74,"props":202,"children":204},{"href":203},"#elements-of-a-module",[205],{"type":21,"value":206},"Author a lesson",{"type":21,"value":208},", e.g. by:\n",{"type":15,"tag":41,"props":210,"children":211},{},[212,221,230],{"type":15,"tag":45,"props":213,"children":214},{},[215],{"type":15,"tag":74,"props":216,"children":218},{"href":217},"#slides",[219],{"type":21,"value":220},"Creating slides",{"type":15,"tag":45,"props":222,"children":223},{},[224],{"type":15,"tag":74,"props":225,"children":227},{"href":226},"#exercises",[228],{"type":21,"value":229},"Designing an exercise",{"type":15,"tag":45,"props":231,"children":232},{},[233],{"type":15,"tag":74,"props":234,"children":236},{"href":235},"#online-resources",[237],{"type":21,"value":238},"Curating online resources",{"type":15,"tag":45,"props":240,"children":241},{},[242,244,251,253,260],{"type":21,"value":243},"Review a lesson module; both by looking at ",{"type":15,"tag":74,"props":245,"children":248},{"href":246,"rel":247},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[78],[249],{"type":21,"value":250},"open PRs",{"type":21,"value":252},", as well as flagging issues for improvement in the ",{"type":15,"tag":74,"props":254,"children":257},{"href":255,"rel":256},"https://esciencecenter-digital-skills.github.io/research-software-support/",[78],[258],{"type":21,"value":259},"existing content",{"type":21,"value":261},".",{"type":15,"tag":45,"props":263,"children":264},{},[265,272],{"type":15,"tag":74,"props":266,"children":269},{"href":267,"rel":268},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[78],[270],{"type":21,"value":271},"Provide feedback",{"type":21,"value":273}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":10,"depth":10,"links":275},[276],{"id":160,"depth":10,"text":163,"children":277},[278],{"id":172,"depth":279,"text":175},3,"local_fs:main:contribute.md","main/contribute.md",1715801014894] \ No newline at end of file diff --git a/modules/smp/exercise1/index.html b/modules/smp/exercise1/index.html index f80ffaa6..5c7d78d4 100644 --- a/modules/smp/exercise1/index.html +++ b/modules/smp/exercise1/index.html @@ -2,7 +2,7 @@ Exercise 1 - + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - + + -

    Module: smp

    Exercise 1

    Software Management Plans (10 minutes)

    Research software plays a crucial role in academic research and has become a key output of many research projects. A software management plan helps to implement best practices during software development and ensures that software is accessible and reusable in the short and longer term. It also contributes to the reproducibility of results and stimulates collaborative work on open-source software for research.

    In practice, a software management plan helps:

    • Assess whether developing new software is necessary
    • Plan to make the research software reusable and sustainable
    • Plan for necessary resources
    • Allow for verification of work that went into implementation

    In the Practical Guide to Software Management plans, this is described in more detail:

    A practical guide to software management plans

    After reading this guide, you should:

    • Be aware of different types of research software
    • Understand different demands placed on these types of software
    • Know about various aspects of software management
    • Be able to explain the importance of a software management plan for software sustainability.
    - \ No newline at end of file +

    Module: smp

    Exercise 1

    Software Management Plans (10 minutes)

    Research software plays a crucial role in academic research and has become a key output of many research projects. A software management plan helps to implement best practices during software development and ensures that software is accessible and reusable in the short and longer term. It also contributes to the reproducibility of results and stimulates collaborative work on open-source software for research.

    In practice, a software management plan helps:

    • Assess whether developing new software is necessary
    • Plan to make the research software reusable and sustainable
    • Plan for necessary resources
    • Allow for verification of work that went into implementation

    In the Practical Guide to Software Management plans, this is described in more detail:

    A practical guide to software management plans

    After reading this guide, you should:

    • Be aware of different types of research software
    • Understand different demands placed on these types of software
    • Know about various aspects of software management
    • Be able to explain the importance of a software management plan for software sustainability.
    + \ No newline at end of file diff --git a/modules/smp/exercise2/_payload.json b/modules/smp/exercise2/_payload.json index 6b0fbd8d..87a1a060 100644 --- a/modules/smp/exercise2/_payload.json +++ b/modules/smp/exercise2/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":399},["Reactive",2],{"content-query-pAhwHJfpQg":3,"content-query-AT44bg6JPw":237},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":232,"_id":233,"_source":234,"_file":235,"_extension":236},"/modules/smp/exercise2","smp",false,"","Exercise 2","In a live setting, this exercise is done in groups.\nEach group will be assigned a software project.\nThe group will then create an SMP for this project.","exercise",3,{"type":13,"children":14,"toc":226},"root",[15,23,32,39,44,49,106,120,126,139,152,205,210,216,221],{"type":16,"tag":17,"props":18,"children":20},"element","h1",{"id":19},"exercise-2",[21],{"type":22,"value":8},"text",{"type":16,"tag":24,"props":25,"children":26},"p",{},[27],{"type":16,"tag":28,"props":29,"children":30},"em",{},[31],{"type":22,"value":9},{"type":16,"tag":33,"props":34,"children":36},"h2",{"id":35},"step-1-choose-a-software-project",[37],{"type":22,"value":38},"Step 1: Choose a software project",{"type":16,"tag":24,"props":40,"children":41},{},[42],{"type":22,"value":43},"Choose a software project for this exercise, preferably one you are familiar with.",{"type":16,"tag":24,"props":45,"children":46},{},[47],{"type":22,"value":48},"If you don't have a project in mind, you can use one of the following:",{"type":16,"tag":50,"props":51,"children":52},"ul",{},[53,66,76,86,96],{"type":16,"tag":54,"props":55,"children":56},"li",{},[57],{"type":16,"tag":58,"props":59,"children":63},"a",{"href":60,"rel":61},"https://research-software-directory.org/software/xenon",[62],"nofollow",[64],{"type":22,"value":65},"Xenon",{"type":16,"tag":54,"props":67,"children":68},{},[69],{"type":16,"tag":58,"props":70,"children":73},{"href":71,"rel":72},"https://research-software-directory.org/software/esmvaltool",[62],[74],{"type":22,"value":75},"ESMValTool",{"type":16,"tag":54,"props":77,"children":78},{},[79],{"type":16,"tag":58,"props":80,"children":83},{"href":81,"rel":82},"https://research-software-directory.org/projects/rs-dat",[62],[84],{"type":22,"value":85},"RS-DAT",{"type":16,"tag":54,"props":87,"children":88},{},[89],{"type":16,"tag":58,"props":90,"children":93},{"href":91,"rel":92},"https://research-software-directory.org/software/haddock3",[62],[94],{"type":22,"value":95},"Haddock",{"type":16,"tag":54,"props":97,"children":98},{},[99],{"type":16,"tag":58,"props":100,"children":103},{"href":101,"rel":102},"https://cjvanlissa.github.io/worcs/index.html",[62],[104],{"type":22,"value":105},"worcs",{"type":16,"tag":24,"props":107,"children":108},{},[109,111,118],{"type":22,"value":110},"Find the Practical Guide at ",{"type":16,"tag":58,"props":112,"children":115},{"href":113,"rel":114},"https://doi.org/10.5281/zenodo.7589725",[62],[116],{"type":22,"value":117},"tinyurl.com/SMP-guide",{"type":22,"value":119},".",{"type":16,"tag":33,"props":121,"children":123},{"id":122},"step-2-assess-the-management-level-needed",[124],{"type":22,"value":125},"Step 2: Assess the management level needed",{"type":16,"tag":50,"props":127,"children":128},{},[129,134],{"type":16,"tag":54,"props":130,"children":131},{},[132],{"type":22,"value":133},"Look at the software repository or page in the Research Software Directory",{"type":16,"tag":54,"props":135,"children":136},{},[137],{"type":22,"value":138},"Assess what level of management the software needs: low, medium, or high.",{"type":16,"tag":24,"props":140,"children":141},{},[142,144,150],{"type":22,"value":143},"For this, use the following considerations (section 5 in ",{"type":16,"tag":58,"props":145,"children":147},{"href":113,"rel":146},[62],[148],{"type":22,"value":149},"the guide",{"type":22,"value":151},"):",{"type":16,"tag":153,"props":154,"children":155},"ol",{},[156,167,195],{"type":16,"tag":54,"props":157,"children":158},{},[159,165],{"type":16,"tag":160,"props":161,"children":162},"strong",{},[163],{"type":22,"value":164},"Purpose",{"type":22,"value":166},". What is the current reason or expected end-use for developing the software?",{"type":16,"tag":54,"props":168,"children":169},{},[170,175,177],{"type":16,"tag":160,"props":171,"children":172},{},[173],{"type":22,"value":174},"Reliability",{"type":22,"value":176},". The effect of software failure and/or non-maintenance on:\n",{"type":16,"tag":50,"props":178,"children":179},{},[180,185,190],{"type":16,"tag":54,"props":181,"children":182},{},[183],{"type":22,"value":184},"Risk of harm to self or others. This includes injury, privacy violation, bias, and inappropriate content.",{"type":16,"tag":54,"props":186,"children":187},{},[188],{"type":22,"value":189},"Reputation. For example to self, institution or other.",{"type":16,"tag":54,"props":191,"children":192},{},[193],{"type":22,"value":194},"Research, either your own or of others. This effect could be due to an obvious software failure (\"crash\") or a hidden one, for example, returning inconsistent numerical results on different operating systems.",{"type":16,"tag":54,"props":196,"children":197},{},[198,203],{"type":16,"tag":160,"props":199,"children":200},{},[201],{"type":22,"value":202},"Maintenance",{"type":22,"value":204},". The long-term effort needed to maintain the software as long as it might be used as a standalone tool or dependency. This includes maintenance functions that can extend beyond the lifespan of the original development project and includes fixing bugs, dependency management, operating system compatibility, and security issues.",{"type":16,"tag":24,"props":206,"children":207},{},[208],{"type":22,"value":209},"This may not be a clear-cut decision, but that is fine.\nThe goal is to get a sense of the level of management needed.\nDiscuss with your group and come to a consensus.",{"type":16,"tag":33,"props":211,"children":213},{"id":212},"step-3-fill-in-the-smp-template",[214],{"type":22,"value":215},"Step 3: Fill in the SMP template",{"type":16,"tag":24,"props":217,"children":218},{},[219],{"type":22,"value":220},"From the assessment made in Step 1, get the requirements that match the level of management needed.",{"type":16,"tag":24,"props":222,"children":223},{},[224],{"type":22,"value":225},"Copy a template, and fill it in for your software project.",{"title":7,"searchDepth":227,"depth":227,"links":228},2,[229,230,231],{"id":35,"depth":227,"text":38},{"id":122,"depth":227,"text":125},{"id":212,"depth":227,"text":215},"markdown","local_fs:modules:smp:exercise2.md","local_fs","modules/smp/exercise2.md","md",[238,272],{"_path":239,"_dir":240,"_draft":6,"_partial":6,"_locale":7,"title":241,"description":7,"body":242,"_type":232,"_id":270,"_source":234,"_file":271,"_extension":236},"/main/about","main","About",{"type":13,"children":243,"toc":266},[244,250,255,261],{"type":16,"tag":33,"props":245,"children":247},{"id":246},"about-the-research-software-support",[248],{"type":22,"value":249},"About the Research Software Support",{"type":16,"tag":24,"props":251,"children":252},{},[253],{"type":22,"value":254},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":33,"props":256,"children":258},{"id":257},"target-audience",[259],{"type":22,"value":260},"Target audience",{"type":16,"tag":24,"props":262,"children":263},{},[264],{"type":22,"value":265},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":227,"depth":227,"links":267},[268,269],{"id":246,"depth":227,"text":249},{"id":257,"depth":227,"text":260},"local_fs:main:about.md","main/about.md",{"_path":273,"_dir":240,"_draft":6,"_partial":6,"_locale":7,"title":274,"description":7,"body":275,"_type":232,"_id":397,"_source":234,"_file":398,"_extension":236},"/main/contribute","Contribute",{"type":13,"children":276,"toc":392},[277,283,288,295,300],{"type":16,"tag":33,"props":278,"children":280},{"id":279},"contributing-to-the-research-software-support",[281],{"type":22,"value":282},"Contributing to the Research Software Support",{"type":16,"tag":24,"props":284,"children":285},{},[286],{"type":22,"value":287},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":289,"props":290,"children":292},"h3",{"id":291},"what-can-i-do",[293],{"type":22,"value":294},"What can I do?",{"type":16,"tag":24,"props":296,"children":297},{},[298],{"type":22,"value":299},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":50,"props":301,"children":302},{},[303,317,358,380],{"type":16,"tag":54,"props":304,"children":305},{},[306,308,315],{"type":22,"value":307},"Contribute to the content discussion in the ",{"type":16,"tag":58,"props":309,"children":312},{"href":310,"rel":311},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[62],[313],{"type":22,"value":314},"chapter issues",{"type":22,"value":316},", e.g. by listing good resources for information.",{"type":16,"tag":54,"props":318,"children":319},{},[320,326,328],{"type":16,"tag":58,"props":321,"children":323},{"href":322},"#elements-of-a-module",[324],{"type":22,"value":325},"Author a lesson",{"type":22,"value":327},", e.g. by:\n",{"type":16,"tag":50,"props":329,"children":330},{},[331,340,349],{"type":16,"tag":54,"props":332,"children":333},{},[334],{"type":16,"tag":58,"props":335,"children":337},{"href":336},"#slides",[338],{"type":22,"value":339},"Creating slides",{"type":16,"tag":54,"props":341,"children":342},{},[343],{"type":16,"tag":58,"props":344,"children":346},{"href":345},"#exercises",[347],{"type":22,"value":348},"Designing an exercise",{"type":16,"tag":54,"props":350,"children":351},{},[352],{"type":16,"tag":58,"props":353,"children":355},{"href":354},"#online-resources",[356],{"type":22,"value":357},"Curating online resources",{"type":16,"tag":54,"props":359,"children":360},{},[361,363,370,372,379],{"type":22,"value":362},"Review a lesson module; both by looking at ",{"type":16,"tag":58,"props":364,"children":367},{"href":365,"rel":366},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[62],[368],{"type":22,"value":369},"open PRs",{"type":22,"value":371},", as well as flagging issues for improvement in the ",{"type":16,"tag":58,"props":373,"children":376},{"href":374,"rel":375},"https://esciencecenter-digital-skills.github.io/research-software-support/",[62],[377],{"type":22,"value":378},"existing content",{"type":22,"value":119},{"type":16,"tag":54,"props":381,"children":382},{},[383,390],{"type":16,"tag":58,"props":384,"children":387},{"href":385,"rel":386},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[62],[388],{"type":22,"value":389},"Provide feedback",{"type":22,"value":391}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":227,"depth":227,"links":393},[394],{"id":279,"depth":227,"text":282,"children":395},[396],{"id":291,"depth":11,"text":294},"local_fs:main:contribute.md","main/contribute.md",1715800937875] \ No newline at end of file +[{"data":1,"prerenderedAt":399},["Reactive",2],{"content-query-pAhwHJfpQg":3,"content-query-AT44bg6JPw":237},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":232,"_id":233,"_source":234,"_file":235,"_extension":236},"/modules/smp/exercise2","smp",false,"","Exercise 2","In a live setting, this exercise is done in groups.\nEach group will be assigned a software project.\nThe group will then create an SMP for this project.","exercise",3,{"type":13,"children":14,"toc":226},"root",[15,23,32,39,44,49,106,120,126,139,152,205,210,216,221],{"type":16,"tag":17,"props":18,"children":20},"element","h1",{"id":19},"exercise-2",[21],{"type":22,"value":8},"text",{"type":16,"tag":24,"props":25,"children":26},"p",{},[27],{"type":16,"tag":28,"props":29,"children":30},"em",{},[31],{"type":22,"value":9},{"type":16,"tag":33,"props":34,"children":36},"h2",{"id":35},"step-1-choose-a-software-project",[37],{"type":22,"value":38},"Step 1: Choose a software project",{"type":16,"tag":24,"props":40,"children":41},{},[42],{"type":22,"value":43},"Choose a software project for this exercise, preferably one you are familiar with.",{"type":16,"tag":24,"props":45,"children":46},{},[47],{"type":22,"value":48},"If you don't have a project in mind, you can use one of the following:",{"type":16,"tag":50,"props":51,"children":52},"ul",{},[53,66,76,86,96],{"type":16,"tag":54,"props":55,"children":56},"li",{},[57],{"type":16,"tag":58,"props":59,"children":63},"a",{"href":60,"rel":61},"https://research-software-directory.org/software/xenon",[62],"nofollow",[64],{"type":22,"value":65},"Xenon",{"type":16,"tag":54,"props":67,"children":68},{},[69],{"type":16,"tag":58,"props":70,"children":73},{"href":71,"rel":72},"https://research-software-directory.org/software/esmvaltool",[62],[74],{"type":22,"value":75},"ESMValTool",{"type":16,"tag":54,"props":77,"children":78},{},[79],{"type":16,"tag":58,"props":80,"children":83},{"href":81,"rel":82},"https://research-software-directory.org/projects/rs-dat",[62],[84],{"type":22,"value":85},"RS-DAT",{"type":16,"tag":54,"props":87,"children":88},{},[89],{"type":16,"tag":58,"props":90,"children":93},{"href":91,"rel":92},"https://research-software-directory.org/software/haddock3",[62],[94],{"type":22,"value":95},"Haddock",{"type":16,"tag":54,"props":97,"children":98},{},[99],{"type":16,"tag":58,"props":100,"children":103},{"href":101,"rel":102},"https://cjvanlissa.github.io/worcs/index.html",[62],[104],{"type":22,"value":105},"worcs",{"type":16,"tag":24,"props":107,"children":108},{},[109,111,118],{"type":22,"value":110},"Find the Practical Guide at ",{"type":16,"tag":58,"props":112,"children":115},{"href":113,"rel":114},"https://doi.org/10.5281/zenodo.7589725",[62],[116],{"type":22,"value":117},"tinyurl.com/SMP-guide",{"type":22,"value":119},".",{"type":16,"tag":33,"props":121,"children":123},{"id":122},"step-2-assess-the-management-level-needed",[124],{"type":22,"value":125},"Step 2: Assess the management level needed",{"type":16,"tag":50,"props":127,"children":128},{},[129,134],{"type":16,"tag":54,"props":130,"children":131},{},[132],{"type":22,"value":133},"Look at the software repository or page in the Research Software Directory",{"type":16,"tag":54,"props":135,"children":136},{},[137],{"type":22,"value":138},"Assess what level of management the software needs: low, medium, or high.",{"type":16,"tag":24,"props":140,"children":141},{},[142,144,150],{"type":22,"value":143},"For this, use the following considerations (section 5 in ",{"type":16,"tag":58,"props":145,"children":147},{"href":113,"rel":146},[62],[148],{"type":22,"value":149},"the guide",{"type":22,"value":151},"):",{"type":16,"tag":153,"props":154,"children":155},"ol",{},[156,167,195],{"type":16,"tag":54,"props":157,"children":158},{},[159,165],{"type":16,"tag":160,"props":161,"children":162},"strong",{},[163],{"type":22,"value":164},"Purpose",{"type":22,"value":166},". What is the current reason or expected end-use for developing the software?",{"type":16,"tag":54,"props":168,"children":169},{},[170,175,177],{"type":16,"tag":160,"props":171,"children":172},{},[173],{"type":22,"value":174},"Reliability",{"type":22,"value":176},". The effect of software failure and/or non-maintenance on:\n",{"type":16,"tag":50,"props":178,"children":179},{},[180,185,190],{"type":16,"tag":54,"props":181,"children":182},{},[183],{"type":22,"value":184},"Risk of harm to self or others. This includes injury, privacy violation, bias, and inappropriate content.",{"type":16,"tag":54,"props":186,"children":187},{},[188],{"type":22,"value":189},"Reputation. For example to self, institution or other.",{"type":16,"tag":54,"props":191,"children":192},{},[193],{"type":22,"value":194},"Research, either your own or of others. This effect could be due to an obvious software failure (\"crash\") or a hidden one, for example, returning inconsistent numerical results on different operating systems.",{"type":16,"tag":54,"props":196,"children":197},{},[198,203],{"type":16,"tag":160,"props":199,"children":200},{},[201],{"type":22,"value":202},"Maintenance",{"type":22,"value":204},". The long-term effort needed to maintain the software as long as it might be used as a standalone tool or dependency. This includes maintenance functions that can extend beyond the lifespan of the original development project and includes fixing bugs, dependency management, operating system compatibility, and security issues.",{"type":16,"tag":24,"props":206,"children":207},{},[208],{"type":22,"value":209},"This may not be a clear-cut decision, but that is fine.\nThe goal is to get a sense of the level of management needed.\nDiscuss with your group and come to a consensus.",{"type":16,"tag":33,"props":211,"children":213},{"id":212},"step-3-fill-in-the-smp-template",[214],{"type":22,"value":215},"Step 3: Fill in the SMP template",{"type":16,"tag":24,"props":217,"children":218},{},[219],{"type":22,"value":220},"From the assessment made in Step 1, get the requirements that match the level of management needed.",{"type":16,"tag":24,"props":222,"children":223},{},[224],{"type":22,"value":225},"Copy a template, and fill it in for your software project.",{"title":7,"searchDepth":227,"depth":227,"links":228},2,[229,230,231],{"id":35,"depth":227,"text":38},{"id":122,"depth":227,"text":125},{"id":212,"depth":227,"text":215},"markdown","local_fs:modules:smp:exercise2.md","local_fs","modules/smp/exercise2.md","md",[238,272],{"_path":239,"_dir":240,"_draft":6,"_partial":6,"_locale":7,"title":241,"description":7,"body":242,"_type":232,"_id":270,"_source":234,"_file":271,"_extension":236},"/main/about","main","About",{"type":13,"children":243,"toc":266},[244,250,255,261],{"type":16,"tag":33,"props":245,"children":247},{"id":246},"about-the-research-software-support",[248],{"type":22,"value":249},"About the Research Software Support",{"type":16,"tag":24,"props":251,"children":252},{},[253],{"type":22,"value":254},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":33,"props":256,"children":258},{"id":257},"target-audience",[259],{"type":22,"value":260},"Target audience",{"type":16,"tag":24,"props":262,"children":263},{},[264],{"type":22,"value":265},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":227,"depth":227,"links":267},[268,269],{"id":246,"depth":227,"text":249},{"id":257,"depth":227,"text":260},"local_fs:main:about.md","main/about.md",{"_path":273,"_dir":240,"_draft":6,"_partial":6,"_locale":7,"title":274,"description":7,"body":275,"_type":232,"_id":397,"_source":234,"_file":398,"_extension":236},"/main/contribute","Contribute",{"type":13,"children":276,"toc":392},[277,283,288,295,300],{"type":16,"tag":33,"props":278,"children":280},{"id":279},"contributing-to-the-research-software-support",[281],{"type":22,"value":282},"Contributing to the Research Software Support",{"type":16,"tag":24,"props":284,"children":285},{},[286],{"type":22,"value":287},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":289,"props":290,"children":292},"h3",{"id":291},"what-can-i-do",[293],{"type":22,"value":294},"What can I do?",{"type":16,"tag":24,"props":296,"children":297},{},[298],{"type":22,"value":299},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":50,"props":301,"children":302},{},[303,317,358,380],{"type":16,"tag":54,"props":304,"children":305},{},[306,308,315],{"type":22,"value":307},"Contribute to the content discussion in the ",{"type":16,"tag":58,"props":309,"children":312},{"href":310,"rel":311},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[62],[313],{"type":22,"value":314},"chapter issues",{"type":22,"value":316},", e.g. by listing good resources for information.",{"type":16,"tag":54,"props":318,"children":319},{},[320,326,328],{"type":16,"tag":58,"props":321,"children":323},{"href":322},"#elements-of-a-module",[324],{"type":22,"value":325},"Author a lesson",{"type":22,"value":327},", e.g. by:\n",{"type":16,"tag":50,"props":329,"children":330},{},[331,340,349],{"type":16,"tag":54,"props":332,"children":333},{},[334],{"type":16,"tag":58,"props":335,"children":337},{"href":336},"#slides",[338],{"type":22,"value":339},"Creating slides",{"type":16,"tag":54,"props":341,"children":342},{},[343],{"type":16,"tag":58,"props":344,"children":346},{"href":345},"#exercises",[347],{"type":22,"value":348},"Designing an exercise",{"type":16,"tag":54,"props":350,"children":351},{},[352],{"type":16,"tag":58,"props":353,"children":355},{"href":354},"#online-resources",[356],{"type":22,"value":357},"Curating online resources",{"type":16,"tag":54,"props":359,"children":360},{},[361,363,370,372,379],{"type":22,"value":362},"Review a lesson module; both by looking at ",{"type":16,"tag":58,"props":364,"children":367},{"href":365,"rel":366},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[62],[368],{"type":22,"value":369},"open PRs",{"type":22,"value":371},", as well as flagging issues for improvement in the ",{"type":16,"tag":58,"props":373,"children":376},{"href":374,"rel":375},"https://esciencecenter-digital-skills.github.io/research-software-support/",[62],[377],{"type":22,"value":378},"existing content",{"type":22,"value":119},{"type":16,"tag":54,"props":381,"children":382},{},[383,390],{"type":16,"tag":58,"props":384,"children":387},{"href":385,"rel":386},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[62],[388],{"type":22,"value":389},"Provide feedback",{"type":22,"value":391}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":227,"depth":227,"links":393},[394],{"id":279,"depth":227,"text":282,"children":395},[396],{"id":291,"depth":11,"text":294},"local_fs:main:contribute.md","main/contribute.md",1715801014902] \ No newline at end of file diff --git a/modules/smp/exercise2/index.html b/modules/smp/exercise2/index.html index 9c307f6f..12644547 100644 --- a/modules/smp/exercise2/index.html +++ b/modules/smp/exercise2/index.html @@ -8,7 +8,7 @@ - + - - - - - - - - + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - + + -

    Module: smp

    Exercise 2

    In a live setting, this exercise is done in groups. +

    Module: smp

    Exercise 2

    In a live setting, this exercise is done in groups. Each group will be assigned a software project. The group will then create an SMP for this project.

    Step 1: Choose a software project

    Choose a software project for this exercise, preferably one you are familiar with.

    If you don't have a project in mind, you can use one of the following:

    Find the Practical Guide at tinyurl.com/SMP-guide.

    Step 2: Assess the management level needed

    • Look at the software repository or page in the Research Software Directory
    • Assess what level of management the software needs: low, medium, or high.

    For this, use the following considerations (section 5 in the guide):

    1. Purpose. What is the current reason or expected end-use for developing the software?
    2. Reliability. The effect of software failure and/or non-maintenance on:
      • Risk of harm to self or others. This includes injury, privacy violation, bias, and inappropriate content.
      • Reputation. For example to self, institution or other.
      • Research, either your own or of others. This effect could be due to an obvious software failure ("crash") or a hidden one, for example, returning inconsistent numerical results on different operating systems.
    3. Maintenance. The long-term effort needed to maintain the software as long as it might be used as a standalone tool or dependency. This includes maintenance functions that can extend beyond the lifespan of the original development project and includes fixing bugs, dependency management, operating system compatibility, and security issues.

    This may not be a clear-cut decision, but that is fine. The goal is to get a sense of the level of management needed. -Discuss with your group and come to a consensus.

    Step 3: Fill in the SMP template

    From the assessment made in Step 1, get the requirements that match the level of management needed.

    Copy a template, and fill it in for your software project.

    - \ No newline at end of file +Discuss with your group and come to a consensus.

    Step 3: Fill in the SMP template

    From the assessment made in Step 1, get the requirements that match the level of management needed.

    Copy a template, and fill it in for your software project.

    + \ No newline at end of file diff --git a/modules/smp/exercise3/_payload.json b/modules/smp/exercise3/_payload.json index a70b86cc..99d6ccdf 100644 --- a/modules/smp/exercise3/_payload.json +++ b/modules/smp/exercise3/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":342},["Reactive",2],{"content-query-rKelksjMlN":3,"content-query-AT44bg6JPw":179},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":174,"_id":175,"_source":176,"_file":177,"_extension":178},"/modules/smp/exercise3","smp",false,"","Exercise 3","exercise",4,{"type":12,"children":13,"toc":166},"root",[14,22,29,36,42,87,92,98,120,125,130,135,143,148],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-3",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"smp-vs-fair",[27],{"type":21,"value":28},"SMP vs FAIR",{"type":15,"tag":30,"props":31,"children":33},"h3",{"id":32},"why-do-we-care",[34],{"type":21,"value":35},"Why do we care?",{"type":15,"tag":37,"props":38,"children":39},"p",{},[40],{"type":21,"value":41},"When thinking of the importance of good software stewardship, management, and development practice, many reasons and motivations come to mind.\nYou may think of:",{"type":15,"tag":43,"props":44,"children":45},"ul",{},[46,52,57,62,67,72,77,82],{"type":15,"tag":47,"props":48,"children":49},"li",{},[50],{"type":21,"value":51},"Accuracy of results",{"type":15,"tag":47,"props":53,"children":54},{},[55],{"type":21,"value":56},"Reproducibility of results",{"type":15,"tag":47,"props":58,"children":59},{},[60],{"type":21,"value":61},"Reusability of software",{"type":15,"tag":47,"props":63,"children":64},{},[65],{"type":21,"value":66},"User friendliness of software",{"type":15,"tag":47,"props":68,"children":69},{},[70],{"type":21,"value":71},"Software quality",{"type":15,"tag":47,"props":73,"children":74},{},[75],{"type":21,"value":76},"Recognition and rewards for software developers",{"type":15,"tag":47,"props":78,"children":79},{},[80],{"type":21,"value":81},"Scholarly archive",{"type":15,"tag":47,"props":83,"children":84},{},[85],{"type":21,"value":86},"Software sustainability",{"type":15,"tag":37,"props":88,"children":89},{},[90],{"type":21,"value":91},"What are the reasons and motivations that come to mind for you?",{"type":15,"tag":30,"props":93,"children":95},{"id":94},"mapping-motivations",[96],{"type":21,"value":97},"Mapping motivations",{"type":15,"tag":37,"props":99,"children":100},{},[101,103,109,111,118],{"type":21,"value":102},"(",{"type":15,"tag":104,"props":105,"children":106},"strong",{},[107],{"type":21,"value":108},"NB:",{"type":21,"value":110}," If you are not yet familiar with the FAIR principles for research software, ",{"type":15,"tag":112,"props":113,"children":115},"a",{"href":114},"/modules/fairsoftware.md",[116],{"type":21,"value":117},"take a look at the chapter on FAIR software",{"type":21,"value":119}," before doing the following exercise.)",{"type":15,"tag":37,"props":121,"children":122},{},[123],{"type":21,"value":124},"The motivations we listed above were important considerations for the development of Software Management Plans as well as the FAIR principles for research software.\nThey do not match completely, however.\nEach has its own focus and emphasis.",{"type":15,"tag":37,"props":126,"children":127},{},[128],{"type":21,"value":129},"In the following exercise, we will map the motivations we listed above to the ultimate goals of SMPs and the FAIR principles.",{"type":15,"tag":37,"props":131,"children":132},{},[133],{"type":21,"value":134},"Draw a Venn diagram with two circles: SMP and FAIR:",{"type":15,"tag":136,"props":137,"children":142},"img",{"src":138,"width":139,"style":140},"/modules/smp/media/venn_fairsmp.png",400,{"aspectRatio":141},"2124/1362",[],{"type":15,"tag":37,"props":144,"children":145},{},[146],{"type":21,"value":147},"Map the motivations listed above to the Venn diagram.",{"type":15,"tag":43,"props":149,"children":150},{},[151,156,161],{"type":15,"tag":47,"props":152,"children":153},{},[154],{"type":21,"value":155},"Which motivations are covered by SMPs, which by FAIR, and which by both?",{"type":15,"tag":47,"props":157,"children":158},{},[159],{"type":21,"value":160},"Do you find any motivations that are not covered by either?",{"type":15,"tag":47,"props":162,"children":163},{},[164],{"type":21,"value":165},"What does this tell you about the relationship between SMPs and FAIR?",{"title":7,"searchDepth":167,"depth":167,"links":168},2,[169],{"id":25,"depth":167,"text":28,"children":170},[171,173],{"id":32,"depth":172,"text":35},3,{"id":94,"depth":172,"text":97},"markdown","local_fs:modules:smp:exercise3.md","local_fs","modules/smp/exercise3.md","md",[180,214],{"_path":181,"_dir":182,"_draft":6,"_partial":6,"_locale":7,"title":183,"description":7,"body":184,"_type":174,"_id":212,"_source":176,"_file":213,"_extension":178},"/main/about","main","About",{"type":12,"children":185,"toc":208},[186,192,197,203],{"type":15,"tag":23,"props":187,"children":189},{"id":188},"about-the-research-software-support",[190],{"type":21,"value":191},"About the Research Software Support",{"type":15,"tag":37,"props":193,"children":194},{},[195],{"type":21,"value":196},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":198,"children":200},{"id":199},"target-audience",[201],{"type":21,"value":202},"Target audience",{"type":15,"tag":37,"props":204,"children":205},{},[206],{"type":21,"value":207},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":167,"depth":167,"links":209},[210,211],{"id":188,"depth":167,"text":191},{"id":199,"depth":167,"text":202},"local_fs:main:about.md","main/about.md",{"_path":215,"_dir":182,"_draft":6,"_partial":6,"_locale":7,"title":216,"description":7,"body":217,"_type":174,"_id":340,"_source":176,"_file":341,"_extension":178},"/main/contribute","Contribute",{"type":12,"children":218,"toc":335},[219,225,230,236,241],{"type":15,"tag":23,"props":220,"children":222},{"id":221},"contributing-to-the-research-software-support",[223],{"type":21,"value":224},"Contributing to the Research Software Support",{"type":15,"tag":37,"props":226,"children":227},{},[228],{"type":21,"value":229},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":30,"props":231,"children":233},{"id":232},"what-can-i-do",[234],{"type":21,"value":235},"What can I do?",{"type":15,"tag":37,"props":237,"children":238},{},[239],{"type":21,"value":240},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":43,"props":242,"children":243},{},[244,259,300,323],{"type":15,"tag":47,"props":245,"children":246},{},[247,249,257],{"type":21,"value":248},"Contribute to the content discussion in the ",{"type":15,"tag":112,"props":250,"children":254},{"href":251,"rel":252},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[253],"nofollow",[255],{"type":21,"value":256},"chapter issues",{"type":21,"value":258},", e.g. by listing good resources for information.",{"type":15,"tag":47,"props":260,"children":261},{},[262,268,270],{"type":15,"tag":112,"props":263,"children":265},{"href":264},"#elements-of-a-module",[266],{"type":21,"value":267},"Author a lesson",{"type":21,"value":269},", e.g. by:\n",{"type":15,"tag":43,"props":271,"children":272},{},[273,282,291],{"type":15,"tag":47,"props":274,"children":275},{},[276],{"type":15,"tag":112,"props":277,"children":279},{"href":278},"#slides",[280],{"type":21,"value":281},"Creating slides",{"type":15,"tag":47,"props":283,"children":284},{},[285],{"type":15,"tag":112,"props":286,"children":288},{"href":287},"#exercises",[289],{"type":21,"value":290},"Designing an exercise",{"type":15,"tag":47,"props":292,"children":293},{},[294],{"type":15,"tag":112,"props":295,"children":297},{"href":296},"#online-resources",[298],{"type":21,"value":299},"Curating online resources",{"type":15,"tag":47,"props":301,"children":302},{},[303,305,312,314,321],{"type":21,"value":304},"Review a lesson module; both by looking at ",{"type":15,"tag":112,"props":306,"children":309},{"href":307,"rel":308},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[253],[310],{"type":21,"value":311},"open PRs",{"type":21,"value":313},", as well as flagging issues for improvement in the ",{"type":15,"tag":112,"props":315,"children":318},{"href":316,"rel":317},"https://esciencecenter-digital-skills.github.io/research-software-support/",[253],[319],{"type":21,"value":320},"existing content",{"type":21,"value":322},".",{"type":15,"tag":47,"props":324,"children":325},{},[326,333],{"type":15,"tag":112,"props":327,"children":330},{"href":328,"rel":329},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[253],[331],{"type":21,"value":332},"Provide feedback",{"type":21,"value":334}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":167,"depth":167,"links":336},[337],{"id":221,"depth":167,"text":224,"children":338},[339],{"id":232,"depth":172,"text":235},"local_fs:main:contribute.md","main/contribute.md",1715800937878] \ No newline at end of file +[{"data":1,"prerenderedAt":342},["Reactive",2],{"content-query-rKelksjMlN":3,"content-query-AT44bg6JPw":179},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":174,"_id":175,"_source":176,"_file":177,"_extension":178},"/modules/smp/exercise3","smp",false,"","Exercise 3","exercise",4,{"type":12,"children":13,"toc":166},"root",[14,22,29,36,42,87,92,98,120,125,130,135,143,148],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-3",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"smp-vs-fair",[27],{"type":21,"value":28},"SMP vs FAIR",{"type":15,"tag":30,"props":31,"children":33},"h3",{"id":32},"why-do-we-care",[34],{"type":21,"value":35},"Why do we care?",{"type":15,"tag":37,"props":38,"children":39},"p",{},[40],{"type":21,"value":41},"When thinking of the importance of good software stewardship, management, and development practice, many reasons and motivations come to mind.\nYou may think of:",{"type":15,"tag":43,"props":44,"children":45},"ul",{},[46,52,57,62,67,72,77,82],{"type":15,"tag":47,"props":48,"children":49},"li",{},[50],{"type":21,"value":51},"Accuracy of results",{"type":15,"tag":47,"props":53,"children":54},{},[55],{"type":21,"value":56},"Reproducibility of results",{"type":15,"tag":47,"props":58,"children":59},{},[60],{"type":21,"value":61},"Reusability of software",{"type":15,"tag":47,"props":63,"children":64},{},[65],{"type":21,"value":66},"User friendliness of software",{"type":15,"tag":47,"props":68,"children":69},{},[70],{"type":21,"value":71},"Software quality",{"type":15,"tag":47,"props":73,"children":74},{},[75],{"type":21,"value":76},"Recognition and rewards for software developers",{"type":15,"tag":47,"props":78,"children":79},{},[80],{"type":21,"value":81},"Scholarly archive",{"type":15,"tag":47,"props":83,"children":84},{},[85],{"type":21,"value":86},"Software sustainability",{"type":15,"tag":37,"props":88,"children":89},{},[90],{"type":21,"value":91},"What are the reasons and motivations that come to mind for you?",{"type":15,"tag":30,"props":93,"children":95},{"id":94},"mapping-motivations",[96],{"type":21,"value":97},"Mapping motivations",{"type":15,"tag":37,"props":99,"children":100},{},[101,103,109,111,118],{"type":21,"value":102},"(",{"type":15,"tag":104,"props":105,"children":106},"strong",{},[107],{"type":21,"value":108},"NB:",{"type":21,"value":110}," If you are not yet familiar with the FAIR principles for research software, ",{"type":15,"tag":112,"props":113,"children":115},"a",{"href":114},"/modules/fairsoftware.md",[116],{"type":21,"value":117},"take a look at the chapter on FAIR software",{"type":21,"value":119}," before doing the following exercise.)",{"type":15,"tag":37,"props":121,"children":122},{},[123],{"type":21,"value":124},"The motivations we listed above were important considerations for the development of Software Management Plans as well as the FAIR principles for research software.\nThey do not match completely, however.\nEach has its own focus and emphasis.",{"type":15,"tag":37,"props":126,"children":127},{},[128],{"type":21,"value":129},"In the following exercise, we will map the motivations we listed above to the ultimate goals of SMPs and the FAIR principles.",{"type":15,"tag":37,"props":131,"children":132},{},[133],{"type":21,"value":134},"Draw a Venn diagram with two circles: SMP and FAIR:",{"type":15,"tag":136,"props":137,"children":142},"img",{"src":138,"width":139,"style":140},"/modules/smp/media/venn_fairsmp.png",400,{"aspectRatio":141},"2124/1362",[],{"type":15,"tag":37,"props":144,"children":145},{},[146],{"type":21,"value":147},"Map the motivations listed above to the Venn diagram.",{"type":15,"tag":43,"props":149,"children":150},{},[151,156,161],{"type":15,"tag":47,"props":152,"children":153},{},[154],{"type":21,"value":155},"Which motivations are covered by SMPs, which by FAIR, and which by both?",{"type":15,"tag":47,"props":157,"children":158},{},[159],{"type":21,"value":160},"Do you find any motivations that are not covered by either?",{"type":15,"tag":47,"props":162,"children":163},{},[164],{"type":21,"value":165},"What does this tell you about the relationship between SMPs and FAIR?",{"title":7,"searchDepth":167,"depth":167,"links":168},2,[169],{"id":25,"depth":167,"text":28,"children":170},[171,173],{"id":32,"depth":172,"text":35},3,{"id":94,"depth":172,"text":97},"markdown","local_fs:modules:smp:exercise3.md","local_fs","modules/smp/exercise3.md","md",[180,214],{"_path":181,"_dir":182,"_draft":6,"_partial":6,"_locale":7,"title":183,"description":7,"body":184,"_type":174,"_id":212,"_source":176,"_file":213,"_extension":178},"/main/about","main","About",{"type":12,"children":185,"toc":208},[186,192,197,203],{"type":15,"tag":23,"props":187,"children":189},{"id":188},"about-the-research-software-support",[190],{"type":21,"value":191},"About the Research Software Support",{"type":15,"tag":37,"props":193,"children":194},{},[195],{"type":21,"value":196},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":198,"children":200},{"id":199},"target-audience",[201],{"type":21,"value":202},"Target audience",{"type":15,"tag":37,"props":204,"children":205},{},[206],{"type":21,"value":207},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":167,"depth":167,"links":209},[210,211],{"id":188,"depth":167,"text":191},{"id":199,"depth":167,"text":202},"local_fs:main:about.md","main/about.md",{"_path":215,"_dir":182,"_draft":6,"_partial":6,"_locale":7,"title":216,"description":7,"body":217,"_type":174,"_id":340,"_source":176,"_file":341,"_extension":178},"/main/contribute","Contribute",{"type":12,"children":218,"toc":335},[219,225,230,236,241],{"type":15,"tag":23,"props":220,"children":222},{"id":221},"contributing-to-the-research-software-support",[223],{"type":21,"value":224},"Contributing to the Research Software Support",{"type":15,"tag":37,"props":226,"children":227},{},[228],{"type":21,"value":229},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":30,"props":231,"children":233},{"id":232},"what-can-i-do",[234],{"type":21,"value":235},"What can I do?",{"type":15,"tag":37,"props":237,"children":238},{},[239],{"type":21,"value":240},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":43,"props":242,"children":243},{},[244,259,300,323],{"type":15,"tag":47,"props":245,"children":246},{},[247,249,257],{"type":21,"value":248},"Contribute to the content discussion in the ",{"type":15,"tag":112,"props":250,"children":254},{"href":251,"rel":252},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[253],"nofollow",[255],{"type":21,"value":256},"chapter issues",{"type":21,"value":258},", e.g. by listing good resources for information.",{"type":15,"tag":47,"props":260,"children":261},{},[262,268,270],{"type":15,"tag":112,"props":263,"children":265},{"href":264},"#elements-of-a-module",[266],{"type":21,"value":267},"Author a lesson",{"type":21,"value":269},", e.g. by:\n",{"type":15,"tag":43,"props":271,"children":272},{},[273,282,291],{"type":15,"tag":47,"props":274,"children":275},{},[276],{"type":15,"tag":112,"props":277,"children":279},{"href":278},"#slides",[280],{"type":21,"value":281},"Creating slides",{"type":15,"tag":47,"props":283,"children":284},{},[285],{"type":15,"tag":112,"props":286,"children":288},{"href":287},"#exercises",[289],{"type":21,"value":290},"Designing an exercise",{"type":15,"tag":47,"props":292,"children":293},{},[294],{"type":15,"tag":112,"props":295,"children":297},{"href":296},"#online-resources",[298],{"type":21,"value":299},"Curating online resources",{"type":15,"tag":47,"props":301,"children":302},{},[303,305,312,314,321],{"type":21,"value":304},"Review a lesson module; both by looking at ",{"type":15,"tag":112,"props":306,"children":309},{"href":307,"rel":308},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[253],[310],{"type":21,"value":311},"open PRs",{"type":21,"value":313},", as well as flagging issues for improvement in the ",{"type":15,"tag":112,"props":315,"children":318},{"href":316,"rel":317},"https://esciencecenter-digital-skills.github.io/research-software-support/",[253],[319],{"type":21,"value":320},"existing content",{"type":21,"value":322},".",{"type":15,"tag":47,"props":324,"children":325},{},[326,333],{"type":15,"tag":112,"props":327,"children":330},{"href":328,"rel":329},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[253],[331],{"type":21,"value":332},"Provide feedback",{"type":21,"value":334}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":167,"depth":167,"links":336},[337],{"id":221,"depth":167,"text":224,"children":338},[339],{"id":232,"depth":172,"text":235},"local_fs:main:contribute.md","main/contribute.md",1715801014906] \ No newline at end of file diff --git a/modules/smp/exercise3/index.html b/modules/smp/exercise3/index.html index 5f7caa06..52f0105f 100644 --- a/modules/smp/exercise3/index.html +++ b/modules/smp/exercise3/index.html @@ -2,7 +2,7 @@ Exercise 3 - + - - - - - - - - + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - + + -

    Module: smp

    Exercise 3

    SMP vs FAIR

    Why do we care?

    When thinking of the importance of good software stewardship, management, and development practice, many reasons and motivations come to mind. +

    Module: smp

    Exercise 3

    SMP vs FAIR

    Why do we care?

    When thinking of the importance of good software stewardship, management, and development practice, many reasons and motivations come to mind. You may think of:

    • Accuracy of results
    • Reproducibility of results
    • Reusability of software
    • User friendliness of software
    • Software quality
    • Recognition and rewards for software developers
    • Scholarly archive
    • Software sustainability

    What are the reasons and motivations that come to mind for you?

    Mapping motivations

    (NB: If you are not yet familiar with the FAIR principles for research software, take a look at the chapter on FAIR software before doing the following exercise.)

    The motivations we listed above were important considerations for the development of Software Management Plans as well as the FAIR principles for research software. They do not match completely, however. -Each has its own focus and emphasis.

    In the following exercise, we will map the motivations we listed above to the ultimate goals of SMPs and the FAIR principles.

    Draw a Venn diagram with two circles: SMP and FAIR:

    Map the motivations listed above to the Venn diagram.

    • Which motivations are covered by SMPs, which by FAIR, and which by both?
    • Do you find any motivations that are not covered by either?
    • What does this tell you about the relationship between SMPs and FAIR?
    - \ No newline at end of file +Each has its own focus and emphasis.

    In the following exercise, we will map the motivations we listed above to the ultimate goals of SMPs and the FAIR principles.

    Draw a Venn diagram with two circles: SMP and FAIR:

    Map the motivations listed above to the Venn diagram.

    • Which motivations are covered by SMPs, which by FAIR, and which by both?
    • Do you find any motivations that are not covered by either?
    • What does this tell you about the relationship between SMPs and FAIR?
    + \ No newline at end of file diff --git a/modules/smp/info/_payload.json b/modules/smp/info/_payload.json index 1f354aa8..e9536481 100644 --- a/modules/smp/info/_payload.json +++ b/modules/smp/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-66SecUNH5u":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/smp/info","smp",false,"","Learning objectives","Learning objectives for the Software Management Plans module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:smp:info.md","local_fs","modules/smp/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715800937074] \ No newline at end of file +[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-66SecUNH5u":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/smp/info","smp",false,"","Learning objectives","Learning objectives for the Software Management Plans module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:smp:info.md","local_fs","modules/smp/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715801014243] \ No newline at end of file diff --git a/modules/smp/info/index.html b/modules/smp/info/index.html index 739684e5..5f50c452 100644 --- a/modules/smp/info/index.html +++ b/modules/smp/info/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - + + + - - + + -

    Module: smp

    Learning objectives for the Software Management Plans module

    - \ No newline at end of file +

    Module: smp

    Learning objectives for the Software Management Plans module

    + \ No newline at end of file diff --git a/modules/smp/reading/_payload.json b/modules/smp/reading/_payload.json index e95afb43..ba47f366 100644 --- a/modules/smp/reading/_payload.json +++ b/modules/smp/reading/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":353},["Reactive",2],{"content-query-lTPrclvSsY":3,"content-query-AT44bg6JPw":191},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":186,"_id":187,"_source":188,"_file":189,"_extension":190},"/modules/smp/reading","smp",false,"","Reading material","reading",5,{"type":12,"children":13,"toc":177},"root",[14,22,29,36,51,57,69,75,80,85],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"reading-material",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"software-management-plans",[27],{"type":21,"value":28},"Software Management Plans",{"type":15,"tag":30,"props":31,"children":33},"h3",{"id":32},"zenodo",[34],{"type":21,"value":35},"Zenodo",{"type":15,"tag":37,"props":38,"children":39},"p",{},[40,42],{"type":21,"value":41},"Read in Zenodo about ",{"type":15,"tag":43,"props":44,"children":48},"a",{"href":45,"rel":46},"https://zenodo.org/records/7589725",[47],"nofollow",[49],{"type":21,"value":50},"Practical guide to Software Management Plans",{"type":15,"tag":30,"props":52,"children":54},{"id":53},"software-sustainability-institute",[55],{"type":21,"value":56},"Software Sustainability Institute",{"type":15,"tag":37,"props":58,"children":59},{},[60,62],{"type":21,"value":61},"Read in SSI Resources Hub about ",{"type":15,"tag":43,"props":63,"children":66},{"href":64,"rel":65},"https://www.software.ac.uk/guide/writing-and-using-software-management-plan",[47],[67],{"type":21,"value":68},"Writing and using a software management plan",{"type":15,"tag":23,"props":70,"children":72},{"id":71},"overview-of-practical-guides",[73],{"type":21,"value":74},"Overview of practical guides",{"type":15,"tag":37,"props":76,"children":77},{},[78],{"type":21,"value":79},"There are various practical guides online to the different aspects of software management.",{"type":15,"tag":37,"props":81,"children":82},{},[83],{"type":21,"value":84},"Here is an (incomplete) list:",{"type":15,"tag":86,"props":87,"children":88},"ul",{},[89,100,110,120,148,158],{"type":15,"tag":90,"props":91,"children":92},"li",{},[93],{"type":15,"tag":43,"props":94,"children":97},{"href":95,"rel":96},"https://the-turing-way.netlify.app/reproducible-research/vcs.html",[47],[98],{"type":21,"value":99},"Version control",{"type":15,"tag":90,"props":101,"children":102},{},[103],{"type":15,"tag":43,"props":104,"children":107},{"href":105,"rel":106},"https://the-turing-way.netlify.app/reproducible-research/testing/testing-guidance.html",[47],[108],{"type":21,"value":109},"Testing",{"type":15,"tag":90,"props":111,"children":112},{},[113],{"type":15,"tag":43,"props":114,"children":117},{"href":115,"rel":116},"https://the-turing-way.netlify.app/reproducible-research/renv/renv-package.html",[47],[118],{"type":21,"value":119},"Packaging",{"type":15,"tag":90,"props":121,"children":122},{},[123,130],{"type":15,"tag":43,"props":124,"children":127},{"href":125,"rel":126},"https://guide.esciencecenter.nl/#/best_practices/documentation",[47],[128],{"type":21,"value":129},"Documentation",{"type":15,"tag":86,"props":131,"children":132},{},[133,138,143],{"type":15,"tag":90,"props":134,"children":135},{},[136],{"type":21,"value":137},"User",{"type":15,"tag":90,"props":139,"children":140},{},[141],{"type":21,"value":142},"Deployment",{"type":15,"tag":90,"props":144,"children":145},{},[146],{"type":21,"value":147},"Developer",{"type":15,"tag":90,"props":149,"children":150},{},[151],{"type":15,"tag":43,"props":152,"children":155},{"href":153,"rel":154},"https://the-turing-way.netlify.app/communication/citable/citable-cff.html#cm-citable-cff",[47],[156],{"type":21,"value":157},"Citation",{"type":15,"tag":90,"props":159,"children":160},{},[161,168,170],{"type":15,"tag":43,"props":162,"children":165},{"href":163,"rel":164},"https://the-turing-way.netlify.app/reproducible-research/licensing/licensing-software.html",[47],[166],{"type":21,"value":167},"Software licensing",{"type":21,"value":169}," and ",{"type":15,"tag":43,"props":171,"children":174},{"href":172,"rel":173},"https://the-turing-way.netlify.app/reproducible-research/licensing/licensing-compatibility.html",[47],[175],{"type":21,"value":176},"compatibility",{"title":7,"searchDepth":178,"depth":178,"links":179},2,[180,185],{"id":25,"depth":178,"text":28,"children":181},[182,184],{"id":32,"depth":183,"text":35},3,{"id":53,"depth":183,"text":56},{"id":71,"depth":178,"text":74},"markdown","local_fs:modules:smp:reading.md","local_fs","modules/smp/reading.md","md",[192,226],{"_path":193,"_dir":194,"_draft":6,"_partial":6,"_locale":7,"title":195,"description":7,"body":196,"_type":186,"_id":224,"_source":188,"_file":225,"_extension":190},"/main/about","main","About",{"type":12,"children":197,"toc":220},[198,204,209,215],{"type":15,"tag":23,"props":199,"children":201},{"id":200},"about-the-research-software-support",[202],{"type":21,"value":203},"About the Research Software Support",{"type":15,"tag":37,"props":205,"children":206},{},[207],{"type":21,"value":208},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":210,"children":212},{"id":211},"target-audience",[213],{"type":21,"value":214},"Target audience",{"type":15,"tag":37,"props":216,"children":217},{},[218],{"type":21,"value":219},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":178,"depth":178,"links":221},[222,223],{"id":200,"depth":178,"text":203},{"id":211,"depth":178,"text":214},"local_fs:main:about.md","main/about.md",{"_path":227,"_dir":194,"_draft":6,"_partial":6,"_locale":7,"title":228,"description":7,"body":229,"_type":186,"_id":351,"_source":188,"_file":352,"_extension":190},"/main/contribute","Contribute",{"type":12,"children":230,"toc":346},[231,237,242,248,253],{"type":15,"tag":23,"props":232,"children":234},{"id":233},"contributing-to-the-research-software-support",[235],{"type":21,"value":236},"Contributing to the Research Software Support",{"type":15,"tag":37,"props":238,"children":239},{},[240],{"type":21,"value":241},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":30,"props":243,"children":245},{"id":244},"what-can-i-do",[246],{"type":21,"value":247},"What can I do?",{"type":15,"tag":37,"props":249,"children":250},{},[251],{"type":21,"value":252},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":86,"props":254,"children":255},{},[256,270,311,334],{"type":15,"tag":90,"props":257,"children":258},{},[259,261,268],{"type":21,"value":260},"Contribute to the content discussion in the ",{"type":15,"tag":43,"props":262,"children":265},{"href":263,"rel":264},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[47],[266],{"type":21,"value":267},"chapter issues",{"type":21,"value":269},", e.g. by listing good resources for information.",{"type":15,"tag":90,"props":271,"children":272},{},[273,279,281],{"type":15,"tag":43,"props":274,"children":276},{"href":275},"#elements-of-a-module",[277],{"type":21,"value":278},"Author a lesson",{"type":21,"value":280},", e.g. by:\n",{"type":15,"tag":86,"props":282,"children":283},{},[284,293,302],{"type":15,"tag":90,"props":285,"children":286},{},[287],{"type":15,"tag":43,"props":288,"children":290},{"href":289},"#slides",[291],{"type":21,"value":292},"Creating slides",{"type":15,"tag":90,"props":294,"children":295},{},[296],{"type":15,"tag":43,"props":297,"children":299},{"href":298},"#exercises",[300],{"type":21,"value":301},"Designing an exercise",{"type":15,"tag":90,"props":303,"children":304},{},[305],{"type":15,"tag":43,"props":306,"children":308},{"href":307},"#online-resources",[309],{"type":21,"value":310},"Curating online resources",{"type":15,"tag":90,"props":312,"children":313},{},[314,316,323,325,332],{"type":21,"value":315},"Review a lesson module; both by looking at ",{"type":15,"tag":43,"props":317,"children":320},{"href":318,"rel":319},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[47],[321],{"type":21,"value":322},"open PRs",{"type":21,"value":324},", as well as flagging issues for improvement in the ",{"type":15,"tag":43,"props":326,"children":329},{"href":327,"rel":328},"https://esciencecenter-digital-skills.github.io/research-software-support/",[47],[330],{"type":21,"value":331},"existing content",{"type":21,"value":333},".",{"type":15,"tag":90,"props":335,"children":336},{},[337,344],{"type":15,"tag":43,"props":338,"children":341},{"href":339,"rel":340},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[47],[342],{"type":21,"value":343},"Provide feedback",{"type":21,"value":345}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":178,"depth":178,"links":347},[348],{"id":233,"depth":178,"text":236,"children":349},[350],{"id":244,"depth":183,"text":247},"local_fs:main:contribute.md","main/contribute.md",1715800937880] \ No newline at end of file +[{"data":1,"prerenderedAt":353},["Reactive",2],{"content-query-lTPrclvSsY":3,"content-query-AT44bg6JPw":191},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":186,"_id":187,"_source":188,"_file":189,"_extension":190},"/modules/smp/reading","smp",false,"","Reading material","reading",5,{"type":12,"children":13,"toc":177},"root",[14,22,29,36,51,57,69,75,80,85],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"reading-material",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"software-management-plans",[27],{"type":21,"value":28},"Software Management Plans",{"type":15,"tag":30,"props":31,"children":33},"h3",{"id":32},"zenodo",[34],{"type":21,"value":35},"Zenodo",{"type":15,"tag":37,"props":38,"children":39},"p",{},[40,42],{"type":21,"value":41},"Read in Zenodo about ",{"type":15,"tag":43,"props":44,"children":48},"a",{"href":45,"rel":46},"https://zenodo.org/records/7589725",[47],"nofollow",[49],{"type":21,"value":50},"Practical guide to Software Management Plans",{"type":15,"tag":30,"props":52,"children":54},{"id":53},"software-sustainability-institute",[55],{"type":21,"value":56},"Software Sustainability Institute",{"type":15,"tag":37,"props":58,"children":59},{},[60,62],{"type":21,"value":61},"Read in SSI Resources Hub about ",{"type":15,"tag":43,"props":63,"children":66},{"href":64,"rel":65},"https://www.software.ac.uk/guide/writing-and-using-software-management-plan",[47],[67],{"type":21,"value":68},"Writing and using a software management plan",{"type":15,"tag":23,"props":70,"children":72},{"id":71},"overview-of-practical-guides",[73],{"type":21,"value":74},"Overview of practical guides",{"type":15,"tag":37,"props":76,"children":77},{},[78],{"type":21,"value":79},"There are various practical guides online to the different aspects of software management.",{"type":15,"tag":37,"props":81,"children":82},{},[83],{"type":21,"value":84},"Here is an (incomplete) list:",{"type":15,"tag":86,"props":87,"children":88},"ul",{},[89,100,110,120,148,158],{"type":15,"tag":90,"props":91,"children":92},"li",{},[93],{"type":15,"tag":43,"props":94,"children":97},{"href":95,"rel":96},"https://the-turing-way.netlify.app/reproducible-research/vcs.html",[47],[98],{"type":21,"value":99},"Version control",{"type":15,"tag":90,"props":101,"children":102},{},[103],{"type":15,"tag":43,"props":104,"children":107},{"href":105,"rel":106},"https://the-turing-way.netlify.app/reproducible-research/testing/testing-guidance.html",[47],[108],{"type":21,"value":109},"Testing",{"type":15,"tag":90,"props":111,"children":112},{},[113],{"type":15,"tag":43,"props":114,"children":117},{"href":115,"rel":116},"https://the-turing-way.netlify.app/reproducible-research/renv/renv-package.html",[47],[118],{"type":21,"value":119},"Packaging",{"type":15,"tag":90,"props":121,"children":122},{},[123,130],{"type":15,"tag":43,"props":124,"children":127},{"href":125,"rel":126},"https://guide.esciencecenter.nl/#/best_practices/documentation",[47],[128],{"type":21,"value":129},"Documentation",{"type":15,"tag":86,"props":131,"children":132},{},[133,138,143],{"type":15,"tag":90,"props":134,"children":135},{},[136],{"type":21,"value":137},"User",{"type":15,"tag":90,"props":139,"children":140},{},[141],{"type":21,"value":142},"Deployment",{"type":15,"tag":90,"props":144,"children":145},{},[146],{"type":21,"value":147},"Developer",{"type":15,"tag":90,"props":149,"children":150},{},[151],{"type":15,"tag":43,"props":152,"children":155},{"href":153,"rel":154},"https://the-turing-way.netlify.app/communication/citable/citable-cff.html#cm-citable-cff",[47],[156],{"type":21,"value":157},"Citation",{"type":15,"tag":90,"props":159,"children":160},{},[161,168,170],{"type":15,"tag":43,"props":162,"children":165},{"href":163,"rel":164},"https://the-turing-way.netlify.app/reproducible-research/licensing/licensing-software.html",[47],[166],{"type":21,"value":167},"Software licensing",{"type":21,"value":169}," and ",{"type":15,"tag":43,"props":171,"children":174},{"href":172,"rel":173},"https://the-turing-way.netlify.app/reproducible-research/licensing/licensing-compatibility.html",[47],[175],{"type":21,"value":176},"compatibility",{"title":7,"searchDepth":178,"depth":178,"links":179},2,[180,185],{"id":25,"depth":178,"text":28,"children":181},[182,184],{"id":32,"depth":183,"text":35},3,{"id":53,"depth":183,"text":56},{"id":71,"depth":178,"text":74},"markdown","local_fs:modules:smp:reading.md","local_fs","modules/smp/reading.md","md",[192,226],{"_path":193,"_dir":194,"_draft":6,"_partial":6,"_locale":7,"title":195,"description":7,"body":196,"_type":186,"_id":224,"_source":188,"_file":225,"_extension":190},"/main/about","main","About",{"type":12,"children":197,"toc":220},[198,204,209,215],{"type":15,"tag":23,"props":199,"children":201},{"id":200},"about-the-research-software-support",[202],{"type":21,"value":203},"About the Research Software Support",{"type":15,"tag":37,"props":205,"children":206},{},[207],{"type":21,"value":208},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":210,"children":212},{"id":211},"target-audience",[213],{"type":21,"value":214},"Target audience",{"type":15,"tag":37,"props":216,"children":217},{},[218],{"type":21,"value":219},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":178,"depth":178,"links":221},[222,223],{"id":200,"depth":178,"text":203},{"id":211,"depth":178,"text":214},"local_fs:main:about.md","main/about.md",{"_path":227,"_dir":194,"_draft":6,"_partial":6,"_locale":7,"title":228,"description":7,"body":229,"_type":186,"_id":351,"_source":188,"_file":352,"_extension":190},"/main/contribute","Contribute",{"type":12,"children":230,"toc":346},[231,237,242,248,253],{"type":15,"tag":23,"props":232,"children":234},{"id":233},"contributing-to-the-research-software-support",[235],{"type":21,"value":236},"Contributing to the Research Software Support",{"type":15,"tag":37,"props":238,"children":239},{},[240],{"type":21,"value":241},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":30,"props":243,"children":245},{"id":244},"what-can-i-do",[246],{"type":21,"value":247},"What can I do?",{"type":15,"tag":37,"props":249,"children":250},{},[251],{"type":21,"value":252},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":86,"props":254,"children":255},{},[256,270,311,334],{"type":15,"tag":90,"props":257,"children":258},{},[259,261,268],{"type":21,"value":260},"Contribute to the content discussion in the ",{"type":15,"tag":43,"props":262,"children":265},{"href":263,"rel":264},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[47],[266],{"type":21,"value":267},"chapter issues",{"type":21,"value":269},", e.g. by listing good resources for information.",{"type":15,"tag":90,"props":271,"children":272},{},[273,279,281],{"type":15,"tag":43,"props":274,"children":276},{"href":275},"#elements-of-a-module",[277],{"type":21,"value":278},"Author a lesson",{"type":21,"value":280},", e.g. by:\n",{"type":15,"tag":86,"props":282,"children":283},{},[284,293,302],{"type":15,"tag":90,"props":285,"children":286},{},[287],{"type":15,"tag":43,"props":288,"children":290},{"href":289},"#slides",[291],{"type":21,"value":292},"Creating slides",{"type":15,"tag":90,"props":294,"children":295},{},[296],{"type":15,"tag":43,"props":297,"children":299},{"href":298},"#exercises",[300],{"type":21,"value":301},"Designing an exercise",{"type":15,"tag":90,"props":303,"children":304},{},[305],{"type":15,"tag":43,"props":306,"children":308},{"href":307},"#online-resources",[309],{"type":21,"value":310},"Curating online resources",{"type":15,"tag":90,"props":312,"children":313},{},[314,316,323,325,332],{"type":21,"value":315},"Review a lesson module; both by looking at ",{"type":15,"tag":43,"props":317,"children":320},{"href":318,"rel":319},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[47],[321],{"type":21,"value":322},"open PRs",{"type":21,"value":324},", as well as flagging issues for improvement in the ",{"type":15,"tag":43,"props":326,"children":329},{"href":327,"rel":328},"https://esciencecenter-digital-skills.github.io/research-software-support/",[47],[330],{"type":21,"value":331},"existing content",{"type":21,"value":333},".",{"type":15,"tag":90,"props":335,"children":336},{},[337,344],{"type":15,"tag":43,"props":338,"children":341},{"href":339,"rel":340},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[47],[342],{"type":21,"value":343},"Provide feedback",{"type":21,"value":345}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":178,"depth":178,"links":347},[348],{"id":233,"depth":178,"text":236,"children":349},[350],{"id":244,"depth":183,"text":247},"local_fs:main:contribute.md","main/contribute.md",1715801014922] \ No newline at end of file diff --git a/modules/smp/reading/index.html b/modules/smp/reading/index.html index 9dee9be5..2c5a8be2 100644 --- a/modules/smp/reading/index.html +++ b/modules/smp/reading/index.html @@ -2,7 +2,7 @@ Reading material - + - - - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/smp/slides-smp/_payload.json b/modules/smp/slides-smp/_payload.json index aae74388..a093bf8c 100644 --- a/modules/smp/slides-smp/_payload.json +++ b/modules/smp/slides-smp/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1475},["Reactive",2],{"content-query-pOwmACNkLO":3,"content-query-AT44bg6JPw":1312},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":1307,"_id":1308,"_source":1309,"_file":1310,"_extension":1311},"/modules/smp/slides-smp","smp",false,"","Software Management Plans","slides",1,{"type":12,"children":13,"toc":1289},"root",[14,19,26,29,36,45,50,55,60,63,69,78,83,103,106,112,117,143,175,180,185,190,195,198,206,211,214,220,243,248,251,258,309,314,319,322,328,355,360,365,383,388,391,411,416,419,426,431,444,456,467,479,482,490,508,513,518,521,529,552,557,567,577,587,597,600,607,633,638,650,661,671,674,681,722,727,739,751,763,774,786,798,801,807,848,853,858,861,867,874,879,884,889,894,899,904,907,913,944,955,966,976,981,984,990,1021,1033,1044,1054,1065,1068,1074,1110,1122,1133,1143,1153,1156,1162,1195,1205,1210,1213,1220,1225,1228,1234,1257,1262,1265,1275,1284],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h1",{"id":22},"software-management-plans",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":30,"props":31,"children":33},"h2",{"id":32},"mapping-the-via-appia",[34],{"type":25,"value":35},"Mapping the Via Appia",{"type":15,"tag":37,"props":38,"children":39},"p",{},[40],{"type":15,"tag":41,"props":42,"children":44},"img",{"alt":35,"src":43},"media/viaappia.png",[],{"type":15,"tag":37,"props":46,"children":47},{},[48],{"type":25,"value":49},"Note:\nThe Via Appia was the most important road in the Roman Empire, connecting Rome to Brindisi in the south of Italy, spanning a distance of 540km.\nIt was used for military purposes, but also for trade and travel.\nThe Via Appia was built in 312 BC, and used for 600 years, until the fall of the Roman Empire.",{"type":15,"tag":37,"props":51,"children":52},{},[53],{"type":25,"value":54},"The eScience Center participated in a project to map the Via Appia. Using a combination of satellite imagery and ground-based measurements, the project created a 3D model of the road. The model was used to study the road and its surroundings.",{"type":15,"tag":37,"props":56,"children":57},{},[58],{"type":25,"value":59},"In this project, research software was used to process the satellite imagery and the ground-based measurements, and combine them into a 3D model of the Via Appia.",{"type":15,"tag":16,"props":61,"children":62},{},[],{"type":15,"tag":30,"props":64,"children":66},{"id":65},"the-research-life-cycle",[67],{"type":25,"value":68},"The research life cycle",{"type":15,"tag":70,"props":71,"children":72},"center",{},[73],{"type":15,"tag":41,"props":74,"children":77},{"src":75,"width":76},"media/researchcycle.png","60%",[],{"type":15,"tag":37,"props":79,"children":80},{},[81],{"type":25,"value":82},"Note:\nAll over the research life cycle we can find examples of software created for research.\nSome are more straightforward than others:",{"type":15,"tag":84,"props":85,"children":86},"ul",{},[87,93,98],{"type":15,"tag":88,"props":89,"children":90},"li",{},[91],{"type":25,"value":92},"Planning: to design experiments",{"type":15,"tag":88,"props":94,"children":95},{},[96],{"type":25,"value":97},"Collecting: to collect data, to control instruments, to run simulations",{"type":15,"tag":88,"props":99,"children":100},{},[101],{"type":25,"value":102},"Analysing: to analyse data, to generate models",{"type":15,"tag":16,"props":104,"children":105},{},[],{"type":15,"tag":30,"props":107,"children":109},{"id":108},"reuse-reproduce",[110],{"type":25,"value":111},"Reuse & reproduce",{"type":15,"tag":37,"props":113,"children":114},{},[115],{"type":25,"value":116},"Both reusability and reproducibility are important values in research software:",{"type":15,"tag":84,"props":118,"children":119},{},[120,131],{"type":15,"tag":88,"props":121,"children":122},{},[123,129],{"type":15,"tag":124,"props":125,"children":126},"strong",{},[127],{"type":25,"value":128},"Reproducibility",{"type":25,"value":130}," is an integral part of the research process",{"type":15,"tag":88,"props":132,"children":133},{},[134,136,141],{"type":25,"value":135},"Software ",{"type":15,"tag":124,"props":137,"children":138},{},[139],{"type":25,"value":140},"reusability",{"type":25,"value":142}," allows building upon existing software",{"type":15,"tag":37,"props":144,"children":145},{},[146,148,153,155,160,161,166,168,173],{"type":25,"value":147},"For both, we need to be able to ",{"type":15,"tag":124,"props":149,"children":150},{},[151],{"type":25,"value":152},"find",{"type":25,"value":154},", ",{"type":15,"tag":124,"props":156,"children":157},{},[158],{"type":25,"value":159},"access",{"type":25,"value":154},{"type":15,"tag":124,"props":162,"children":163},{},[164],{"type":25,"value":165},"use",{"type":25,"value":167},", and ",{"type":15,"tag":124,"props":169,"children":170},{},[171],{"type":25,"value":172},"understand",{"type":25,"value":174}," software.",{"type":15,"tag":37,"props":176,"children":177},{},[178],{"type":25,"value":179},"Note:\nReproducibility of research allows validation of its findings, and is therefore vital in building a solid foundation for scientific progress.\nWe can only truly build upon existing research if we can reproduce its results.",{"type":15,"tag":37,"props":181,"children":182},{},[183],{"type":25,"value":184},"When software has been used in research, this has enormous potential to facilitate the research reproducibility.\nHowever, it also comes with its own particular challenges: software reproducibility is not always straightforward.",{"type":15,"tag":37,"props":186,"children":187},{},[188],{"type":25,"value":189},"An additional feature of software, is that it may be a product on its own, and can be reused by others.\nThis is a great opportunity to build on our collective knowledge and tools, and to avoid reinventing the wheel.",{"type":15,"tag":37,"props":191,"children":192},{},[193],{"type":25,"value":194},"Ensuring that the software is findable, accessible, usable and understandable is key to both reproducibility and reusability.",{"type":15,"tag":16,"props":196,"children":197},{},[],{"type":15,"tag":37,"props":199,"children":200},{},[201],{"type":15,"tag":41,"props":202,"children":205},{"alt":203,"src":204},"Software Needs Maintenance","media/maintenance.png",[],{"type":15,"tag":37,"props":207,"children":208},{},[209],{"type":25,"value":210},"Note:\nSoftware and code have some unique features.\nOne particular feature is that they depend on other software, and on the environment in which they are run.\nThis means that it requires maintenance and updates to keep it functional, as the environments around it change.\nThis is called software sustainability.",{"type":15,"tag":16,"props":212,"children":213},{},[],{"type":15,"tag":30,"props":215,"children":217},{"id":216},"overview",[218],{"type":25,"value":219},"Overview",{"type":15,"tag":84,"props":221,"children":222},{},[223,228,233,238],{"type":15,"tag":88,"props":224,"children":225},{},[226],{"type":25,"value":227},"Software Management Plan: what and why?",{"type":15,"tag":88,"props":229,"children":230},{},[231],{"type":25,"value":232},"Aspects of software management",{"type":15,"tag":88,"props":234,"children":235},{},[236],{"type":25,"value":237},"Different needs for different software",{"type":15,"tag":88,"props":239,"children":240},{},[241],{"type":25,"value":242},"SMP template examples",{"type":15,"tag":37,"props":244,"children":245},{},[246],{"type":25,"value":247},"Note:\nThis presentation will introduce you to the concept of software management plans, as a first step towards better software stewardship and sustainability.\nWe will look at different aspects of good software managements, as well as different needs for different types of software.\nFinally, we will take a look at some concrete examples of software management plans.",{"type":15,"tag":16,"props":249,"children":250},{},[],{"type":15,"tag":252,"props":253,"children":255},"h3",{"id":254},"software-management-plan-smp",[256],{"type":25,"value":257},"Software Management Plan (SMP)",{"type":15,"tag":84,"props":259,"children":260},{},[261,266,304],{"type":15,"tag":88,"props":262,"children":263},{},[264],{"type":25,"value":265},"Building on the success of Data Management Plans (DMPs)",{"type":15,"tag":88,"props":267,"children":268},{},[269,271],{"type":25,"value":270},"A document detailing how research software will be managed\n",{"type":15,"tag":84,"props":272,"children":273},{},[274,279,284,289,294,299],{"type":15,"tag":88,"props":275,"children":276},{},[277],{"type":25,"value":278},"What does it do?",{"type":15,"tag":88,"props":280,"children":281},{},[282],{"type":25,"value":283},"Who is it for?",{"type":15,"tag":88,"props":285,"children":286},{},[287],{"type":25,"value":288},"What resources does it need?",{"type":15,"tag":88,"props":290,"children":291},{},[292],{"type":25,"value":293},"Who is responsible?",{"type":15,"tag":88,"props":295,"children":296},{},[297],{"type":25,"value":298},"How long will it be available?",{"type":15,"tag":88,"props":300,"children":301},{},[302],{"type":25,"value":303},"...",{"type":15,"tag":88,"props":305,"children":306},{},[307],{"type":25,"value":308},"Can be part of a project proposal, or generated in the early phases",{"type":15,"tag":37,"props":310,"children":311},{},[312],{"type":25,"value":313},"Note:\nSoftware management plans (SMPs) are inspired by the earlier adopted data management plans.\nIn these documents, often created at or before the start of a project, plans and explicit decisions are made about various aspects around the management of these digital objects.\nThey are increasingly required by funders and institutions.",{"type":15,"tag":37,"props":315,"children":316},{},[317],{"type":25,"value":318},"In an SMP it is explicitly stated what the software aims to do, who its target audience is, and what resources it is expected to need.\nIt also addresses the intended lifespan, and allocates responsibility: who makes releases? Who maintains the software at the end of the project, and if so for how long?",{"type":15,"tag":16,"props":320,"children":321},{},[],{"type":15,"tag":30,"props":323,"children":325},{"id":324},"why-use-an-smp",[326],{"type":25,"value":327},"Why use an SMP?",{"type":15,"tag":84,"props":329,"children":330},{},[331,336,341,346,351],{"type":15,"tag":88,"props":332,"children":333},{},[334],{"type":25,"value":335},"Make technical choices explicit",{"type":15,"tag":88,"props":337,"children":338},{},[339],{"type":25,"value":340},"Plan for necessary resources",{"type":15,"tag":88,"props":342,"children":343},{},[344],{"type":25,"value":345},"Assess whether new software is really needed",{"type":15,"tag":88,"props":347,"children":348},{},[349],{"type":25,"value":350},"Clarity early on helps to avoid problems later",{"type":15,"tag":88,"props":352,"children":353},{},[354],{"type":25,"value":303},{"type":15,"tag":37,"props":356,"children":357},{},[358],{"type":25,"value":359},"Note:\nWith an SMP, you make explicit plans and decisions in an early stage.\nThe SMP provides the team with structured, relevant questions early on, with the aim to maximize the accessibility, reusability, and impact of the software in question.\nThis supports good software management practices, and it makes sure they are known to the researchers involved.",{"type":15,"tag":37,"props":361,"children":362},{},[363],{"type":25,"value":364},"More specifically, in an SMP you:",{"type":15,"tag":84,"props":366,"children":367},{},[368,373,378],{"type":15,"tag":88,"props":369,"children":370},{},[371],{"type":25,"value":372},"Make explicit technical choices. For example, what programming language will be used? What operating system will be supported?",{"type":15,"tag":88,"props":374,"children":375},{},[376],{"type":25,"value":377},"Plan for necessary resources; be they financial, human, infrastructure or other.",{"type":15,"tag":88,"props":379,"children":380},{},[381],{"type":25,"value":382},"Assess whether new software is really needed; explore whether existing software can be reused, and to what extent;",{"type":15,"tag":37,"props":384,"children":385},{},[386],{"type":25,"value":387},"These are issues that arise during software development anyway, but all too often are not explicitly dealt with.\nBy tackling them early, a conscious decision can be made rather than needing to deal with consequences of implicit choices.\nResource planning moreover is vital for the sustainability of the software.\nFinally, the SMP will allow later verification of plans in a publicly funded project.",{"type":15,"tag":16,"props":389,"children":390},{},[],{"type":15,"tag":70,"props":392,"children":393},{},[394,399],{"type":15,"tag":41,"props":395,"children":398},{"src":396,"width":397},"media/smpguide.png","50%",[],{"type":15,"tag":37,"props":400,"children":401},{},[402],{"type":15,"tag":403,"props":404,"children":408},"a",{"href":405,"rel":406},"https://doi.org/10.5281/zenodo.7038280",[407],"nofollow",[409],{"type":25,"value":410},"doi:10.5281/zenodo.7038280",{"type":15,"tag":37,"props":412,"children":413},{},[414],{"type":25,"value":415},"Note:\nTo get started on creating a Software Management Plan, this practical guide has been created by NWO and the Netherlands eScience Center.\nIts first version was released in August of 2022, but it has since been, and will continue to be, updated.\nAll past versions and the latest release are available on Zenodo via this DOI.",{"type":15,"tag":16,"props":417,"children":418},{},[],{"type":15,"tag":70,"props":420,"children":421},{},[422],{"type":15,"tag":41,"props":423,"children":425},{"src":424,"width":76},"media/groupedrequirements.png",[],{"type":15,"tag":37,"props":427,"children":428},{},[429],{"type":25,"value":430},"Note:\nIn the practical guide, the core requirements for an SMP are listed, and grouped into four categories.",{"type":15,"tag":37,"props":432,"children":433},{},[434,436,442],{"type":25,"value":435},"Focusing on the ",{"type":15,"tag":437,"props":438,"children":439},"em",{},[440],{"type":25,"value":441},"engineering",{"type":25,"value":443},", the guide asks about version control, packaging, testing, and software quality.",{"type":15,"tag":37,"props":445,"children":446},{},[447,449,454],{"type":25,"value":448},"Focusing on ",{"type":15,"tag":437,"props":450,"children":451},{},[452],{"type":25,"value":453},"documentation",{"type":25,"value":455},", the guide discusses documentation needs for users, developers, and for deployment specifically.",{"type":15,"tag":37,"props":457,"children":458},{},[459,460,465],{"type":25,"value":448},{"type":15,"tag":437,"props":461,"children":462},{},[463],{"type":25,"value":464},"project management",{"type":25,"value":466},", the guide addresses licensing, maintenance, resources, the project repository, and a risk analysis.",{"type":15,"tag":37,"props":468,"children":469},{},[470,472,477],{"type":25,"value":471},"Finally, the guide asks about the ",{"type":15,"tag":437,"props":473,"children":474},{},[475],{"type":25,"value":476},"purpose",{"type":25,"value":478}," of the software.",{"type":15,"tag":16,"props":480,"children":481},{},[],{"type":15,"tag":70,"props":483,"children":484},{},[485],{"type":15,"tag":41,"props":486,"children":489},{"src":487,"width":488},"media/purpose.png","40%",[],{"type":15,"tag":84,"props":491,"children":492},{},[493,498,503],{"type":15,"tag":88,"props":494,"children":495},{},[496],{"type":25,"value":497},"What problem does it solve?",{"type":15,"tag":88,"props":499,"children":500},{},[501],{"type":25,"value":502},"Who is the intended audience?",{"type":15,"tag":88,"props":504,"children":505},{},[506],{"type":25,"value":507},"What are its advantages and limitations?",{"type":15,"tag":37,"props":509,"children":510},{},[511],{"type":25,"value":512},"Note:\nThe software's purpose is a central question in the SMP.",{"type":15,"tag":37,"props":514,"children":515},{},[516],{"type":25,"value":517},"It is important to be clear about the problem it addresses, and who the software is aimed at.\nAddressing the limitations of the software, as well as the advantages it will provide, help determine its scope.\nThis will help the developers focus on the specific needs of the software.",{"type":15,"tag":16,"props":519,"children":520},{},[],{"type":15,"tag":70,"props":522,"children":523},{},[524],{"type":15,"tag":41,"props":525,"children":528},{"src":526,"width":527},"media/engineering.png","30%",[],{"type":15,"tag":84,"props":530,"children":531},{},[532,537,542,547],{"type":15,"tag":88,"props":533,"children":534},{},[535],{"type":25,"value":536},"What version control will you use?",{"type":15,"tag":88,"props":538,"children":539},{},[540],{"type":25,"value":541},"How will you test the software?",{"type":15,"tag":88,"props":543,"children":544},{},[545],{"type":25,"value":546},"How will the project be organized or packaged?",{"type":15,"tag":88,"props":548,"children":549},{},[550],{"type":25,"value":551},"How will you manage code quality?",{"type":15,"tag":37,"props":553,"children":554},{},[555],{"type":25,"value":556},"Note:\nOn the engineering focus, several specific areas are addressed.",{"type":15,"tag":37,"props":558,"children":559},{},[560,565],{"type":15,"tag":437,"props":561,"children":562},{},[563],{"type":25,"value":564},"Version control",{"type":25,"value":566}," has a myriad of benefits: it allows keeping track of history and provenance, can support experimentation and collaboration, and is crucial for the identification of specific versions of the software.",{"type":15,"tag":37,"props":568,"children":569},{},[570,575],{"type":15,"tag":437,"props":571,"children":572},{},[573],{"type":25,"value":574},"Testing",{"type":25,"value":576}," ensures that software continues to work as intended.\nThere are many different approaches to this: units of code can be tested in unit tests; entire workflows can be verified in integration tests; acceptance tests can be created to ensure specific requirements are met; regression testing can be done to ensure new changes do not break existing functionality; and so on.\nDeciding whether and if so what testing will be implemented is an important element of the SMP.",{"type":15,"tag":37,"props":578,"children":579},{},[580,585],{"type":15,"tag":437,"props":581,"children":582},{},[583],{"type":25,"value":584},"Packaging",{"type":25,"value":586}," is important for the distribution of software.\nThe format in which the software will be distributed is an important decision that should be made early on.",{"type":15,"tag":37,"props":588,"children":589},{},[590,595],{"type":15,"tag":437,"props":591,"children":592},{},[593],{"type":25,"value":594},"Code quality",{"type":25,"value":596}," should be addressed: what standards will be adhered to, and how will they be measured and supported?\nThere are many tools that can help with this, and it is important to choose them early on to maintain consistent code quality throughout the project.",{"type":15,"tag":16,"props":598,"children":599},{},[],{"type":15,"tag":70,"props":601,"children":602},{},[603],{"type":15,"tag":41,"props":604,"children":606},{"src":605,"width":527},"media/documentation.png",[],{"type":15,"tag":84,"props":608,"children":609},{},[610,628],{"type":15,"tag":88,"props":611,"children":612},{},[613,615],{"type":25,"value":614},"What documentation will you provide\n",{"type":15,"tag":84,"props":616,"children":617},{},[618,623],{"type":15,"tag":88,"props":619,"children":620},{},[621],{"type":25,"value":622},"for users?",{"type":15,"tag":88,"props":624,"children":625},{},[626],{"type":25,"value":627},"for developers?",{"type":15,"tag":88,"props":629,"children":630},{},[631],{"type":25,"value":632},"How will you manage system requirements (e.g. dependencies)?",{"type":15,"tag":37,"props":634,"children":635},{},[636],{"type":25,"value":637},"Note:\nDocumentation is an important component of software, and should be tailored to different audiences.",{"type":15,"tag":37,"props":639,"children":640},{},[641,643,648],{"type":25,"value":642},"In ",{"type":15,"tag":437,"props":644,"children":645},{},[646],{"type":25,"value":647},"user documentation",{"type":25,"value":649},", the software's function should be explained, and instructions on how to use it should be provided.",{"type":15,"tag":37,"props":651,"children":652},{},[653,654,659],{"type":25,"value":642},{"type":15,"tag":437,"props":655,"children":656},{},[657],{"type":25,"value":658},"developer documentation",{"type":25,"value":660},", instructions on how to modify the software, and how to contribute to the project should be provided.",{"type":15,"tag":37,"props":662,"children":663},{},[664,669],{"type":15,"tag":437,"props":665,"children":666},{},[667],{"type":25,"value":668},"Deployment documentation",{"type":25,"value":670}," explains any system requirements (such as dependencies) for deploying the software, and installation and testing instructions.",{"type":15,"tag":16,"props":672,"children":673},{},[],{"type":15,"tag":70,"props":675,"children":676},{},[677],{"type":15,"tag":41,"props":678,"children":680},{"src":679,"width":527},"media/projectmanagement.png",[],{"type":15,"tag":84,"props":682,"children":683},{},[684,689,694,699,704,717],{"type":15,"tag":88,"props":685,"children":686},{},[687],{"type":25,"value":688},"What license will you use?",{"type":15,"tag":88,"props":690,"children":691},{},[692],{"type":25,"value":693},"How will the software be maintained? For how long?",{"type":15,"tag":88,"props":695,"children":696},{},[697],{"type":25,"value":698},"How should the software be cited?",{"type":15,"tag":88,"props":700,"children":701},{},[702],{"type":25,"value":703},"What repository(ies) will you use?",{"type":15,"tag":88,"props":705,"children":706},{},[707,709],{"type":25,"value":708},"What resources will you need?\n",{"type":15,"tag":84,"props":710,"children":711},{},[712],{"type":15,"tag":88,"props":713,"children":714},{},[715],{"type":25,"value":716},"e.g. infrastructure, personnel, training, hardware...",{"type":15,"tag":88,"props":718,"children":719},{},[720],{"type":25,"value":721},"What risks and challenges do you foresee?",{"type":15,"tag":37,"props":723,"children":724},{},[725],{"type":25,"value":726},"Note:\nThe project management focus is broad, and addresses various conditions for the software's long-term sustainability and re-use.",{"type":15,"tag":37,"props":728,"children":729},{},[730,732,737],{"type":25,"value":731},"Any reusable software should have an appropriate ",{"type":15,"tag":437,"props":733,"children":734},{},[735],{"type":25,"value":736},"license",{"type":25,"value":738},", which is an important early decision.",{"type":15,"tag":37,"props":740,"children":741},{},[742,744,749],{"type":25,"value":743},"The ",{"type":15,"tag":437,"props":745,"children":746},{},[747],{"type":25,"value":748},"maintenance",{"type":25,"value":750}," of the software should be addressed in an SMP: who will maintain it, and for how long?\nHow and when will it be retired?",{"type":15,"tag":37,"props":752,"children":753},{},[754,756,761],{"type":25,"value":755},"Plan the ",{"type":15,"tag":437,"props":757,"children":758},{},[759],{"type":25,"value":760},"citation",{"type":25,"value":762}," of the software: how will you collect information about its use? What DOI will you use for this?",{"type":15,"tag":37,"props":764,"children":765},{},[766,767,772],{"type":25,"value":743},{"type":15,"tag":437,"props":768,"children":769},{},[770],{"type":25,"value":771},"repository",{"type":25,"value":773}," where the software will be deposited is preferably publicly accessible, and should allow users to obtain a functional copy of the software.",{"type":15,"tag":37,"props":775,"children":776},{},[777,779,784],{"type":25,"value":778},"What ",{"type":15,"tag":437,"props":780,"children":781},{},[782],{"type":25,"value":783},"resources",{"type":25,"value":785}," — human, infrastructure, financial - will be needed, and when?",{"type":15,"tag":37,"props":787,"children":788},{},[789,791,796],{"type":25,"value":790},"Finally, a ",{"type":15,"tag":437,"props":792,"children":793},{},[794],{"type":25,"value":795},"risk analysis",{"type":25,"value":797}," should be performed: for instance, are there privacy or security concerns? Is there potential for vendor lock, or other considerations for future reliability and reuse?",{"type":15,"tag":16,"props":799,"children":800},{},[],{"type":15,"tag":30,"props":802,"children":804},{"id":803},"smp-template",[805],{"type":25,"value":806},"SMP template",{"type":15,"tag":84,"props":808,"children":809},{},[810,815,843],{"type":15,"tag":88,"props":811,"children":812},{},[813],{"type":25,"value":814},"Should be provided by the institution",{"type":15,"tag":88,"props":816,"children":817},{},[818,820],{"type":25,"value":819},"Include guidance:\n",{"type":15,"tag":84,"props":821,"children":822},{},[823,828,833,838],{"type":15,"tag":88,"props":824,"children":825},{},[826],{"type":25,"value":827},"Instructions on how to fill it out",{"type":15,"tag":88,"props":829,"children":830},{},[831],{"type":25,"value":832},"Resources for information and support",{"type":15,"tag":88,"props":834,"children":835},{},[836],{"type":25,"value":837},"Institution-specific regulations",{"type":15,"tag":88,"props":839,"children":840},{},[841],{"type":25,"value":842},"Institution-specific resources available",{"type":15,"tag":88,"props":844,"children":845},{},[846],{"type":25,"value":847},"Include an assessment rubric (e.g. with (un)acceptable answers)",{"type":15,"tag":37,"props":849,"children":850},{},[851],{"type":25,"value":852},"Note:\nThe Software Management Plan template is a duty of the institution.\nA good SMP includes guidance on how to fill it out, including institution-specific regulations and resources.",{"type":15,"tag":37,"props":854,"children":855},{},[856],{"type":25,"value":857},"An assessment rubric should accompany the template, indicating per question or focus what conditions need to be met, and which answers are (un)acceptable.",{"type":15,"tag":16,"props":859,"children":860},{},[],{"type":15,"tag":30,"props":862,"children":864},{"id":863},"not-all-software-is-equal",[865],{"type":25,"value":866},"Not all software is equal",{"type":15,"tag":37,"props":868,"children":869},{},[870],{"type":15,"tag":41,"props":871,"children":873},{"alt":7,"src":872},"media/softwarespectrum.png",[],{"type":15,"tag":37,"props":875,"children":876},{},[877],{"type":25,"value":878},"Note:\nIt is important to realize when making an SMP, that research software comes in many shapes and sizes.",{"type":15,"tag":37,"props":880,"children":881},{},[882],{"type":25,"value":883},"An ad-hoc R script written by a PhD student to analyse data from a specific machine, is research software.",{"type":15,"tag":37,"props":885,"children":886},{},[887],{"type":25,"value":888},"It can also be a multinational collaboration to develop a tool that is used by thousands of researchers worldwide.",{"type":15,"tag":37,"props":890,"children":891},{},[892],{"type":25,"value":893},"Different software has different needs, but there are common principles in managing them and ensuring their sustainability.",{"type":15,"tag":37,"props":895,"children":896},{},[897],{"type":25,"value":898},"The diversity of research software does mean that not all requirements apply to every type of software.\nTo address this, we can subset the core requirements to create different SMP templates tailored to software with different management needs.",{"type":15,"tag":37,"props":900,"children":901},{},[902],{"type":25,"value":903},"The SMP Guide distinguishes software with low, medium, and high management needs.",{"type":15,"tag":16,"props":905,"children":906},{},[],{"type":15,"tag":30,"props":908,"children":910},{"id":909},"smp-level-low",[911],{"type":25,"value":912},"SMP level: low",{"type":15,"tag":84,"props":914,"children":915},{},[916,921,926],{"type":15,"tag":88,"props":917,"children":918},{},[919],{"type":25,"value":920},"Single purpose scripts",{"type":15,"tag":88,"props":922,"children":923},{},[924],{"type":25,"value":925},"Developer is the primary user",{"type":15,"tag":88,"props":927,"children":928},{},[929,931],{"type":25,"value":930},"Performs limited function:\n",{"type":15,"tag":84,"props":932,"children":933},{},[934,939],{"type":15,"tag":88,"props":935,"children":936},{},[937],{"type":25,"value":938},"Analyses a single experiment or dataset",{"type":15,"tag":88,"props":940,"children":941},{},[942],{"type":25,"value":943},"Automates a routine task",{"type":15,"tag":37,"props":945,"children":946},{},[947,949,953],{"type":25,"value":948},"Note:\nSoftware with low management requirements is defined by its limited function: it performs a single analysis or automates a routine task.\nIts ",{"type":15,"tag":124,"props":950,"children":951},{},[952],{"type":25,"value":476},{"type":25,"value":954}," is typically limited to a specific experiment, and the developer is the primary user.",{"type":15,"tag":37,"props":956,"children":957},{},[958,959,964],{"type":25,"value":743},{"type":15,"tag":124,"props":960,"children":961},{},[962],{"type":25,"value":963},"reliability",{"type":25,"value":965}," of this type of software is usually easy to assess: the output can be visually inspected, or tested with a limited set of inputs.",{"type":15,"tag":37,"props":967,"children":968},{},[969,970,974],{"type":25,"value":743},{"type":15,"tag":124,"props":971,"children":972},{},[973],{"type":25,"value":748},{"type":25,"value":975}," of this type of software is usually limited to the duration of the project in which it was developed.\nIt is not intended to be used by others, and therefore its influence beyond the scope for which it was intended is likely small.",{"type":15,"tag":37,"props":977,"children":978},{},[979],{"type":25,"value":980},"Best practices during development (e.g. version control), as well as measures to enable its reuse (documentation, versioning, archiving) are appropriate and recommended.\nThey are however not requirements, nor is long term maintenance planning necessary.",{"type":15,"tag":16,"props":982,"children":983},{},[],{"type":15,"tag":30,"props":985,"children":987},{"id":986},"smp-level-medium",[988],{"type":25,"value":989},"SMP level: medium",{"type":15,"tag":84,"props":991,"children":992},{},[993,998,1003],{"type":15,"tag":88,"props":994,"children":995},{},[996],{"type":25,"value":997},"Primary or secondary output of a research project",{"type":15,"tag":88,"props":999,"children":1000},{},[1001],{"type":25,"value":1002},"Adds a library or module to existing tool, or even works standalone",{"type":15,"tag":88,"props":1004,"children":1005},{},[1006,1008],{"type":25,"value":1007},"Unique functionality that will be reused\n",{"type":15,"tag":84,"props":1009,"children":1010},{},[1011,1016],{"type":15,"tag":88,"props":1012,"children":1013},{},[1014],{"type":25,"value":1015},"Implements a new or higher performance algorithm",{"type":15,"tag":88,"props":1017,"children":1018},{},[1019],{"type":25,"value":1020},"Simulation software implementing a new model or method",{"type":15,"tag":37,"props":1022,"children":1023},{},[1024,1026,1031],{"type":25,"value":1025},"Note:\nSoftware requiring ",{"type":15,"tag":124,"props":1027,"children":1028},{},[1029],{"type":25,"value":1030},"medium",{"type":25,"value":1032}," management, is defined as software that is the primary or secondary output of a research project.",{"type":15,"tag":37,"props":1034,"children":1035},{},[1036,1038,1042],{"type":25,"value":1037},"Its original ",{"type":15,"tag":124,"props":1039,"children":1040},{},[1041],{"type":25,"value":476},{"type":25,"value":1043}," is typically limited to a single research project, but incorporates functionality that may be of use to others, either as a standalone tool, library, or module in an existing tool.",{"type":15,"tag":37,"props":1045,"children":1046},{},[1047,1048,1052],{"type":25,"value":743},{"type":15,"tag":124,"props":1049,"children":1050},{},[1051],{"type":25,"value":963},{"type":25,"value":1053}," is more difficult to assess due to its increased complexity, but it is also also more important: this software likely has an effect on other research outside of the original project.\nGood software practices such as version control and user/technical documentation are therefore essential here.\nMore advanced requirements, such as code auditing, automated testing, software packaging, and distribution also need to be considered.",{"type":15,"tag":37,"props":1055,"children":1056},{},[1057,1059,1063],{"type":25,"value":1058},"This software's longer term ",{"type":15,"tag":124,"props":1060,"children":1061},{},[1062],{"type":25,"value":748},{"type":25,"value":1064}," is relevant as it will have a lifespan longer than the project in which it was developed.\nSoftware management planning should include providing information on archiving and citation as well as strategies for post-project maintenance and support.",{"type":15,"tag":16,"props":1066,"children":1067},{},[],{"type":15,"tag":30,"props":1069,"children":1071},{"id":1070},"smp-level-high",[1072],{"type":25,"value":1073},"SMP level: high",{"type":15,"tag":84,"props":1075,"children":1076},{},[1077,1082,1087,1092],{"type":15,"tag":88,"props":1078,"children":1079},{},[1080],{"type":25,"value":1081},"Mission critical software",{"type":15,"tag":88,"props":1083,"children":1084},{},[1085],{"type":25,"value":1086},"High standards required for reliability",{"type":15,"tag":88,"props":1088,"children":1089},{},[1090],{"type":25,"value":1091},"Absence or replacement of the software would threaten research",{"type":15,"tag":88,"props":1093,"children":1094},{},[1095,1097],{"type":25,"value":1096},"Software that is continually in use:\n",{"type":15,"tag":84,"props":1098,"children":1099},{},[1100,1105],{"type":15,"tag":88,"props":1101,"children":1102},{},[1103],{"type":25,"value":1104},"Preprocessing data coming from a telescope",{"type":15,"tag":88,"props":1106,"children":1107},{},[1108],{"type":25,"value":1109},"Controlling a medical device",{"type":15,"tag":37,"props":1111,"children":1112},{},[1113,1115,1120],{"type":25,"value":1114},"Note:\n",{"type":15,"tag":124,"props":1116,"children":1117},{},[1118],{"type":25,"value":1119},"High",{"type":25,"value":1121}," management software is defined as mission critical software.",{"type":15,"tag":37,"props":1123,"children":1124},{},[1125,1127,1131],{"type":25,"value":1126},"Its ",{"type":15,"tag":124,"props":1128,"children":1129},{},[1130],{"type":25,"value":476},{"type":25,"value":1132}," is to perform a critical function, and its absence or replacement would threaten the research.",{"type":15,"tag":37,"props":1134,"children":1135},{},[1136,1137,1141],{"type":25,"value":743},{"type":15,"tag":124,"props":1138,"children":1139},{},[1140],{"type":25,"value":963},{"type":25,"value":1142}," of this software is of utmost importance, and all possible actions should be taken to ensure it.",{"type":15,"tag":37,"props":1144,"children":1145},{},[1146,1147,1151],{"type":25,"value":1126},{"type":15,"tag":124,"props":1148,"children":1149},{},[1150],{"type":25,"value":748},{"type":25,"value":1152}," is not limited to the duration of the project in which it was developed, but should be maintained as long as it is in use.\nThus, maintenance strategies, including funding and/or community development plans, should be in place.",{"type":15,"tag":16,"props":1154,"children":1155},{},[],{"type":15,"tag":30,"props":1157,"children":1159},{"id":1158},"making-that-call",[1160],{"type":25,"value":1161},"Making that call",{"type":15,"tag":84,"props":1163,"children":1164},{},[1165,1175,1185],{"type":15,"tag":88,"props":1166,"children":1167},{},[1168,1173],{"type":15,"tag":124,"props":1169,"children":1170},{},[1171],{"type":25,"value":1172},"Purpose",{"type":25,"value":1174},": what is the reason or expected end-use for the software?",{"type":15,"tag":88,"props":1176,"children":1177},{},[1178,1183],{"type":15,"tag":124,"props":1179,"children":1180},{},[1181],{"type":25,"value":1182},"Reliability",{"type":25,"value":1184},": what is the effect of software failure and/or non-maintenance?",{"type":15,"tag":88,"props":1186,"children":1187},{},[1188,1193],{"type":15,"tag":124,"props":1189,"children":1190},{},[1191],{"type":25,"value":1192},"Maintenance",{"type":25,"value":1194},": what is the long-term effort needed to maintain the software?",{"type":15,"tag":37,"props":1196,"children":1197},{},[1198,1200],{"type":25,"value":1199},"Check the Practical Guide: ",{"type":15,"tag":403,"props":1201,"children":1203},{"href":405,"rel":1202},[407],[1204],{"type":25,"value":410},{"type":15,"tag":37,"props":1206,"children":1207},{},[1208],{"type":25,"value":1209},"Note:\nDeciding what level of management, and therefore which SMP template, is appropriate for a specific software project, is not always straightforward.\nThe practical guide provides some guidance on how to make this decision.\nAddressing what purpose the software serves, how reliable it needs to be, and what efforts will be required for its longer term maintenance, will help determine the appropriate level of management.",{"type":15,"tag":16,"props":1211,"children":1212},{},[],{"type":15,"tag":70,"props":1214,"children":1215},{},[1216],{"type":15,"tag":41,"props":1217,"children":1219},{"src":1218,"width":76},"media/threelevels.png",[],{"type":15,"tag":37,"props":1221,"children":1222},{},[1223],{"type":25,"value":1224},"Note:\nWith a specific level of management in mind, the core requirements that are relevant for this software's management can be determined.\nThe practical guide provides a clear overview of this.",{"type":15,"tag":16,"props":1226,"children":1227},{},[],{"type":15,"tag":30,"props":1229,"children":1231},{"id":1230},"take-home-messages",[1232],{"type":25,"value":1233},"Take home messages",{"type":15,"tag":84,"props":1235,"children":1236},{},[1237,1242,1247,1252],{"type":15,"tag":88,"props":1238,"children":1239},{},[1240],{"type":25,"value":1241},"Software is found in all stages of the research cycle",{"type":15,"tag":88,"props":1243,"children":1244},{},[1245],{"type":25,"value":1246},"Research software comes in many shapes and sizes",{"type":15,"tag":88,"props":1248,"children":1249},{},[1250],{"type":25,"value":1251},"Software stewardship starts with a good plan",{"type":15,"tag":88,"props":1253,"children":1254},{},[1255],{"type":25,"value":1256},"Good software management leads to better science",{"type":15,"tag":37,"props":1258,"children":1259},{},[1260],{"type":25,"value":1261},"Note:\nSoftware is found in all stages of the research cycle, and is used for many different purposes.\nIt comes in many shapes and sizes, and has different needs.\nSoftware stewardship starts with a good plan, and is an important scientific step: good software management leads to better science.",{"type":15,"tag":16,"props":1263,"children":1264},{},[],{"type":15,"tag":37,"props":1266,"children":1267},{},[1268],{"type":15,"tag":403,"props":1269,"children":1272},{"href":1270,"rel":1271},"http://www.esciencecenter.nl",[407],[1273],{"type":25,"value":1274},"www.esciencecenter.nl",{"type":15,"tag":37,"props":1276,"children":1277},{},[1278],{"type":15,"tag":403,"props":1279,"children":1281},{"href":1280},"mailto:info@esciencecenter.nl",[1282],{"type":25,"value":1283},"info@esciencecenter.nl",{"type":15,"tag":37,"props":1285,"children":1286},{},[1287],{"type":25,"value":1288},"020 - 460 47 70",{"title":7,"searchDepth":1290,"depth":1290,"links":1291},2,[1292,1293,1294,1295,1299,1300,1301,1302,1303,1304,1305,1306],{"id":32,"depth":1290,"text":35},{"id":65,"depth":1290,"text":68},{"id":108,"depth":1290,"text":111},{"id":216,"depth":1290,"text":219,"children":1296},[1297],{"id":254,"depth":1298,"text":257},3,{"id":324,"depth":1290,"text":327},{"id":803,"depth":1290,"text":806},{"id":863,"depth":1290,"text":866},{"id":909,"depth":1290,"text":912},{"id":986,"depth":1290,"text":989},{"id":1070,"depth":1290,"text":1073},{"id":1158,"depth":1290,"text":1161},{"id":1230,"depth":1290,"text":1233},"markdown","local_fs:modules:smp:slides-smp.pmd","local_fs","modules/smp/slides-smp.pmd","pmd",[1313,1348],{"_path":1314,"_dir":1315,"_draft":6,"_partial":6,"_locale":7,"title":1316,"description":7,"body":1317,"_type":1307,"_id":1345,"_source":1309,"_file":1346,"_extension":1347},"/main/about","main","About",{"type":12,"children":1318,"toc":1341},[1319,1325,1330,1336],{"type":15,"tag":30,"props":1320,"children":1322},{"id":1321},"about-the-research-software-support",[1323],{"type":25,"value":1324},"About the Research Software Support",{"type":15,"tag":37,"props":1326,"children":1327},{},[1328],{"type":25,"value":1329},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":30,"props":1331,"children":1333},{"id":1332},"target-audience",[1334],{"type":25,"value":1335},"Target audience",{"type":15,"tag":37,"props":1337,"children":1338},{},[1339],{"type":25,"value":1340},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":1290,"depth":1290,"links":1342},[1343,1344],{"id":1321,"depth":1290,"text":1324},{"id":1332,"depth":1290,"text":1335},"local_fs:main:about.md","main/about.md","md",{"_path":1349,"_dir":1315,"_draft":6,"_partial":6,"_locale":7,"title":1350,"description":7,"body":1351,"_type":1307,"_id":1473,"_source":1309,"_file":1474,"_extension":1347},"/main/contribute","Contribute",{"type":12,"children":1352,"toc":1468},[1353,1359,1364,1370,1375],{"type":15,"tag":30,"props":1354,"children":1356},{"id":1355},"contributing-to-the-research-software-support",[1357],{"type":25,"value":1358},"Contributing to the Research Software Support",{"type":15,"tag":37,"props":1360,"children":1361},{},[1362],{"type":25,"value":1363},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":252,"props":1365,"children":1367},{"id":1366},"what-can-i-do",[1368],{"type":25,"value":1369},"What can I do?",{"type":15,"tag":37,"props":1371,"children":1372},{},[1373],{"type":25,"value":1374},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":84,"props":1376,"children":1377},{},[1378,1392,1433,1456],{"type":15,"tag":88,"props":1379,"children":1380},{},[1381,1383,1390],{"type":25,"value":1382},"Contribute to the content discussion in the ",{"type":15,"tag":403,"props":1384,"children":1387},{"href":1385,"rel":1386},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[407],[1388],{"type":25,"value":1389},"chapter issues",{"type":25,"value":1391},", e.g. by listing good resources for information.",{"type":15,"tag":88,"props":1393,"children":1394},{},[1395,1401,1403],{"type":15,"tag":403,"props":1396,"children":1398},{"href":1397},"#elements-of-a-module",[1399],{"type":25,"value":1400},"Author a lesson",{"type":25,"value":1402},", e.g. by:\n",{"type":15,"tag":84,"props":1404,"children":1405},{},[1406,1415,1424],{"type":15,"tag":88,"props":1407,"children":1408},{},[1409],{"type":15,"tag":403,"props":1410,"children":1412},{"href":1411},"#slides",[1413],{"type":25,"value":1414},"Creating slides",{"type":15,"tag":88,"props":1416,"children":1417},{},[1418],{"type":15,"tag":403,"props":1419,"children":1421},{"href":1420},"#exercises",[1422],{"type":25,"value":1423},"Designing an exercise",{"type":15,"tag":88,"props":1425,"children":1426},{},[1427],{"type":15,"tag":403,"props":1428,"children":1430},{"href":1429},"#online-resources",[1431],{"type":25,"value":1432},"Curating online resources",{"type":15,"tag":88,"props":1434,"children":1435},{},[1436,1438,1445,1447,1454],{"type":25,"value":1437},"Review a lesson module; both by looking at ",{"type":15,"tag":403,"props":1439,"children":1442},{"href":1440,"rel":1441},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[407],[1443],{"type":25,"value":1444},"open PRs",{"type":25,"value":1446},", as well as flagging issues for improvement in the ",{"type":15,"tag":403,"props":1448,"children":1451},{"href":1449,"rel":1450},"https://esciencecenter-digital-skills.github.io/research-software-support/",[407],[1452],{"type":25,"value":1453},"existing content",{"type":25,"value":1455},".",{"type":15,"tag":88,"props":1457,"children":1458},{},[1459,1466],{"type":15,"tag":403,"props":1460,"children":1463},{"href":1461,"rel":1462},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[407],[1464],{"type":25,"value":1465},"Provide feedback",{"type":25,"value":1467}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":1290,"depth":1290,"links":1469},[1470],{"id":1355,"depth":1290,"text":1358,"children":1471},[1472],{"id":1366,"depth":1298,"text":1369},"local_fs:main:contribute.md","main/contribute.md",1715800937845] \ No newline at end of file +[{"data":1,"prerenderedAt":1475},["Reactive",2],{"content-query-pOwmACNkLO":3,"content-query-AT44bg6JPw":1312},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":1307,"_id":1308,"_source":1309,"_file":1310,"_extension":1311},"/modules/smp/slides-smp","smp",false,"","Software Management Plans","slides",1,{"type":12,"children":13,"toc":1289},"root",[14,19,26,29,36,45,50,55,60,63,69,78,83,103,106,112,117,143,175,180,185,190,195,198,206,211,214,220,243,248,251,258,309,314,319,322,328,355,360,365,383,388,391,411,416,419,426,431,444,456,467,479,482,490,508,513,518,521,529,552,557,567,577,587,597,600,607,633,638,650,661,671,674,681,722,727,739,751,763,774,786,798,801,807,848,853,858,861,867,874,879,884,889,894,899,904,907,913,944,955,966,976,981,984,990,1021,1033,1044,1054,1065,1068,1074,1110,1122,1133,1143,1153,1156,1162,1195,1205,1210,1213,1220,1225,1228,1234,1257,1262,1265,1275,1284],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h1",{"id":22},"software-management-plans",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":30,"props":31,"children":33},"h2",{"id":32},"mapping-the-via-appia",[34],{"type":25,"value":35},"Mapping the Via Appia",{"type":15,"tag":37,"props":38,"children":39},"p",{},[40],{"type":15,"tag":41,"props":42,"children":44},"img",{"alt":35,"src":43},"media/viaappia.png",[],{"type":15,"tag":37,"props":46,"children":47},{},[48],{"type":25,"value":49},"Note:\nThe Via Appia was the most important road in the Roman Empire, connecting Rome to Brindisi in the south of Italy, spanning a distance of 540km.\nIt was used for military purposes, but also for trade and travel.\nThe Via Appia was built in 312 BC, and used for 600 years, until the fall of the Roman Empire.",{"type":15,"tag":37,"props":51,"children":52},{},[53],{"type":25,"value":54},"The eScience Center participated in a project to map the Via Appia. Using a combination of satellite imagery and ground-based measurements, the project created a 3D model of the road. The model was used to study the road and its surroundings.",{"type":15,"tag":37,"props":56,"children":57},{},[58],{"type":25,"value":59},"In this project, research software was used to process the satellite imagery and the ground-based measurements, and combine them into a 3D model of the Via Appia.",{"type":15,"tag":16,"props":61,"children":62},{},[],{"type":15,"tag":30,"props":64,"children":66},{"id":65},"the-research-life-cycle",[67],{"type":25,"value":68},"The research life cycle",{"type":15,"tag":70,"props":71,"children":72},"center",{},[73],{"type":15,"tag":41,"props":74,"children":77},{"src":75,"width":76},"media/researchcycle.png","60%",[],{"type":15,"tag":37,"props":79,"children":80},{},[81],{"type":25,"value":82},"Note:\nAll over the research life cycle we can find examples of software created for research.\nSome are more straightforward than others:",{"type":15,"tag":84,"props":85,"children":86},"ul",{},[87,93,98],{"type":15,"tag":88,"props":89,"children":90},"li",{},[91],{"type":25,"value":92},"Planning: to design experiments",{"type":15,"tag":88,"props":94,"children":95},{},[96],{"type":25,"value":97},"Collecting: to collect data, to control instruments, to run simulations",{"type":15,"tag":88,"props":99,"children":100},{},[101],{"type":25,"value":102},"Analysing: to analyse data, to generate models",{"type":15,"tag":16,"props":104,"children":105},{},[],{"type":15,"tag":30,"props":107,"children":109},{"id":108},"reuse-reproduce",[110],{"type":25,"value":111},"Reuse & reproduce",{"type":15,"tag":37,"props":113,"children":114},{},[115],{"type":25,"value":116},"Both reusability and reproducibility are important values in research software:",{"type":15,"tag":84,"props":118,"children":119},{},[120,131],{"type":15,"tag":88,"props":121,"children":122},{},[123,129],{"type":15,"tag":124,"props":125,"children":126},"strong",{},[127],{"type":25,"value":128},"Reproducibility",{"type":25,"value":130}," is an integral part of the research process",{"type":15,"tag":88,"props":132,"children":133},{},[134,136,141],{"type":25,"value":135},"Software ",{"type":15,"tag":124,"props":137,"children":138},{},[139],{"type":25,"value":140},"reusability",{"type":25,"value":142}," allows building upon existing software",{"type":15,"tag":37,"props":144,"children":145},{},[146,148,153,155,160,161,166,168,173],{"type":25,"value":147},"For both, we need to be able to ",{"type":15,"tag":124,"props":149,"children":150},{},[151],{"type":25,"value":152},"find",{"type":25,"value":154},", ",{"type":15,"tag":124,"props":156,"children":157},{},[158],{"type":25,"value":159},"access",{"type":25,"value":154},{"type":15,"tag":124,"props":162,"children":163},{},[164],{"type":25,"value":165},"use",{"type":25,"value":167},", and ",{"type":15,"tag":124,"props":169,"children":170},{},[171],{"type":25,"value":172},"understand",{"type":25,"value":174}," software.",{"type":15,"tag":37,"props":176,"children":177},{},[178],{"type":25,"value":179},"Note:\nReproducibility of research allows validation of its findings, and is therefore vital in building a solid foundation for scientific progress.\nWe can only truly build upon existing research if we can reproduce its results.",{"type":15,"tag":37,"props":181,"children":182},{},[183],{"type":25,"value":184},"When software has been used in research, this has enormous potential to facilitate the research reproducibility.\nHowever, it also comes with its own particular challenges: software reproducibility is not always straightforward.",{"type":15,"tag":37,"props":186,"children":187},{},[188],{"type":25,"value":189},"An additional feature of software, is that it may be a product on its own, and can be reused by others.\nThis is a great opportunity to build on our collective knowledge and tools, and to avoid reinventing the wheel.",{"type":15,"tag":37,"props":191,"children":192},{},[193],{"type":25,"value":194},"Ensuring that the software is findable, accessible, usable and understandable is key to both reproducibility and reusability.",{"type":15,"tag":16,"props":196,"children":197},{},[],{"type":15,"tag":37,"props":199,"children":200},{},[201],{"type":15,"tag":41,"props":202,"children":205},{"alt":203,"src":204},"Software Needs Maintenance","media/maintenance.png",[],{"type":15,"tag":37,"props":207,"children":208},{},[209],{"type":25,"value":210},"Note:\nSoftware and code have some unique features.\nOne particular feature is that they depend on other software, and on the environment in which they are run.\nThis means that it requires maintenance and updates to keep it functional, as the environments around it change.\nThis is called software sustainability.",{"type":15,"tag":16,"props":212,"children":213},{},[],{"type":15,"tag":30,"props":215,"children":217},{"id":216},"overview",[218],{"type":25,"value":219},"Overview",{"type":15,"tag":84,"props":221,"children":222},{},[223,228,233,238],{"type":15,"tag":88,"props":224,"children":225},{},[226],{"type":25,"value":227},"Software Management Plan: what and why?",{"type":15,"tag":88,"props":229,"children":230},{},[231],{"type":25,"value":232},"Aspects of software management",{"type":15,"tag":88,"props":234,"children":235},{},[236],{"type":25,"value":237},"Different needs for different software",{"type":15,"tag":88,"props":239,"children":240},{},[241],{"type":25,"value":242},"SMP template examples",{"type":15,"tag":37,"props":244,"children":245},{},[246],{"type":25,"value":247},"Note:\nThis presentation will introduce you to the concept of software management plans, as a first step towards better software stewardship and sustainability.\nWe will look at different aspects of good software managements, as well as different needs for different types of software.\nFinally, we will take a look at some concrete examples of software management plans.",{"type":15,"tag":16,"props":249,"children":250},{},[],{"type":15,"tag":252,"props":253,"children":255},"h3",{"id":254},"software-management-plan-smp",[256],{"type":25,"value":257},"Software Management Plan (SMP)",{"type":15,"tag":84,"props":259,"children":260},{},[261,266,304],{"type":15,"tag":88,"props":262,"children":263},{},[264],{"type":25,"value":265},"Building on the success of Data Management Plans (DMPs)",{"type":15,"tag":88,"props":267,"children":268},{},[269,271],{"type":25,"value":270},"A document detailing how research software will be managed\n",{"type":15,"tag":84,"props":272,"children":273},{},[274,279,284,289,294,299],{"type":15,"tag":88,"props":275,"children":276},{},[277],{"type":25,"value":278},"What does it do?",{"type":15,"tag":88,"props":280,"children":281},{},[282],{"type":25,"value":283},"Who is it for?",{"type":15,"tag":88,"props":285,"children":286},{},[287],{"type":25,"value":288},"What resources does it need?",{"type":15,"tag":88,"props":290,"children":291},{},[292],{"type":25,"value":293},"Who is responsible?",{"type":15,"tag":88,"props":295,"children":296},{},[297],{"type":25,"value":298},"How long will it be available?",{"type":15,"tag":88,"props":300,"children":301},{},[302],{"type":25,"value":303},"...",{"type":15,"tag":88,"props":305,"children":306},{},[307],{"type":25,"value":308},"Can be part of a project proposal, or generated in the early phases",{"type":15,"tag":37,"props":310,"children":311},{},[312],{"type":25,"value":313},"Note:\nSoftware management plans (SMPs) are inspired by the earlier adopted data management plans.\nIn these documents, often created at or before the start of a project, plans and explicit decisions are made about various aspects around the management of these digital objects.\nThey are increasingly required by funders and institutions.",{"type":15,"tag":37,"props":315,"children":316},{},[317],{"type":25,"value":318},"In an SMP it is explicitly stated what the software aims to do, who its target audience is, and what resources it is expected to need.\nIt also addresses the intended lifespan, and allocates responsibility: who makes releases? Who maintains the software at the end of the project, and if so for how long?",{"type":15,"tag":16,"props":320,"children":321},{},[],{"type":15,"tag":30,"props":323,"children":325},{"id":324},"why-use-an-smp",[326],{"type":25,"value":327},"Why use an SMP?",{"type":15,"tag":84,"props":329,"children":330},{},[331,336,341,346,351],{"type":15,"tag":88,"props":332,"children":333},{},[334],{"type":25,"value":335},"Make technical choices explicit",{"type":15,"tag":88,"props":337,"children":338},{},[339],{"type":25,"value":340},"Plan for necessary resources",{"type":15,"tag":88,"props":342,"children":343},{},[344],{"type":25,"value":345},"Assess whether new software is really needed",{"type":15,"tag":88,"props":347,"children":348},{},[349],{"type":25,"value":350},"Clarity early on helps to avoid problems later",{"type":15,"tag":88,"props":352,"children":353},{},[354],{"type":25,"value":303},{"type":15,"tag":37,"props":356,"children":357},{},[358],{"type":25,"value":359},"Note:\nWith an SMP, you make explicit plans and decisions in an early stage.\nThe SMP provides the team with structured, relevant questions early on, with the aim to maximize the accessibility, reusability, and impact of the software in question.\nThis supports good software management practices, and it makes sure they are known to the researchers involved.",{"type":15,"tag":37,"props":361,"children":362},{},[363],{"type":25,"value":364},"More specifically, in an SMP you:",{"type":15,"tag":84,"props":366,"children":367},{},[368,373,378],{"type":15,"tag":88,"props":369,"children":370},{},[371],{"type":25,"value":372},"Make explicit technical choices. For example, what programming language will be used? What operating system will be supported?",{"type":15,"tag":88,"props":374,"children":375},{},[376],{"type":25,"value":377},"Plan for necessary resources; be they financial, human, infrastructure or other.",{"type":15,"tag":88,"props":379,"children":380},{},[381],{"type":25,"value":382},"Assess whether new software is really needed; explore whether existing software can be reused, and to what extent;",{"type":15,"tag":37,"props":384,"children":385},{},[386],{"type":25,"value":387},"These are issues that arise during software development anyway, but all too often are not explicitly dealt with.\nBy tackling them early, a conscious decision can be made rather than needing to deal with consequences of implicit choices.\nResource planning moreover is vital for the sustainability of the software.\nFinally, the SMP will allow later verification of plans in a publicly funded project.",{"type":15,"tag":16,"props":389,"children":390},{},[],{"type":15,"tag":70,"props":392,"children":393},{},[394,399],{"type":15,"tag":41,"props":395,"children":398},{"src":396,"width":397},"media/smpguide.png","50%",[],{"type":15,"tag":37,"props":400,"children":401},{},[402],{"type":15,"tag":403,"props":404,"children":408},"a",{"href":405,"rel":406},"https://doi.org/10.5281/zenodo.7038280",[407],"nofollow",[409],{"type":25,"value":410},"doi:10.5281/zenodo.7038280",{"type":15,"tag":37,"props":412,"children":413},{},[414],{"type":25,"value":415},"Note:\nTo get started on creating a Software Management Plan, this practical guide has been created by NWO and the Netherlands eScience Center.\nIts first version was released in August of 2022, but it has since been, and will continue to be, updated.\nAll past versions and the latest release are available on Zenodo via this DOI.",{"type":15,"tag":16,"props":417,"children":418},{},[],{"type":15,"tag":70,"props":420,"children":421},{},[422],{"type":15,"tag":41,"props":423,"children":425},{"src":424,"width":76},"media/groupedrequirements.png",[],{"type":15,"tag":37,"props":427,"children":428},{},[429],{"type":25,"value":430},"Note:\nIn the practical guide, the core requirements for an SMP are listed, and grouped into four categories.",{"type":15,"tag":37,"props":432,"children":433},{},[434,436,442],{"type":25,"value":435},"Focusing on the ",{"type":15,"tag":437,"props":438,"children":439},"em",{},[440],{"type":25,"value":441},"engineering",{"type":25,"value":443},", the guide asks about version control, packaging, testing, and software quality.",{"type":15,"tag":37,"props":445,"children":446},{},[447,449,454],{"type":25,"value":448},"Focusing on ",{"type":15,"tag":437,"props":450,"children":451},{},[452],{"type":25,"value":453},"documentation",{"type":25,"value":455},", the guide discusses documentation needs for users, developers, and for deployment specifically.",{"type":15,"tag":37,"props":457,"children":458},{},[459,460,465],{"type":25,"value":448},{"type":15,"tag":437,"props":461,"children":462},{},[463],{"type":25,"value":464},"project management",{"type":25,"value":466},", the guide addresses licensing, maintenance, resources, the project repository, and a risk analysis.",{"type":15,"tag":37,"props":468,"children":469},{},[470,472,477],{"type":25,"value":471},"Finally, the guide asks about the ",{"type":15,"tag":437,"props":473,"children":474},{},[475],{"type":25,"value":476},"purpose",{"type":25,"value":478}," of the software.",{"type":15,"tag":16,"props":480,"children":481},{},[],{"type":15,"tag":70,"props":483,"children":484},{},[485],{"type":15,"tag":41,"props":486,"children":489},{"src":487,"width":488},"media/purpose.png","40%",[],{"type":15,"tag":84,"props":491,"children":492},{},[493,498,503],{"type":15,"tag":88,"props":494,"children":495},{},[496],{"type":25,"value":497},"What problem does it solve?",{"type":15,"tag":88,"props":499,"children":500},{},[501],{"type":25,"value":502},"Who is the intended audience?",{"type":15,"tag":88,"props":504,"children":505},{},[506],{"type":25,"value":507},"What are its advantages and limitations?",{"type":15,"tag":37,"props":509,"children":510},{},[511],{"type":25,"value":512},"Note:\nThe software's purpose is a central question in the SMP.",{"type":15,"tag":37,"props":514,"children":515},{},[516],{"type":25,"value":517},"It is important to be clear about the problem it addresses, and who the software is aimed at.\nAddressing the limitations of the software, as well as the advantages it will provide, help determine its scope.\nThis will help the developers focus on the specific needs of the software.",{"type":15,"tag":16,"props":519,"children":520},{},[],{"type":15,"tag":70,"props":522,"children":523},{},[524],{"type":15,"tag":41,"props":525,"children":528},{"src":526,"width":527},"media/engineering.png","30%",[],{"type":15,"tag":84,"props":530,"children":531},{},[532,537,542,547],{"type":15,"tag":88,"props":533,"children":534},{},[535],{"type":25,"value":536},"What version control will you use?",{"type":15,"tag":88,"props":538,"children":539},{},[540],{"type":25,"value":541},"How will you test the software?",{"type":15,"tag":88,"props":543,"children":544},{},[545],{"type":25,"value":546},"How will the project be organized or packaged?",{"type":15,"tag":88,"props":548,"children":549},{},[550],{"type":25,"value":551},"How will you manage code quality?",{"type":15,"tag":37,"props":553,"children":554},{},[555],{"type":25,"value":556},"Note:\nOn the engineering focus, several specific areas are addressed.",{"type":15,"tag":37,"props":558,"children":559},{},[560,565],{"type":15,"tag":437,"props":561,"children":562},{},[563],{"type":25,"value":564},"Version control",{"type":25,"value":566}," has a myriad of benefits: it allows keeping track of history and provenance, can support experimentation and collaboration, and is crucial for the identification of specific versions of the software.",{"type":15,"tag":37,"props":568,"children":569},{},[570,575],{"type":15,"tag":437,"props":571,"children":572},{},[573],{"type":25,"value":574},"Testing",{"type":25,"value":576}," ensures that software continues to work as intended.\nThere are many different approaches to this: units of code can be tested in unit tests; entire workflows can be verified in integration tests; acceptance tests can be created to ensure specific requirements are met; regression testing can be done to ensure new changes do not break existing functionality; and so on.\nDeciding whether and if so what testing will be implemented is an important element of the SMP.",{"type":15,"tag":37,"props":578,"children":579},{},[580,585],{"type":15,"tag":437,"props":581,"children":582},{},[583],{"type":25,"value":584},"Packaging",{"type":25,"value":586}," is important for the distribution of software.\nThe format in which the software will be distributed is an important decision that should be made early on.",{"type":15,"tag":37,"props":588,"children":589},{},[590,595],{"type":15,"tag":437,"props":591,"children":592},{},[593],{"type":25,"value":594},"Code quality",{"type":25,"value":596}," should be addressed: what standards will be adhered to, and how will they be measured and supported?\nThere are many tools that can help with this, and it is important to choose them early on to maintain consistent code quality throughout the project.",{"type":15,"tag":16,"props":598,"children":599},{},[],{"type":15,"tag":70,"props":601,"children":602},{},[603],{"type":15,"tag":41,"props":604,"children":606},{"src":605,"width":527},"media/documentation.png",[],{"type":15,"tag":84,"props":608,"children":609},{},[610,628],{"type":15,"tag":88,"props":611,"children":612},{},[613,615],{"type":25,"value":614},"What documentation will you provide\n",{"type":15,"tag":84,"props":616,"children":617},{},[618,623],{"type":15,"tag":88,"props":619,"children":620},{},[621],{"type":25,"value":622},"for users?",{"type":15,"tag":88,"props":624,"children":625},{},[626],{"type":25,"value":627},"for developers?",{"type":15,"tag":88,"props":629,"children":630},{},[631],{"type":25,"value":632},"How will you manage system requirements (e.g. dependencies)?",{"type":15,"tag":37,"props":634,"children":635},{},[636],{"type":25,"value":637},"Note:\nDocumentation is an important component of software, and should be tailored to different audiences.",{"type":15,"tag":37,"props":639,"children":640},{},[641,643,648],{"type":25,"value":642},"In ",{"type":15,"tag":437,"props":644,"children":645},{},[646],{"type":25,"value":647},"user documentation",{"type":25,"value":649},", the software's function should be explained, and instructions on how to use it should be provided.",{"type":15,"tag":37,"props":651,"children":652},{},[653,654,659],{"type":25,"value":642},{"type":15,"tag":437,"props":655,"children":656},{},[657],{"type":25,"value":658},"developer documentation",{"type":25,"value":660},", instructions on how to modify the software, and how to contribute to the project should be provided.",{"type":15,"tag":37,"props":662,"children":663},{},[664,669],{"type":15,"tag":437,"props":665,"children":666},{},[667],{"type":25,"value":668},"Deployment documentation",{"type":25,"value":670}," explains any system requirements (such as dependencies) for deploying the software, and installation and testing instructions.",{"type":15,"tag":16,"props":672,"children":673},{},[],{"type":15,"tag":70,"props":675,"children":676},{},[677],{"type":15,"tag":41,"props":678,"children":680},{"src":679,"width":527},"media/projectmanagement.png",[],{"type":15,"tag":84,"props":682,"children":683},{},[684,689,694,699,704,717],{"type":15,"tag":88,"props":685,"children":686},{},[687],{"type":25,"value":688},"What license will you use?",{"type":15,"tag":88,"props":690,"children":691},{},[692],{"type":25,"value":693},"How will the software be maintained? For how long?",{"type":15,"tag":88,"props":695,"children":696},{},[697],{"type":25,"value":698},"How should the software be cited?",{"type":15,"tag":88,"props":700,"children":701},{},[702],{"type":25,"value":703},"What repository(ies) will you use?",{"type":15,"tag":88,"props":705,"children":706},{},[707,709],{"type":25,"value":708},"What resources will you need?\n",{"type":15,"tag":84,"props":710,"children":711},{},[712],{"type":15,"tag":88,"props":713,"children":714},{},[715],{"type":25,"value":716},"e.g. infrastructure, personnel, training, hardware...",{"type":15,"tag":88,"props":718,"children":719},{},[720],{"type":25,"value":721},"What risks and challenges do you foresee?",{"type":15,"tag":37,"props":723,"children":724},{},[725],{"type":25,"value":726},"Note:\nThe project management focus is broad, and addresses various conditions for the software's long-term sustainability and re-use.",{"type":15,"tag":37,"props":728,"children":729},{},[730,732,737],{"type":25,"value":731},"Any reusable software should have an appropriate ",{"type":15,"tag":437,"props":733,"children":734},{},[735],{"type":25,"value":736},"license",{"type":25,"value":738},", which is an important early decision.",{"type":15,"tag":37,"props":740,"children":741},{},[742,744,749],{"type":25,"value":743},"The ",{"type":15,"tag":437,"props":745,"children":746},{},[747],{"type":25,"value":748},"maintenance",{"type":25,"value":750}," of the software should be addressed in an SMP: who will maintain it, and for how long?\nHow and when will it be retired?",{"type":15,"tag":37,"props":752,"children":753},{},[754,756,761],{"type":25,"value":755},"Plan the ",{"type":15,"tag":437,"props":757,"children":758},{},[759],{"type":25,"value":760},"citation",{"type":25,"value":762}," of the software: how will you collect information about its use? What DOI will you use for this?",{"type":15,"tag":37,"props":764,"children":765},{},[766,767,772],{"type":25,"value":743},{"type":15,"tag":437,"props":768,"children":769},{},[770],{"type":25,"value":771},"repository",{"type":25,"value":773}," where the software will be deposited is preferably publicly accessible, and should allow users to obtain a functional copy of the software.",{"type":15,"tag":37,"props":775,"children":776},{},[777,779,784],{"type":25,"value":778},"What ",{"type":15,"tag":437,"props":780,"children":781},{},[782],{"type":25,"value":783},"resources",{"type":25,"value":785}," — human, infrastructure, financial - will be needed, and when?",{"type":15,"tag":37,"props":787,"children":788},{},[789,791,796],{"type":25,"value":790},"Finally, a ",{"type":15,"tag":437,"props":792,"children":793},{},[794],{"type":25,"value":795},"risk analysis",{"type":25,"value":797}," should be performed: for instance, are there privacy or security concerns? Is there potential for vendor lock, or other considerations for future reliability and reuse?",{"type":15,"tag":16,"props":799,"children":800},{},[],{"type":15,"tag":30,"props":802,"children":804},{"id":803},"smp-template",[805],{"type":25,"value":806},"SMP template",{"type":15,"tag":84,"props":808,"children":809},{},[810,815,843],{"type":15,"tag":88,"props":811,"children":812},{},[813],{"type":25,"value":814},"Should be provided by the institution",{"type":15,"tag":88,"props":816,"children":817},{},[818,820],{"type":25,"value":819},"Include guidance:\n",{"type":15,"tag":84,"props":821,"children":822},{},[823,828,833,838],{"type":15,"tag":88,"props":824,"children":825},{},[826],{"type":25,"value":827},"Instructions on how to fill it out",{"type":15,"tag":88,"props":829,"children":830},{},[831],{"type":25,"value":832},"Resources for information and support",{"type":15,"tag":88,"props":834,"children":835},{},[836],{"type":25,"value":837},"Institution-specific regulations",{"type":15,"tag":88,"props":839,"children":840},{},[841],{"type":25,"value":842},"Institution-specific resources available",{"type":15,"tag":88,"props":844,"children":845},{},[846],{"type":25,"value":847},"Include an assessment rubric (e.g. with (un)acceptable answers)",{"type":15,"tag":37,"props":849,"children":850},{},[851],{"type":25,"value":852},"Note:\nThe Software Management Plan template is a duty of the institution.\nA good SMP includes guidance on how to fill it out, including institution-specific regulations and resources.",{"type":15,"tag":37,"props":854,"children":855},{},[856],{"type":25,"value":857},"An assessment rubric should accompany the template, indicating per question or focus what conditions need to be met, and which answers are (un)acceptable.",{"type":15,"tag":16,"props":859,"children":860},{},[],{"type":15,"tag":30,"props":862,"children":864},{"id":863},"not-all-software-is-equal",[865],{"type":25,"value":866},"Not all software is equal",{"type":15,"tag":37,"props":868,"children":869},{},[870],{"type":15,"tag":41,"props":871,"children":873},{"alt":7,"src":872},"media/softwarespectrum.png",[],{"type":15,"tag":37,"props":875,"children":876},{},[877],{"type":25,"value":878},"Note:\nIt is important to realize when making an SMP, that research software comes in many shapes and sizes.",{"type":15,"tag":37,"props":880,"children":881},{},[882],{"type":25,"value":883},"An ad-hoc R script written by a PhD student to analyse data from a specific machine, is research software.",{"type":15,"tag":37,"props":885,"children":886},{},[887],{"type":25,"value":888},"It can also be a multinational collaboration to develop a tool that is used by thousands of researchers worldwide.",{"type":15,"tag":37,"props":890,"children":891},{},[892],{"type":25,"value":893},"Different software has different needs, but there are common principles in managing them and ensuring their sustainability.",{"type":15,"tag":37,"props":895,"children":896},{},[897],{"type":25,"value":898},"The diversity of research software does mean that not all requirements apply to every type of software.\nTo address this, we can subset the core requirements to create different SMP templates tailored to software with different management needs.",{"type":15,"tag":37,"props":900,"children":901},{},[902],{"type":25,"value":903},"The SMP Guide distinguishes software with low, medium, and high management needs.",{"type":15,"tag":16,"props":905,"children":906},{},[],{"type":15,"tag":30,"props":908,"children":910},{"id":909},"smp-level-low",[911],{"type":25,"value":912},"SMP level: low",{"type":15,"tag":84,"props":914,"children":915},{},[916,921,926],{"type":15,"tag":88,"props":917,"children":918},{},[919],{"type":25,"value":920},"Single purpose scripts",{"type":15,"tag":88,"props":922,"children":923},{},[924],{"type":25,"value":925},"Developer is the primary user",{"type":15,"tag":88,"props":927,"children":928},{},[929,931],{"type":25,"value":930},"Performs limited function:\n",{"type":15,"tag":84,"props":932,"children":933},{},[934,939],{"type":15,"tag":88,"props":935,"children":936},{},[937],{"type":25,"value":938},"Analyses a single experiment or dataset",{"type":15,"tag":88,"props":940,"children":941},{},[942],{"type":25,"value":943},"Automates a routine task",{"type":15,"tag":37,"props":945,"children":946},{},[947,949,953],{"type":25,"value":948},"Note:\nSoftware with low management requirements is defined by its limited function: it performs a single analysis or automates a routine task.\nIts ",{"type":15,"tag":124,"props":950,"children":951},{},[952],{"type":25,"value":476},{"type":25,"value":954}," is typically limited to a specific experiment, and the developer is the primary user.",{"type":15,"tag":37,"props":956,"children":957},{},[958,959,964],{"type":25,"value":743},{"type":15,"tag":124,"props":960,"children":961},{},[962],{"type":25,"value":963},"reliability",{"type":25,"value":965}," of this type of software is usually easy to assess: the output can be visually inspected, or tested with a limited set of inputs.",{"type":15,"tag":37,"props":967,"children":968},{},[969,970,974],{"type":25,"value":743},{"type":15,"tag":124,"props":971,"children":972},{},[973],{"type":25,"value":748},{"type":25,"value":975}," of this type of software is usually limited to the duration of the project in which it was developed.\nIt is not intended to be used by others, and therefore its influence beyond the scope for which it was intended is likely small.",{"type":15,"tag":37,"props":977,"children":978},{},[979],{"type":25,"value":980},"Best practices during development (e.g. version control), as well as measures to enable its reuse (documentation, versioning, archiving) are appropriate and recommended.\nThey are however not requirements, nor is long term maintenance planning necessary.",{"type":15,"tag":16,"props":982,"children":983},{},[],{"type":15,"tag":30,"props":985,"children":987},{"id":986},"smp-level-medium",[988],{"type":25,"value":989},"SMP level: medium",{"type":15,"tag":84,"props":991,"children":992},{},[993,998,1003],{"type":15,"tag":88,"props":994,"children":995},{},[996],{"type":25,"value":997},"Primary or secondary output of a research project",{"type":15,"tag":88,"props":999,"children":1000},{},[1001],{"type":25,"value":1002},"Adds a library or module to existing tool, or even works standalone",{"type":15,"tag":88,"props":1004,"children":1005},{},[1006,1008],{"type":25,"value":1007},"Unique functionality that will be reused\n",{"type":15,"tag":84,"props":1009,"children":1010},{},[1011,1016],{"type":15,"tag":88,"props":1012,"children":1013},{},[1014],{"type":25,"value":1015},"Implements a new or higher performance algorithm",{"type":15,"tag":88,"props":1017,"children":1018},{},[1019],{"type":25,"value":1020},"Simulation software implementing a new model or method",{"type":15,"tag":37,"props":1022,"children":1023},{},[1024,1026,1031],{"type":25,"value":1025},"Note:\nSoftware requiring ",{"type":15,"tag":124,"props":1027,"children":1028},{},[1029],{"type":25,"value":1030},"medium",{"type":25,"value":1032}," management, is defined as software that is the primary or secondary output of a research project.",{"type":15,"tag":37,"props":1034,"children":1035},{},[1036,1038,1042],{"type":25,"value":1037},"Its original ",{"type":15,"tag":124,"props":1039,"children":1040},{},[1041],{"type":25,"value":476},{"type":25,"value":1043}," is typically limited to a single research project, but incorporates functionality that may be of use to others, either as a standalone tool, library, or module in an existing tool.",{"type":15,"tag":37,"props":1045,"children":1046},{},[1047,1048,1052],{"type":25,"value":743},{"type":15,"tag":124,"props":1049,"children":1050},{},[1051],{"type":25,"value":963},{"type":25,"value":1053}," is more difficult to assess due to its increased complexity, but it is also also more important: this software likely has an effect on other research outside of the original project.\nGood software practices such as version control and user/technical documentation are therefore essential here.\nMore advanced requirements, such as code auditing, automated testing, software packaging, and distribution also need to be considered.",{"type":15,"tag":37,"props":1055,"children":1056},{},[1057,1059,1063],{"type":25,"value":1058},"This software's longer term ",{"type":15,"tag":124,"props":1060,"children":1061},{},[1062],{"type":25,"value":748},{"type":25,"value":1064}," is relevant as it will have a lifespan longer than the project in which it was developed.\nSoftware management planning should include providing information on archiving and citation as well as strategies for post-project maintenance and support.",{"type":15,"tag":16,"props":1066,"children":1067},{},[],{"type":15,"tag":30,"props":1069,"children":1071},{"id":1070},"smp-level-high",[1072],{"type":25,"value":1073},"SMP level: high",{"type":15,"tag":84,"props":1075,"children":1076},{},[1077,1082,1087,1092],{"type":15,"tag":88,"props":1078,"children":1079},{},[1080],{"type":25,"value":1081},"Mission critical software",{"type":15,"tag":88,"props":1083,"children":1084},{},[1085],{"type":25,"value":1086},"High standards required for reliability",{"type":15,"tag":88,"props":1088,"children":1089},{},[1090],{"type":25,"value":1091},"Absence or replacement of the software would threaten research",{"type":15,"tag":88,"props":1093,"children":1094},{},[1095,1097],{"type":25,"value":1096},"Software that is continually in use:\n",{"type":15,"tag":84,"props":1098,"children":1099},{},[1100,1105],{"type":15,"tag":88,"props":1101,"children":1102},{},[1103],{"type":25,"value":1104},"Preprocessing data coming from a telescope",{"type":15,"tag":88,"props":1106,"children":1107},{},[1108],{"type":25,"value":1109},"Controlling a medical device",{"type":15,"tag":37,"props":1111,"children":1112},{},[1113,1115,1120],{"type":25,"value":1114},"Note:\n",{"type":15,"tag":124,"props":1116,"children":1117},{},[1118],{"type":25,"value":1119},"High",{"type":25,"value":1121}," management software is defined as mission critical software.",{"type":15,"tag":37,"props":1123,"children":1124},{},[1125,1127,1131],{"type":25,"value":1126},"Its ",{"type":15,"tag":124,"props":1128,"children":1129},{},[1130],{"type":25,"value":476},{"type":25,"value":1132}," is to perform a critical function, and its absence or replacement would threaten the research.",{"type":15,"tag":37,"props":1134,"children":1135},{},[1136,1137,1141],{"type":25,"value":743},{"type":15,"tag":124,"props":1138,"children":1139},{},[1140],{"type":25,"value":963},{"type":25,"value":1142}," of this software is of utmost importance, and all possible actions should be taken to ensure it.",{"type":15,"tag":37,"props":1144,"children":1145},{},[1146,1147,1151],{"type":25,"value":1126},{"type":15,"tag":124,"props":1148,"children":1149},{},[1150],{"type":25,"value":748},{"type":25,"value":1152}," is not limited to the duration of the project in which it was developed, but should be maintained as long as it is in use.\nThus, maintenance strategies, including funding and/or community development plans, should be in place.",{"type":15,"tag":16,"props":1154,"children":1155},{},[],{"type":15,"tag":30,"props":1157,"children":1159},{"id":1158},"making-that-call",[1160],{"type":25,"value":1161},"Making that call",{"type":15,"tag":84,"props":1163,"children":1164},{},[1165,1175,1185],{"type":15,"tag":88,"props":1166,"children":1167},{},[1168,1173],{"type":15,"tag":124,"props":1169,"children":1170},{},[1171],{"type":25,"value":1172},"Purpose",{"type":25,"value":1174},": what is the reason or expected end-use for the software?",{"type":15,"tag":88,"props":1176,"children":1177},{},[1178,1183],{"type":15,"tag":124,"props":1179,"children":1180},{},[1181],{"type":25,"value":1182},"Reliability",{"type":25,"value":1184},": what is the effect of software failure and/or non-maintenance?",{"type":15,"tag":88,"props":1186,"children":1187},{},[1188,1193],{"type":15,"tag":124,"props":1189,"children":1190},{},[1191],{"type":25,"value":1192},"Maintenance",{"type":25,"value":1194},": what is the long-term effort needed to maintain the software?",{"type":15,"tag":37,"props":1196,"children":1197},{},[1198,1200],{"type":25,"value":1199},"Check the Practical Guide: ",{"type":15,"tag":403,"props":1201,"children":1203},{"href":405,"rel":1202},[407],[1204],{"type":25,"value":410},{"type":15,"tag":37,"props":1206,"children":1207},{},[1208],{"type":25,"value":1209},"Note:\nDeciding what level of management, and therefore which SMP template, is appropriate for a specific software project, is not always straightforward.\nThe practical guide provides some guidance on how to make this decision.\nAddressing what purpose the software serves, how reliable it needs to be, and what efforts will be required for its longer term maintenance, will help determine the appropriate level of management.",{"type":15,"tag":16,"props":1211,"children":1212},{},[],{"type":15,"tag":70,"props":1214,"children":1215},{},[1216],{"type":15,"tag":41,"props":1217,"children":1219},{"src":1218,"width":76},"media/threelevels.png",[],{"type":15,"tag":37,"props":1221,"children":1222},{},[1223],{"type":25,"value":1224},"Note:\nWith a specific level of management in mind, the core requirements that are relevant for this software's management can be determined.\nThe practical guide provides a clear overview of this.",{"type":15,"tag":16,"props":1226,"children":1227},{},[],{"type":15,"tag":30,"props":1229,"children":1231},{"id":1230},"take-home-messages",[1232],{"type":25,"value":1233},"Take home messages",{"type":15,"tag":84,"props":1235,"children":1236},{},[1237,1242,1247,1252],{"type":15,"tag":88,"props":1238,"children":1239},{},[1240],{"type":25,"value":1241},"Software is found in all stages of the research cycle",{"type":15,"tag":88,"props":1243,"children":1244},{},[1245],{"type":25,"value":1246},"Research software comes in many shapes and sizes",{"type":15,"tag":88,"props":1248,"children":1249},{},[1250],{"type":25,"value":1251},"Software stewardship starts with a good plan",{"type":15,"tag":88,"props":1253,"children":1254},{},[1255],{"type":25,"value":1256},"Good software management leads to better science",{"type":15,"tag":37,"props":1258,"children":1259},{},[1260],{"type":25,"value":1261},"Note:\nSoftware is found in all stages of the research cycle, and is used for many different purposes.\nIt comes in many shapes and sizes, and has different needs.\nSoftware stewardship starts with a good plan, and is an important scientific step: good software management leads to better science.",{"type":15,"tag":16,"props":1263,"children":1264},{},[],{"type":15,"tag":37,"props":1266,"children":1267},{},[1268],{"type":15,"tag":403,"props":1269,"children":1272},{"href":1270,"rel":1271},"http://www.esciencecenter.nl",[407],[1273],{"type":25,"value":1274},"www.esciencecenter.nl",{"type":15,"tag":37,"props":1276,"children":1277},{},[1278],{"type":15,"tag":403,"props":1279,"children":1281},{"href":1280},"mailto:info@esciencecenter.nl",[1282],{"type":25,"value":1283},"info@esciencecenter.nl",{"type":15,"tag":37,"props":1285,"children":1286},{},[1287],{"type":25,"value":1288},"020 - 460 47 70",{"title":7,"searchDepth":1290,"depth":1290,"links":1291},2,[1292,1293,1294,1295,1299,1300,1301,1302,1303,1304,1305,1306],{"id":32,"depth":1290,"text":35},{"id":65,"depth":1290,"text":68},{"id":108,"depth":1290,"text":111},{"id":216,"depth":1290,"text":219,"children":1296},[1297],{"id":254,"depth":1298,"text":257},3,{"id":324,"depth":1290,"text":327},{"id":803,"depth":1290,"text":806},{"id":863,"depth":1290,"text":866},{"id":909,"depth":1290,"text":912},{"id":986,"depth":1290,"text":989},{"id":1070,"depth":1290,"text":1073},{"id":1158,"depth":1290,"text":1161},{"id":1230,"depth":1290,"text":1233},"markdown","local_fs:modules:smp:slides-smp.pmd","local_fs","modules/smp/slides-smp.pmd","pmd",[1313,1348],{"_path":1314,"_dir":1315,"_draft":6,"_partial":6,"_locale":7,"title":1316,"description":7,"body":1317,"_type":1307,"_id":1345,"_source":1309,"_file":1346,"_extension":1347},"/main/about","main","About",{"type":12,"children":1318,"toc":1341},[1319,1325,1330,1336],{"type":15,"tag":30,"props":1320,"children":1322},{"id":1321},"about-the-research-software-support",[1323],{"type":25,"value":1324},"About the Research Software Support",{"type":15,"tag":37,"props":1326,"children":1327},{},[1328],{"type":25,"value":1329},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":30,"props":1331,"children":1333},{"id":1332},"target-audience",[1334],{"type":25,"value":1335},"Target audience",{"type":15,"tag":37,"props":1337,"children":1338},{},[1339],{"type":25,"value":1340},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":1290,"depth":1290,"links":1342},[1343,1344],{"id":1321,"depth":1290,"text":1324},{"id":1332,"depth":1290,"text":1335},"local_fs:main:about.md","main/about.md","md",{"_path":1349,"_dir":1315,"_draft":6,"_partial":6,"_locale":7,"title":1350,"description":7,"body":1351,"_type":1307,"_id":1473,"_source":1309,"_file":1474,"_extension":1347},"/main/contribute","Contribute",{"type":12,"children":1352,"toc":1468},[1353,1359,1364,1370,1375],{"type":15,"tag":30,"props":1354,"children":1356},{"id":1355},"contributing-to-the-research-software-support",[1357],{"type":25,"value":1358},"Contributing to the Research Software Support",{"type":15,"tag":37,"props":1360,"children":1361},{},[1362],{"type":25,"value":1363},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":252,"props":1365,"children":1367},{"id":1366},"what-can-i-do",[1368],{"type":25,"value":1369},"What can I do?",{"type":15,"tag":37,"props":1371,"children":1372},{},[1373],{"type":25,"value":1374},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":84,"props":1376,"children":1377},{},[1378,1392,1433,1456],{"type":15,"tag":88,"props":1379,"children":1380},{},[1381,1383,1390],{"type":25,"value":1382},"Contribute to the content discussion in the ",{"type":15,"tag":403,"props":1384,"children":1387},{"href":1385,"rel":1386},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[407],[1388],{"type":25,"value":1389},"chapter issues",{"type":25,"value":1391},", e.g. by listing good resources for information.",{"type":15,"tag":88,"props":1393,"children":1394},{},[1395,1401,1403],{"type":15,"tag":403,"props":1396,"children":1398},{"href":1397},"#elements-of-a-module",[1399],{"type":25,"value":1400},"Author a lesson",{"type":25,"value":1402},", e.g. by:\n",{"type":15,"tag":84,"props":1404,"children":1405},{},[1406,1415,1424],{"type":15,"tag":88,"props":1407,"children":1408},{},[1409],{"type":15,"tag":403,"props":1410,"children":1412},{"href":1411},"#slides",[1413],{"type":25,"value":1414},"Creating slides",{"type":15,"tag":88,"props":1416,"children":1417},{},[1418],{"type":15,"tag":403,"props":1419,"children":1421},{"href":1420},"#exercises",[1422],{"type":25,"value":1423},"Designing an exercise",{"type":15,"tag":88,"props":1425,"children":1426},{},[1427],{"type":15,"tag":403,"props":1428,"children":1430},{"href":1429},"#online-resources",[1431],{"type":25,"value":1432},"Curating online resources",{"type":15,"tag":88,"props":1434,"children":1435},{},[1436,1438,1445,1447,1454],{"type":25,"value":1437},"Review a lesson module; both by looking at ",{"type":15,"tag":403,"props":1439,"children":1442},{"href":1440,"rel":1441},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[407],[1443],{"type":25,"value":1444},"open PRs",{"type":25,"value":1446},", as well as flagging issues for improvement in the ",{"type":15,"tag":403,"props":1448,"children":1451},{"href":1449,"rel":1450},"https://esciencecenter-digital-skills.github.io/research-software-support/",[407],[1452],{"type":25,"value":1453},"existing content",{"type":25,"value":1455},".",{"type":15,"tag":88,"props":1457,"children":1458},{},[1459,1466],{"type":15,"tag":403,"props":1460,"children":1463},{"href":1461,"rel":1462},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[407],[1464],{"type":25,"value":1465},"Provide feedback",{"type":25,"value":1467}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":1290,"depth":1290,"links":1469},[1470],{"id":1355,"depth":1290,"text":1358,"children":1471},[1472],{"id":1366,"depth":1298,"text":1369},"local_fs:main:contribute.md","main/contribute.md",1715801014884] \ No newline at end of file diff --git a/modules/smp/slides-smp/index.html b/modules/smp/slides-smp/index.html index 69f1489d..a0516364 100644 --- a/modules/smp/slides-smp/index.html +++ b/modules/smp/slides-smp/index.html @@ -2,7 +2,7 @@ Software Management Plans - + - - - - - - - - + + + + + + + + - + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/testing/exercise1/_payload.json b/modules/testing/exercise1/_payload.json index 361545f7..3fca195d 100644 --- a/modules/testing/exercise1/_payload.json +++ b/modules/testing/exercise1/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":294},["Reactive",2],{"content-query-OFreIAiQYb":3,"content-query-AT44bg6JPw":125},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":120,"_id":121,"_source":122,"_file":123,"_extension":124},"/modules/testing/exercise1","testing",false,"","Exercise 1","Choose an alternative that correctly answers the following questions:","exercise",2,{"type":13,"children":14,"toc":118},"root",[15,23,28,37,42,47,52,57,62,66,74,79,84,89,94,99,102],{"type":16,"tag":17,"props":18,"children":20},"element","h1",{"id":19},"exercise-1",[21],{"type":22,"value":8},"text",{"type":16,"tag":24,"props":25,"children":26},"p",{},[27],{"type":22,"value":9},{"type":16,"tag":24,"props":29,"children":30},{},[31],{"type":16,"tag":32,"props":33,"children":34},"strong",{},[35],{"type":22,"value":36},"1.1 What is software testing?",{"type":16,"tag":24,"props":38,"children":39},{},[40],{"type":22,"value":41},"a) A method for evaluating a software's compatibility with different operating systems.",{"type":16,"tag":24,"props":43,"children":44},{},[45],{"type":22,"value":46},"b) The process of releasing updates and patches for software.",{"type":16,"tag":24,"props":48,"children":49},{},[50],{"type":22,"value":51},"c) The process of verifying and validating that a software meets the required specifications and works as intended.",{"type":16,"tag":24,"props":53,"children":54},{},[55],{"type":22,"value":56},"d) A step in the software lifecycle focused on community engagement and feedback.",{"type":16,"tag":24,"props":58,"children":59},{},[60],{"type":22,"value":61},"e) The practice of documenting software functionalities.",{"type":16,"tag":63,"props":64,"children":65},"hr",{},[],{"type":16,"tag":24,"props":67,"children":68},{},[69],{"type":16,"tag":32,"props":70,"children":71},{},[72],{"type":22,"value":73},"1.2 Why is software testing important?",{"type":16,"tag":24,"props":75,"children":76},{},[77],{"type":22,"value":78},"a) To build and maintain the community's trust by demonstrating commitment to quality.",{"type":16,"tag":24,"props":80,"children":81},{},[82],{"type":22,"value":83},"b) To identify and fix bugs, ensure the software meets required standards, and assess its reliability and reproducibility.",{"type":16,"tag":24,"props":85,"children":86},{},[87],{"type":22,"value":88},"c) To design the software's user interface and graphics.",{"type":16,"tag":24,"props":90,"children":91},{},[92],{"type":22,"value":93},"d) To accelerate the overall software development process.",{"type":16,"tag":24,"props":95,"children":96},{},[97],{"type":22,"value":98},"e) To facilitate easier collaboration among developers.",{"type":16,"tag":63,"props":100,"children":101},{},[],{"type":16,"tag":24,"props":103,"children":104},{},[105],{"type":16,"tag":106,"props":107,"children":108},"small",{},[109,111,116],{"type":22,"value":110}," ",{"type":16,"tag":32,"props":112,"children":113},{},[114],{"type":22,"value":115},"answers:",{"type":22,"value":117},"\n1.1 c)\n1.2 The most obvious answer is b), but in fact all answers except c) are correct\n",{"title":7,"searchDepth":11,"depth":11,"links":119},[],"markdown","local_fs:modules:testing:exercise1.md","local_fs","modules/testing/exercise1.md","md",[126,161],{"_path":127,"_dir":128,"_draft":6,"_partial":6,"_locale":7,"title":129,"description":7,"body":130,"_type":120,"_id":159,"_source":122,"_file":160,"_extension":124},"/main/about","main","About",{"type":13,"children":131,"toc":155},[132,139,144,150],{"type":16,"tag":133,"props":134,"children":136},"h2",{"id":135},"about-the-research-software-support",[137],{"type":22,"value":138},"About the Research Software Support",{"type":16,"tag":24,"props":140,"children":141},{},[142],{"type":22,"value":143},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":133,"props":145,"children":147},{"id":146},"target-audience",[148],{"type":22,"value":149},"Target audience",{"type":16,"tag":24,"props":151,"children":152},{},[153],{"type":22,"value":154},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":11,"depth":11,"links":156},[157,158],{"id":135,"depth":11,"text":138},{"id":146,"depth":11,"text":149},"local_fs:main:about.md","main/about.md",{"_path":162,"_dir":128,"_draft":6,"_partial":6,"_locale":7,"title":163,"description":7,"body":164,"_type":120,"_id":292,"_source":122,"_file":293,"_extension":124},"/main/contribute","Contribute",{"type":13,"children":165,"toc":286},[166,172,177,184,189],{"type":16,"tag":133,"props":167,"children":169},{"id":168},"contributing-to-the-research-software-support",[170],{"type":22,"value":171},"Contributing to the Research Software Support",{"type":16,"tag":24,"props":173,"children":174},{},[175],{"type":22,"value":176},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":178,"props":179,"children":181},"h3",{"id":180},"what-can-i-do",[182],{"type":22,"value":183},"What can I do?",{"type":16,"tag":24,"props":185,"children":186},{},[187],{"type":22,"value":188},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":190,"props":191,"children":192},"ul",{},[193,210,251,274],{"type":16,"tag":194,"props":195,"children":196},"li",{},[197,199,208],{"type":22,"value":198},"Contribute to the content discussion in the ",{"type":16,"tag":200,"props":201,"children":205},"a",{"href":202,"rel":203},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[204],"nofollow",[206],{"type":22,"value":207},"chapter issues",{"type":22,"value":209},", e.g. by listing good resources for information.",{"type":16,"tag":194,"props":211,"children":212},{},[213,219,221],{"type":16,"tag":200,"props":214,"children":216},{"href":215},"#elements-of-a-module",[217],{"type":22,"value":218},"Author a lesson",{"type":22,"value":220},", e.g. by:\n",{"type":16,"tag":190,"props":222,"children":223},{},[224,233,242],{"type":16,"tag":194,"props":225,"children":226},{},[227],{"type":16,"tag":200,"props":228,"children":230},{"href":229},"#slides",[231],{"type":22,"value":232},"Creating slides",{"type":16,"tag":194,"props":234,"children":235},{},[236],{"type":16,"tag":200,"props":237,"children":239},{"href":238},"#exercises",[240],{"type":22,"value":241},"Designing an exercise",{"type":16,"tag":194,"props":243,"children":244},{},[245],{"type":16,"tag":200,"props":246,"children":248},{"href":247},"#online-resources",[249],{"type":22,"value":250},"Curating online resources",{"type":16,"tag":194,"props":252,"children":253},{},[254,256,263,265,272],{"type":22,"value":255},"Review a lesson module; both by looking at ",{"type":16,"tag":200,"props":257,"children":260},{"href":258,"rel":259},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[204],[261],{"type":22,"value":262},"open PRs",{"type":22,"value":264},", as well as flagging issues for improvement in the ",{"type":16,"tag":200,"props":266,"children":269},{"href":267,"rel":268},"https://esciencecenter-digital-skills.github.io/research-software-support/",[204],[270],{"type":22,"value":271},"existing content",{"type":22,"value":273},".",{"type":16,"tag":194,"props":275,"children":276},{},[277,284],{"type":16,"tag":200,"props":278,"children":281},{"href":279,"rel":280},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[204],[282],{"type":22,"value":283},"Provide feedback",{"type":22,"value":285}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":11,"depth":11,"links":287},[288],{"id":168,"depth":11,"text":171,"children":289},[290],{"id":180,"depth":291,"text":183},3,"local_fs:main:contribute.md","main/contribute.md",1715800938259] \ No newline at end of file +[{"data":1,"prerenderedAt":294},["Reactive",2],{"content-query-OFreIAiQYb":3,"content-query-AT44bg6JPw":125},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":120,"_id":121,"_source":122,"_file":123,"_extension":124},"/modules/testing/exercise1","testing",false,"","Exercise 1","Choose an alternative that correctly answers the following questions:","exercise",2,{"type":13,"children":14,"toc":118},"root",[15,23,28,37,42,47,52,57,62,66,74,79,84,89,94,99,102],{"type":16,"tag":17,"props":18,"children":20},"element","h1",{"id":19},"exercise-1",[21],{"type":22,"value":8},"text",{"type":16,"tag":24,"props":25,"children":26},"p",{},[27],{"type":22,"value":9},{"type":16,"tag":24,"props":29,"children":30},{},[31],{"type":16,"tag":32,"props":33,"children":34},"strong",{},[35],{"type":22,"value":36},"1.1 What is software testing?",{"type":16,"tag":24,"props":38,"children":39},{},[40],{"type":22,"value":41},"a) A method for evaluating a software's compatibility with different operating systems.",{"type":16,"tag":24,"props":43,"children":44},{},[45],{"type":22,"value":46},"b) The process of releasing updates and patches for software.",{"type":16,"tag":24,"props":48,"children":49},{},[50],{"type":22,"value":51},"c) The process of verifying and validating that a software meets the required specifications and works as intended.",{"type":16,"tag":24,"props":53,"children":54},{},[55],{"type":22,"value":56},"d) A step in the software lifecycle focused on community engagement and feedback.",{"type":16,"tag":24,"props":58,"children":59},{},[60],{"type":22,"value":61},"e) The practice of documenting software functionalities.",{"type":16,"tag":63,"props":64,"children":65},"hr",{},[],{"type":16,"tag":24,"props":67,"children":68},{},[69],{"type":16,"tag":32,"props":70,"children":71},{},[72],{"type":22,"value":73},"1.2 Why is software testing important?",{"type":16,"tag":24,"props":75,"children":76},{},[77],{"type":22,"value":78},"a) To build and maintain the community's trust by demonstrating commitment to quality.",{"type":16,"tag":24,"props":80,"children":81},{},[82],{"type":22,"value":83},"b) To identify and fix bugs, ensure the software meets required standards, and assess its reliability and reproducibility.",{"type":16,"tag":24,"props":85,"children":86},{},[87],{"type":22,"value":88},"c) To design the software's user interface and graphics.",{"type":16,"tag":24,"props":90,"children":91},{},[92],{"type":22,"value":93},"d) To accelerate the overall software development process.",{"type":16,"tag":24,"props":95,"children":96},{},[97],{"type":22,"value":98},"e) To facilitate easier collaboration among developers.",{"type":16,"tag":63,"props":100,"children":101},{},[],{"type":16,"tag":24,"props":103,"children":104},{},[105],{"type":16,"tag":106,"props":107,"children":108},"small",{},[109,111,116],{"type":22,"value":110}," ",{"type":16,"tag":32,"props":112,"children":113},{},[114],{"type":22,"value":115},"answers:",{"type":22,"value":117},"\n1.1 c)\n1.2 The most obvious answer is b), but in fact all answers except c) are correct\n",{"title":7,"searchDepth":11,"depth":11,"links":119},[],"markdown","local_fs:modules:testing:exercise1.md","local_fs","modules/testing/exercise1.md","md",[126,161],{"_path":127,"_dir":128,"_draft":6,"_partial":6,"_locale":7,"title":129,"description":7,"body":130,"_type":120,"_id":159,"_source":122,"_file":160,"_extension":124},"/main/about","main","About",{"type":13,"children":131,"toc":155},[132,139,144,150],{"type":16,"tag":133,"props":134,"children":136},"h2",{"id":135},"about-the-research-software-support",[137],{"type":22,"value":138},"About the Research Software Support",{"type":16,"tag":24,"props":140,"children":141},{},[142],{"type":22,"value":143},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":133,"props":145,"children":147},{"id":146},"target-audience",[148],{"type":22,"value":149},"Target audience",{"type":16,"tag":24,"props":151,"children":152},{},[153],{"type":22,"value":154},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":11,"depth":11,"links":156},[157,158],{"id":135,"depth":11,"text":138},{"id":146,"depth":11,"text":149},"local_fs:main:about.md","main/about.md",{"_path":162,"_dir":128,"_draft":6,"_partial":6,"_locale":7,"title":163,"description":7,"body":164,"_type":120,"_id":292,"_source":122,"_file":293,"_extension":124},"/main/contribute","Contribute",{"type":13,"children":165,"toc":286},[166,172,177,184,189],{"type":16,"tag":133,"props":167,"children":169},{"id":168},"contributing-to-the-research-software-support",[170],{"type":22,"value":171},"Contributing to the Research Software Support",{"type":16,"tag":24,"props":173,"children":174},{},[175],{"type":22,"value":176},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":178,"props":179,"children":181},"h3",{"id":180},"what-can-i-do",[182],{"type":22,"value":183},"What can I do?",{"type":16,"tag":24,"props":185,"children":186},{},[187],{"type":22,"value":188},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":190,"props":191,"children":192},"ul",{},[193,210,251,274],{"type":16,"tag":194,"props":195,"children":196},"li",{},[197,199,208],{"type":22,"value":198},"Contribute to the content discussion in the ",{"type":16,"tag":200,"props":201,"children":205},"a",{"href":202,"rel":203},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[204],"nofollow",[206],{"type":22,"value":207},"chapter issues",{"type":22,"value":209},", e.g. by listing good resources for information.",{"type":16,"tag":194,"props":211,"children":212},{},[213,219,221],{"type":16,"tag":200,"props":214,"children":216},{"href":215},"#elements-of-a-module",[217],{"type":22,"value":218},"Author a lesson",{"type":22,"value":220},", e.g. by:\n",{"type":16,"tag":190,"props":222,"children":223},{},[224,233,242],{"type":16,"tag":194,"props":225,"children":226},{},[227],{"type":16,"tag":200,"props":228,"children":230},{"href":229},"#slides",[231],{"type":22,"value":232},"Creating slides",{"type":16,"tag":194,"props":234,"children":235},{},[236],{"type":16,"tag":200,"props":237,"children":239},{"href":238},"#exercises",[240],{"type":22,"value":241},"Designing an exercise",{"type":16,"tag":194,"props":243,"children":244},{},[245],{"type":16,"tag":200,"props":246,"children":248},{"href":247},"#online-resources",[249],{"type":22,"value":250},"Curating online resources",{"type":16,"tag":194,"props":252,"children":253},{},[254,256,263,265,272],{"type":22,"value":255},"Review a lesson module; both by looking at ",{"type":16,"tag":200,"props":257,"children":260},{"href":258,"rel":259},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[204],[261],{"type":22,"value":262},"open PRs",{"type":22,"value":264},", as well as flagging issues for improvement in the ",{"type":16,"tag":200,"props":266,"children":269},{"href":267,"rel":268},"https://esciencecenter-digital-skills.github.io/research-software-support/",[204],[270],{"type":22,"value":271},"existing content",{"type":22,"value":273},".",{"type":16,"tag":194,"props":275,"children":276},{},[277,284],{"type":16,"tag":200,"props":278,"children":281},{"href":279,"rel":280},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[204],[282],{"type":22,"value":283},"Provide feedback",{"type":22,"value":285}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":11,"depth":11,"links":287},[288],{"id":168,"depth":11,"text":171,"children":289},[290],{"id":180,"depth":291,"text":183},3,"local_fs:main:contribute.md","main/contribute.md",1715801015460] \ No newline at end of file diff --git a/modules/testing/exercise1/index.html b/modules/testing/exercise1/index.html index 35bba509..f326b337 100644 --- a/modules/testing/exercise1/index.html +++ b/modules/testing/exercise1/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - + + -

    Module: testing

    Exercise 1

    Choose an alternative that correctly answers the following questions:

    1.1 What is software testing?

    a) A method for evaluating a software's compatibility with different operating systems.

    b) The process of releasing updates and patches for software.

    c) The process of verifying and validating that a software meets the required specifications and works as intended.

    d) A step in the software lifecycle focused on community engagement and feedback.

    e) The practice of documenting software functionalities.


    1.2 Why is software testing important?

    a) To build and maintain the community's trust by demonstrating commitment to quality.

    b) To identify and fix bugs, ensure the software meets required standards, and assess its reliability and reproducibility.

    c) To design the software's user interface and graphics.

    d) To accelerate the overall software development process.

    e) To facilitate easier collaboration among developers.


    answers: +

    Module: testing

    Exercise 1

    Choose an alternative that correctly answers the following questions:

    1.1 What is software testing?

    a) A method for evaluating a software's compatibility with different operating systems.

    b) The process of releasing updates and patches for software.

    c) The process of verifying and validating that a software meets the required specifications and works as intended.

    d) A step in the software lifecycle focused on community engagement and feedback.

    e) The practice of documenting software functionalities.


    1.2 Why is software testing important?

    a) To build and maintain the community's trust by demonstrating commitment to quality.

    b) To identify and fix bugs, ensure the software meets required standards, and assess its reliability and reproducibility.

    c) To design the software's user interface and graphics.

    d) To accelerate the overall software development process.

    e) To facilitate easier collaboration among developers.


    answers: 1.1 c) 1.2 The most obvious answer is b), but in fact all answers except c) are correct -

    - \ No newline at end of file +

    + \ No newline at end of file diff --git a/modules/testing/exercise2/_payload.json b/modules/testing/exercise2/_payload.json index adefb993..674e13e5 100644 --- a/modules/testing/exercise2/_payload.json +++ b/modules/testing/exercise2/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":357},["Reactive",2],{"content-query-o5SfQqZsgv":3,"content-query-AT44bg6JPw":193},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":188,"_id":189,"_source":190,"_file":191,"_extension":192},"/modules/testing/exercise2","testing",false,"","Exercise 2","exercise",3,{"type":12,"children":13,"toc":179},"root",[14,22,29,49,53,60,89,92,98,104,109,114,119,124,127,133,138,156,159,165,170],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-2",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"instructions",[27],{"type":21,"value":28},"Instructions",{"type":15,"tag":30,"props":31,"children":32},"ul",{},[33,39,44],{"type":15,"tag":34,"props":35,"children":36},"li",{},[37],{"type":21,"value":38},"Match the items in Column A with their corresponding items in Column B.",{"type":15,"tag":34,"props":40,"children":41},{},[42],{"type":21,"value":43},"Write the letter of the correct match next to each item in Column A.",{"type":15,"tag":34,"props":45,"children":46},{},[47],{"type":21,"value":48},"Have fun and learn!",{"type":15,"tag":50,"props":51,"children":52},"hr",{},[],{"type":15,"tag":54,"props":55,"children":57},"h3",{"id":56},"column-a",[58],{"type":21,"value":59},"Column A",{"type":15,"tag":61,"props":62,"children":63},"ol",{},[64,69,74,79,84],{"type":15,"tag":34,"props":65,"children":66},{},[67],{"type":21,"value":68},"Smoke Test",{"type":15,"tag":34,"props":70,"children":71},{},[72],{"type":21,"value":73},"Unit Test",{"type":15,"tag":34,"props":75,"children":76},{},[77],{"type":21,"value":78},"Integration Test",{"type":15,"tag":34,"props":80,"children":81},{},[82],{"type":21,"value":83},"System Test",{"type":15,"tag":34,"props":85,"children":86},{},[87],{"type":21,"value":88},"Regression Test",{"type":15,"tag":50,"props":90,"children":91},{},[],{"type":15,"tag":54,"props":93,"children":95},{"id":94},"column-b",[96],{"type":21,"value":97},"Column B",{"type":15,"tag":99,"props":100,"children":101},"p",{},[102],{"type":21,"value":103},"A. Style of testing that focuses on retesting after changes are made. The results of tests after the changes are compared to the results before, and errors are raised if these are different. The purpose of this test is to ensure that changes (enhancements or defect fixes) to the software have not adversely affected it.",{"type":15,"tag":99,"props":105,"children":106},{},[107],{"type":21,"value":108},"B. A level of the software testing process where the complete, integrated system is tested. The purpose of this test is to evaluate whether the system as a whole gives the correct outputs for given inputs.",{"type":15,"tag":99,"props":110,"children":111},{},[112],{"type":21,"value":113},"C. Very brief initial checks that ensure the basic units required to run the software can be initialized. If these fail there is no point proceeding to additional levels of testing until they are fixed.",{"type":15,"tag":99,"props":115,"children":116},{},[117],{"type":21,"value":118},"D. A level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units.",{"type":15,"tag":99,"props":120,"children":121},{},[122],{"type":21,"value":123},"E. A level of the software testing process where individual units of a software are tested. The purpose is to ensure that each unit of the software works as expected.",{"type":15,"tag":50,"props":125,"children":126},{},[],{"type":15,"tag":23,"props":128,"children":130},{"id":129},"answers",[131],{"type":21,"value":132},"Answers",{"type":15,"tag":99,"props":134,"children":135},{},[136],{"type":21,"value":137},"(Leave this blank for now, you can fill in the answers after completing the activity)",{"type":15,"tag":61,"props":139,"children":140},{},[141,144,147,150,153],{"type":15,"tag":34,"props":142,"children":143},{},[],{"type":15,"tag":34,"props":145,"children":146},{},[],{"type":15,"tag":34,"props":148,"children":149},{},[],{"type":15,"tag":34,"props":151,"children":152},{},[],{"type":15,"tag":34,"props":154,"children":155},{},[],{"type":15,"tag":50,"props":157,"children":158},{},[],{"type":15,"tag":23,"props":160,"children":162},{"id":161},"hint",[163],{"type":21,"value":164},"Hint",{"type":15,"tag":99,"props":166,"children":167},{},[168],{"type":21,"value":169},"Here’s an analogy: during the process of manufacturing a ballpoint pen, the cap, the body, the tail, the ink cartridge and the ballpoint are produced separately and unit tested separately. When two or more units are ready, they are assembled and integration testing is performed, for example a test to check the cap fits on the body. When the complete pen is integrated, system testing is performed to check it can be used to write like any pen should.",{"type":15,"tag":99,"props":171,"children":172},{},[173],{"type":15,"tag":174,"props":175,"children":176},"small",{},[177],{"type":21,"value":178}," correct answers: 1.C., 2.E., 3.D., 4.B., and 5.A ",{"title":7,"searchDepth":180,"depth":180,"links":181},2,[182,186,187],{"id":25,"depth":180,"text":28,"children":183},[184,185],{"id":56,"depth":10,"text":59},{"id":94,"depth":10,"text":97},{"id":129,"depth":180,"text":132},{"id":161,"depth":180,"text":164},"markdown","local_fs:modules:testing:exercise2.md","local_fs","modules/testing/exercise2.md","md",[194,228],{"_path":195,"_dir":196,"_draft":6,"_partial":6,"_locale":7,"title":197,"description":7,"body":198,"_type":188,"_id":226,"_source":190,"_file":227,"_extension":192},"/main/about","main","About",{"type":12,"children":199,"toc":222},[200,206,211,217],{"type":15,"tag":23,"props":201,"children":203},{"id":202},"about-the-research-software-support",[204],{"type":21,"value":205},"About the Research Software Support",{"type":15,"tag":99,"props":207,"children":208},{},[209],{"type":21,"value":210},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":212,"children":214},{"id":213},"target-audience",[215],{"type":21,"value":216},"Target audience",{"type":15,"tag":99,"props":218,"children":219},{},[220],{"type":21,"value":221},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":180,"depth":180,"links":223},[224,225],{"id":202,"depth":180,"text":205},{"id":213,"depth":180,"text":216},"local_fs:main:about.md","main/about.md",{"_path":229,"_dir":196,"_draft":6,"_partial":6,"_locale":7,"title":230,"description":7,"body":231,"_type":188,"_id":355,"_source":190,"_file":356,"_extension":192},"/main/contribute","Contribute",{"type":12,"children":232,"toc":350},[233,239,244,250,255],{"type":15,"tag":23,"props":234,"children":236},{"id":235},"contributing-to-the-research-software-support",[237],{"type":21,"value":238},"Contributing to the Research Software Support",{"type":15,"tag":99,"props":240,"children":241},{},[242],{"type":21,"value":243},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":54,"props":245,"children":247},{"id":246},"what-can-i-do",[248],{"type":21,"value":249},"What can I do?",{"type":15,"tag":99,"props":251,"children":252},{},[253],{"type":21,"value":254},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":30,"props":256,"children":257},{},[258,274,315,338],{"type":15,"tag":34,"props":259,"children":260},{},[261,263,272],{"type":21,"value":262},"Contribute to the content discussion in the ",{"type":15,"tag":264,"props":265,"children":269},"a",{"href":266,"rel":267},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[268],"nofollow",[270],{"type":21,"value":271},"chapter issues",{"type":21,"value":273},", e.g. by listing good resources for information.",{"type":15,"tag":34,"props":275,"children":276},{},[277,283,285],{"type":15,"tag":264,"props":278,"children":280},{"href":279},"#elements-of-a-module",[281],{"type":21,"value":282},"Author a lesson",{"type":21,"value":284},", e.g. by:\n",{"type":15,"tag":30,"props":286,"children":287},{},[288,297,306],{"type":15,"tag":34,"props":289,"children":290},{},[291],{"type":15,"tag":264,"props":292,"children":294},{"href":293},"#slides",[295],{"type":21,"value":296},"Creating slides",{"type":15,"tag":34,"props":298,"children":299},{},[300],{"type":15,"tag":264,"props":301,"children":303},{"href":302},"#exercises",[304],{"type":21,"value":305},"Designing an exercise",{"type":15,"tag":34,"props":307,"children":308},{},[309],{"type":15,"tag":264,"props":310,"children":312},{"href":311},"#online-resources",[313],{"type":21,"value":314},"Curating online resources",{"type":15,"tag":34,"props":316,"children":317},{},[318,320,327,329,336],{"type":21,"value":319},"Review a lesson module; both by looking at ",{"type":15,"tag":264,"props":321,"children":324},{"href":322,"rel":323},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[268],[325],{"type":21,"value":326},"open PRs",{"type":21,"value":328},", as well as flagging issues for improvement in the ",{"type":15,"tag":264,"props":330,"children":333},{"href":331,"rel":332},"https://esciencecenter-digital-skills.github.io/research-software-support/",[268],[334],{"type":21,"value":335},"existing content",{"type":21,"value":337},".",{"type":15,"tag":34,"props":339,"children":340},{},[341,348],{"type":15,"tag":264,"props":342,"children":345},{"href":343,"rel":344},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[268],[346],{"type":21,"value":347},"Provide feedback",{"type":21,"value":349}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":180,"depth":180,"links":351},[352],{"id":235,"depth":180,"text":238,"children":353},[354],{"id":246,"depth":10,"text":249},"local_fs:main:contribute.md","main/contribute.md",1715800938269] \ No newline at end of file +[{"data":1,"prerenderedAt":357},["Reactive",2],{"content-query-o5SfQqZsgv":3,"content-query-AT44bg6JPw":193},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":188,"_id":189,"_source":190,"_file":191,"_extension":192},"/modules/testing/exercise2","testing",false,"","Exercise 2","exercise",3,{"type":12,"children":13,"toc":179},"root",[14,22,29,49,53,60,89,92,98,104,109,114,119,124,127,133,138,156,159,165,170],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-2",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"instructions",[27],{"type":21,"value":28},"Instructions",{"type":15,"tag":30,"props":31,"children":32},"ul",{},[33,39,44],{"type":15,"tag":34,"props":35,"children":36},"li",{},[37],{"type":21,"value":38},"Match the items in Column A with their corresponding items in Column B.",{"type":15,"tag":34,"props":40,"children":41},{},[42],{"type":21,"value":43},"Write the letter of the correct match next to each item in Column A.",{"type":15,"tag":34,"props":45,"children":46},{},[47],{"type":21,"value":48},"Have fun and learn!",{"type":15,"tag":50,"props":51,"children":52},"hr",{},[],{"type":15,"tag":54,"props":55,"children":57},"h3",{"id":56},"column-a",[58],{"type":21,"value":59},"Column A",{"type":15,"tag":61,"props":62,"children":63},"ol",{},[64,69,74,79,84],{"type":15,"tag":34,"props":65,"children":66},{},[67],{"type":21,"value":68},"Smoke Test",{"type":15,"tag":34,"props":70,"children":71},{},[72],{"type":21,"value":73},"Unit Test",{"type":15,"tag":34,"props":75,"children":76},{},[77],{"type":21,"value":78},"Integration Test",{"type":15,"tag":34,"props":80,"children":81},{},[82],{"type":21,"value":83},"System Test",{"type":15,"tag":34,"props":85,"children":86},{},[87],{"type":21,"value":88},"Regression Test",{"type":15,"tag":50,"props":90,"children":91},{},[],{"type":15,"tag":54,"props":93,"children":95},{"id":94},"column-b",[96],{"type":21,"value":97},"Column B",{"type":15,"tag":99,"props":100,"children":101},"p",{},[102],{"type":21,"value":103},"A. Style of testing that focuses on retesting after changes are made. The results of tests after the changes are compared to the results before, and errors are raised if these are different. The purpose of this test is to ensure that changes (enhancements or defect fixes) to the software have not adversely affected it.",{"type":15,"tag":99,"props":105,"children":106},{},[107],{"type":21,"value":108},"B. A level of the software testing process where the complete, integrated system is tested. The purpose of this test is to evaluate whether the system as a whole gives the correct outputs for given inputs.",{"type":15,"tag":99,"props":110,"children":111},{},[112],{"type":21,"value":113},"C. Very brief initial checks that ensure the basic units required to run the software can be initialized. If these fail there is no point proceeding to additional levels of testing until they are fixed.",{"type":15,"tag":99,"props":115,"children":116},{},[117],{"type":21,"value":118},"D. A level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units.",{"type":15,"tag":99,"props":120,"children":121},{},[122],{"type":21,"value":123},"E. A level of the software testing process where individual units of a software are tested. The purpose is to ensure that each unit of the software works as expected.",{"type":15,"tag":50,"props":125,"children":126},{},[],{"type":15,"tag":23,"props":128,"children":130},{"id":129},"answers",[131],{"type":21,"value":132},"Answers",{"type":15,"tag":99,"props":134,"children":135},{},[136],{"type":21,"value":137},"(Leave this blank for now, you can fill in the answers after completing the activity)",{"type":15,"tag":61,"props":139,"children":140},{},[141,144,147,150,153],{"type":15,"tag":34,"props":142,"children":143},{},[],{"type":15,"tag":34,"props":145,"children":146},{},[],{"type":15,"tag":34,"props":148,"children":149},{},[],{"type":15,"tag":34,"props":151,"children":152},{},[],{"type":15,"tag":34,"props":154,"children":155},{},[],{"type":15,"tag":50,"props":157,"children":158},{},[],{"type":15,"tag":23,"props":160,"children":162},{"id":161},"hint",[163],{"type":21,"value":164},"Hint",{"type":15,"tag":99,"props":166,"children":167},{},[168],{"type":21,"value":169},"Here’s an analogy: during the process of manufacturing a ballpoint pen, the cap, the body, the tail, the ink cartridge and the ballpoint are produced separately and unit tested separately. When two or more units are ready, they are assembled and integration testing is performed, for example a test to check the cap fits on the body. When the complete pen is integrated, system testing is performed to check it can be used to write like any pen should.",{"type":15,"tag":99,"props":171,"children":172},{},[173],{"type":15,"tag":174,"props":175,"children":176},"small",{},[177],{"type":21,"value":178}," correct answers: 1.C., 2.E., 3.D., 4.B., and 5.A ",{"title":7,"searchDepth":180,"depth":180,"links":181},2,[182,186,187],{"id":25,"depth":180,"text":28,"children":183},[184,185],{"id":56,"depth":10,"text":59},{"id":94,"depth":10,"text":97},{"id":129,"depth":180,"text":132},{"id":161,"depth":180,"text":164},"markdown","local_fs:modules:testing:exercise2.md","local_fs","modules/testing/exercise2.md","md",[194,228],{"_path":195,"_dir":196,"_draft":6,"_partial":6,"_locale":7,"title":197,"description":7,"body":198,"_type":188,"_id":226,"_source":190,"_file":227,"_extension":192},"/main/about","main","About",{"type":12,"children":199,"toc":222},[200,206,211,217],{"type":15,"tag":23,"props":201,"children":203},{"id":202},"about-the-research-software-support",[204],{"type":21,"value":205},"About the Research Software Support",{"type":15,"tag":99,"props":207,"children":208},{},[209],{"type":21,"value":210},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":212,"children":214},{"id":213},"target-audience",[215],{"type":21,"value":216},"Target audience",{"type":15,"tag":99,"props":218,"children":219},{},[220],{"type":21,"value":221},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":180,"depth":180,"links":223},[224,225],{"id":202,"depth":180,"text":205},{"id":213,"depth":180,"text":216},"local_fs:main:about.md","main/about.md",{"_path":229,"_dir":196,"_draft":6,"_partial":6,"_locale":7,"title":230,"description":7,"body":231,"_type":188,"_id":355,"_source":190,"_file":356,"_extension":192},"/main/contribute","Contribute",{"type":12,"children":232,"toc":350},[233,239,244,250,255],{"type":15,"tag":23,"props":234,"children":236},{"id":235},"contributing-to-the-research-software-support",[237],{"type":21,"value":238},"Contributing to the Research Software Support",{"type":15,"tag":99,"props":240,"children":241},{},[242],{"type":21,"value":243},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":54,"props":245,"children":247},{"id":246},"what-can-i-do",[248],{"type":21,"value":249},"What can I do?",{"type":15,"tag":99,"props":251,"children":252},{},[253],{"type":21,"value":254},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":30,"props":256,"children":257},{},[258,274,315,338],{"type":15,"tag":34,"props":259,"children":260},{},[261,263,272],{"type":21,"value":262},"Contribute to the content discussion in the ",{"type":15,"tag":264,"props":265,"children":269},"a",{"href":266,"rel":267},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[268],"nofollow",[270],{"type":21,"value":271},"chapter issues",{"type":21,"value":273},", e.g. by listing good resources for information.",{"type":15,"tag":34,"props":275,"children":276},{},[277,283,285],{"type":15,"tag":264,"props":278,"children":280},{"href":279},"#elements-of-a-module",[281],{"type":21,"value":282},"Author a lesson",{"type":21,"value":284},", e.g. by:\n",{"type":15,"tag":30,"props":286,"children":287},{},[288,297,306],{"type":15,"tag":34,"props":289,"children":290},{},[291],{"type":15,"tag":264,"props":292,"children":294},{"href":293},"#slides",[295],{"type":21,"value":296},"Creating slides",{"type":15,"tag":34,"props":298,"children":299},{},[300],{"type":15,"tag":264,"props":301,"children":303},{"href":302},"#exercises",[304],{"type":21,"value":305},"Designing an exercise",{"type":15,"tag":34,"props":307,"children":308},{},[309],{"type":15,"tag":264,"props":310,"children":312},{"href":311},"#online-resources",[313],{"type":21,"value":314},"Curating online resources",{"type":15,"tag":34,"props":316,"children":317},{},[318,320,327,329,336],{"type":21,"value":319},"Review a lesson module; both by looking at ",{"type":15,"tag":264,"props":321,"children":324},{"href":322,"rel":323},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[268],[325],{"type":21,"value":326},"open PRs",{"type":21,"value":328},", as well as flagging issues for improvement in the ",{"type":15,"tag":264,"props":330,"children":333},{"href":331,"rel":332},"https://esciencecenter-digital-skills.github.io/research-software-support/",[268],[334],{"type":21,"value":335},"existing content",{"type":21,"value":337},".",{"type":15,"tag":34,"props":339,"children":340},{},[341,348],{"type":15,"tag":264,"props":342,"children":345},{"href":343,"rel":344},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[268],[346],{"type":21,"value":347},"Provide feedback",{"type":21,"value":349}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":180,"depth":180,"links":351},[352],{"id":235,"depth":180,"text":238,"children":353},[354],{"id":246,"depth":10,"text":249},"local_fs:main:contribute.md","main/contribute.md",1715801015463] \ No newline at end of file diff --git a/modules/testing/exercise2/index.html b/modules/testing/exercise2/index.html index b26042ed..fbf01fac 100644 --- a/modules/testing/exercise2/index.html +++ b/modules/testing/exercise2/index.html @@ -2,7 +2,7 @@ Exercise 2 - + - - - - - - - - + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - + + -

    Module: testing

    Exercise 2

    Instructions

    • Match the items in Column A with their corresponding items in Column B.
    • Write the letter of the correct match next to each item in Column A.
    • Have fun and learn!

    Column A

    1. Smoke Test
    2. Unit Test
    3. Integration Test
    4. System Test
    5. Regression Test

    Column B

    A. Style of testing that focuses on retesting after changes are made. The results of tests after the changes are compared to the results before, and errors are raised if these are different. The purpose of this test is to ensure that changes (enhancements or defect fixes) to the software have not adversely affected it.

    B. A level of the software testing process where the complete, integrated system is tested. The purpose of this test is to evaluate whether the system as a whole gives the correct outputs for given inputs.

    C. Very brief initial checks that ensure the basic units required to run the software can be initialized. If these fail there is no point proceeding to additional levels of testing until they are fixed.

    D. A level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units.

    E. A level of the software testing process where individual units of a software are tested. The purpose is to ensure that each unit of the software works as expected.


    Answers

    (Leave this blank for now, you can fill in the answers after completing the activity)


    Hint

    Here’s an analogy: during the process of manufacturing a ballpoint pen, the cap, the body, the tail, the ink cartridge and the ballpoint are produced separately and unit tested separately. When two or more units are ready, they are assembled and integration testing is performed, for example a test to check the cap fits on the body. When the complete pen is integrated, system testing is performed to check it can be used to write like any pen should.

    correct answers: 1.C., 2.E., 3.D., 4.B., and 5.A

    - \ No newline at end of file +

    Module: testing

    Exercise 2

    Instructions

    • Match the items in Column A with their corresponding items in Column B.
    • Write the letter of the correct match next to each item in Column A.
    • Have fun and learn!

    Column A

    1. Smoke Test
    2. Unit Test
    3. Integration Test
    4. System Test
    5. Regression Test

    Column B

    A. Style of testing that focuses on retesting after changes are made. The results of tests after the changes are compared to the results before, and errors are raised if these are different. The purpose of this test is to ensure that changes (enhancements or defect fixes) to the software have not adversely affected it.

    B. A level of the software testing process where the complete, integrated system is tested. The purpose of this test is to evaluate whether the system as a whole gives the correct outputs for given inputs.

    C. Very brief initial checks that ensure the basic units required to run the software can be initialized. If these fail there is no point proceeding to additional levels of testing until they are fixed.

    D. A level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units.

    E. A level of the software testing process where individual units of a software are tested. The purpose is to ensure that each unit of the software works as expected.


    Answers

    (Leave this blank for now, you can fill in the answers after completing the activity)


    Hint

    Here’s an analogy: during the process of manufacturing a ballpoint pen, the cap, the body, the tail, the ink cartridge and the ballpoint are produced separately and unit tested separately. When two or more units are ready, they are assembled and integration testing is performed, for example a test to check the cap fits on the body. When the complete pen is integrated, system testing is performed to check it can be used to write like any pen should.

    correct answers: 1.C., 2.E., 3.D., 4.B., and 5.A

    + \ No newline at end of file diff --git a/modules/testing/exercise3/_payload.json b/modules/testing/exercise3/_payload.json index 93a40ad0..bc5d8845 100644 --- a/modules/testing/exercise3/_payload.json +++ b/modules/testing/exercise3/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":265},["Reactive",2],{"content-query-9ulzB1FLqs":3,"content-query-AT44bg6JPw":98},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":93,"_id":94,"_source":95,"_file":96,"_extension":97},"/modules/testing/exercise3","testing",false,"","Exercise 3","exercise",4,{"type":12,"children":13,"toc":88},"root",[14,22,29,43,49,54,59,64,69,74,79],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-3",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"scenario",[27],{"type":21,"value":28},"Scenario",{"type":15,"tag":30,"props":31,"children":32},"p",{},[33,35,41],{"type":21,"value":34},"You are part of a research team working on a complex simulation software that models climate change. The software is developed collaboratively by a diverse group of scientists, each contributing to different modules (e.g., ocean temperature modeling, atmospheric chemistry, etc.). The team has faced issues with code integration, where new contributions occasionally break existing functionalities or cause unexpected results, leading to delays in their research. You are considering the adoption of ",{"type":15,"tag":36,"props":37,"children":38},"strong",{},[39],{"type":21,"value":40},"Continuous Integration",{"type":21,"value":42},".",{"type":15,"tag":23,"props":44,"children":46},{"id":45},"question",[47],{"type":21,"value":48},"Question",{"type":15,"tag":30,"props":50,"children":51},{},[52],{"type":21,"value":53},"Which of the following best describes Continuous Integration and its benefits for this project?",{"type":15,"tag":30,"props":55,"children":56},{},[57],{"type":21,"value":58},"a) Continuous Integration is a practice where team members work in isolation to ensure their code is perfect before integrating it once at the end of the project, helping to avoid conflicts and errors.",{"type":15,"tag":30,"props":60,"children":61},{},[62],{"type":21,"value":63},"b) Continuous Integration involves the use of specialized software to automatically translate code into multiple programming languages, making it more versatile and reducing workload.",{"type":15,"tag":30,"props":65,"children":66},{},[67],{"type":21,"value":68},"c) Continuous Integration is a development practice where team members frequently integrate their work, often several times a day, to detect and fix integration issues early, thereby improving collaboration and code quality.",{"type":15,"tag":30,"props":70,"children":71},{},[72],{"type":21,"value":73},"d) Continuous Integration is a method where team members manually review each other's code at the end of each day, ensuring that the code meets quality standards and is ready for client presentation.",{"type":15,"tag":30,"props":75,"children":76},{},[77],{"type":21,"value":78},"e) Continuous Integration refers to the continuous updating of software to incorporate user feedback and new features, ensuring the software evolves to meet user needs.",{"type":15,"tag":30,"props":80,"children":81},{},[82],{"type":15,"tag":83,"props":84,"children":85},"small",{},[86],{"type":21,"value":87}," correct answer: c) ",{"title":7,"searchDepth":89,"depth":89,"links":90},2,[91,92],{"id":25,"depth":89,"text":28},{"id":45,"depth":89,"text":48},"markdown","local_fs:modules:testing:exercise3.md","local_fs","modules/testing/exercise3.md","md",[99,133],{"_path":100,"_dir":101,"_draft":6,"_partial":6,"_locale":7,"title":102,"description":7,"body":103,"_type":93,"_id":131,"_source":95,"_file":132,"_extension":97},"/main/about","main","About",{"type":12,"children":104,"toc":127},[105,111,116,122],{"type":15,"tag":23,"props":106,"children":108},{"id":107},"about-the-research-software-support",[109],{"type":21,"value":110},"About the Research Software Support",{"type":15,"tag":30,"props":112,"children":113},{},[114],{"type":21,"value":115},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":117,"children":119},{"id":118},"target-audience",[120],{"type":21,"value":121},"Target audience",{"type":15,"tag":30,"props":123,"children":124},{},[125],{"type":21,"value":126},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":89,"depth":89,"links":128},[129,130],{"id":107,"depth":89,"text":110},{"id":118,"depth":89,"text":121},"local_fs:main:about.md","main/about.md",{"_path":134,"_dir":101,"_draft":6,"_partial":6,"_locale":7,"title":135,"description":7,"body":136,"_type":93,"_id":263,"_source":95,"_file":264,"_extension":97},"/main/contribute","Contribute",{"type":12,"children":137,"toc":257},[138,144,149,156,161],{"type":15,"tag":23,"props":139,"children":141},{"id":140},"contributing-to-the-research-software-support",[142],{"type":21,"value":143},"Contributing to the Research Software Support",{"type":15,"tag":30,"props":145,"children":146},{},[147],{"type":21,"value":148},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":150,"props":151,"children":153},"h3",{"id":152},"what-can-i-do",[154],{"type":21,"value":155},"What can I do?",{"type":15,"tag":30,"props":157,"children":158},{},[159],{"type":21,"value":160},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":162,"props":163,"children":164},"ul",{},[165,182,223,245],{"type":15,"tag":166,"props":167,"children":168},"li",{},[169,171,180],{"type":21,"value":170},"Contribute to the content discussion in the ",{"type":15,"tag":172,"props":173,"children":177},"a",{"href":174,"rel":175},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[176],"nofollow",[178],{"type":21,"value":179},"chapter issues",{"type":21,"value":181},", e.g. by listing good resources for information.",{"type":15,"tag":166,"props":183,"children":184},{},[185,191,193],{"type":15,"tag":172,"props":186,"children":188},{"href":187},"#elements-of-a-module",[189],{"type":21,"value":190},"Author a lesson",{"type":21,"value":192},", e.g. by:\n",{"type":15,"tag":162,"props":194,"children":195},{},[196,205,214],{"type":15,"tag":166,"props":197,"children":198},{},[199],{"type":15,"tag":172,"props":200,"children":202},{"href":201},"#slides",[203],{"type":21,"value":204},"Creating slides",{"type":15,"tag":166,"props":206,"children":207},{},[208],{"type":15,"tag":172,"props":209,"children":211},{"href":210},"#exercises",[212],{"type":21,"value":213},"Designing an exercise",{"type":15,"tag":166,"props":215,"children":216},{},[217],{"type":15,"tag":172,"props":218,"children":220},{"href":219},"#online-resources",[221],{"type":21,"value":222},"Curating online resources",{"type":15,"tag":166,"props":224,"children":225},{},[226,228,235,237,244],{"type":21,"value":227},"Review a lesson module; both by looking at ",{"type":15,"tag":172,"props":229,"children":232},{"href":230,"rel":231},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[176],[233],{"type":21,"value":234},"open PRs",{"type":21,"value":236},", as well as flagging issues for improvement in the ",{"type":15,"tag":172,"props":238,"children":241},{"href":239,"rel":240},"https://esciencecenter-digital-skills.github.io/research-software-support/",[176],[242],{"type":21,"value":243},"existing content",{"type":21,"value":42},{"type":15,"tag":166,"props":246,"children":247},{},[248,255],{"type":15,"tag":172,"props":249,"children":252},{"href":250,"rel":251},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[176],[253],{"type":21,"value":254},"Provide feedback",{"type":21,"value":256}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":89,"depth":89,"links":258},[259],{"id":140,"depth":89,"text":143,"children":260},[261],{"id":152,"depth":262,"text":155},3,"local_fs:main:contribute.md","main/contribute.md",1715800938283] \ No newline at end of file +[{"data":1,"prerenderedAt":265},["Reactive",2],{"content-query-9ulzB1FLqs":3,"content-query-AT44bg6JPw":98},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":93,"_id":94,"_source":95,"_file":96,"_extension":97},"/modules/testing/exercise3","testing",false,"","Exercise 3","exercise",4,{"type":12,"children":13,"toc":88},"root",[14,22,29,43,49,54,59,64,69,74,79],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"exercise-3",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":26},"h2",{"id":25},"scenario",[27],{"type":21,"value":28},"Scenario",{"type":15,"tag":30,"props":31,"children":32},"p",{},[33,35,41],{"type":21,"value":34},"You are part of a research team working on a complex simulation software that models climate change. The software is developed collaboratively by a diverse group of scientists, each contributing to different modules (e.g., ocean temperature modeling, atmospheric chemistry, etc.). The team has faced issues with code integration, where new contributions occasionally break existing functionalities or cause unexpected results, leading to delays in their research. You are considering the adoption of ",{"type":15,"tag":36,"props":37,"children":38},"strong",{},[39],{"type":21,"value":40},"Continuous Integration",{"type":21,"value":42},".",{"type":15,"tag":23,"props":44,"children":46},{"id":45},"question",[47],{"type":21,"value":48},"Question",{"type":15,"tag":30,"props":50,"children":51},{},[52],{"type":21,"value":53},"Which of the following best describes Continuous Integration and its benefits for this project?",{"type":15,"tag":30,"props":55,"children":56},{},[57],{"type":21,"value":58},"a) Continuous Integration is a practice where team members work in isolation to ensure their code is perfect before integrating it once at the end of the project, helping to avoid conflicts and errors.",{"type":15,"tag":30,"props":60,"children":61},{},[62],{"type":21,"value":63},"b) Continuous Integration involves the use of specialized software to automatically translate code into multiple programming languages, making it more versatile and reducing workload.",{"type":15,"tag":30,"props":65,"children":66},{},[67],{"type":21,"value":68},"c) Continuous Integration is a development practice where team members frequently integrate their work, often several times a day, to detect and fix integration issues early, thereby improving collaboration and code quality.",{"type":15,"tag":30,"props":70,"children":71},{},[72],{"type":21,"value":73},"d) Continuous Integration is a method where team members manually review each other's code at the end of each day, ensuring that the code meets quality standards and is ready for client presentation.",{"type":15,"tag":30,"props":75,"children":76},{},[77],{"type":21,"value":78},"e) Continuous Integration refers to the continuous updating of software to incorporate user feedback and new features, ensuring the software evolves to meet user needs.",{"type":15,"tag":30,"props":80,"children":81},{},[82],{"type":15,"tag":83,"props":84,"children":85},"small",{},[86],{"type":21,"value":87}," correct answer: c) ",{"title":7,"searchDepth":89,"depth":89,"links":90},2,[91,92],{"id":25,"depth":89,"text":28},{"id":45,"depth":89,"text":48},"markdown","local_fs:modules:testing:exercise3.md","local_fs","modules/testing/exercise3.md","md",[99,133],{"_path":100,"_dir":101,"_draft":6,"_partial":6,"_locale":7,"title":102,"description":7,"body":103,"_type":93,"_id":131,"_source":95,"_file":132,"_extension":97},"/main/about","main","About",{"type":12,"children":104,"toc":127},[105,111,116,122],{"type":15,"tag":23,"props":106,"children":108},{"id":107},"about-the-research-software-support",[109],{"type":21,"value":110},"About the Research Software Support",{"type":15,"tag":30,"props":112,"children":113},{},[114],{"type":21,"value":115},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":117,"children":119},{"id":118},"target-audience",[120],{"type":21,"value":121},"Target audience",{"type":15,"tag":30,"props":123,"children":124},{},[125],{"type":21,"value":126},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":89,"depth":89,"links":128},[129,130],{"id":107,"depth":89,"text":110},{"id":118,"depth":89,"text":121},"local_fs:main:about.md","main/about.md",{"_path":134,"_dir":101,"_draft":6,"_partial":6,"_locale":7,"title":135,"description":7,"body":136,"_type":93,"_id":263,"_source":95,"_file":264,"_extension":97},"/main/contribute","Contribute",{"type":12,"children":137,"toc":257},[138,144,149,156,161],{"type":15,"tag":23,"props":139,"children":141},{"id":140},"contributing-to-the-research-software-support",[142],{"type":21,"value":143},"Contributing to the Research Software Support",{"type":15,"tag":30,"props":145,"children":146},{},[147],{"type":21,"value":148},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":150,"props":151,"children":153},"h3",{"id":152},"what-can-i-do",[154],{"type":21,"value":155},"What can I do?",{"type":15,"tag":30,"props":157,"children":158},{},[159],{"type":21,"value":160},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":162,"props":163,"children":164},"ul",{},[165,182,223,245],{"type":15,"tag":166,"props":167,"children":168},"li",{},[169,171,180],{"type":21,"value":170},"Contribute to the content discussion in the ",{"type":15,"tag":172,"props":173,"children":177},"a",{"href":174,"rel":175},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[176],"nofollow",[178],{"type":21,"value":179},"chapter issues",{"type":21,"value":181},", e.g. by listing good resources for information.",{"type":15,"tag":166,"props":183,"children":184},{},[185,191,193],{"type":15,"tag":172,"props":186,"children":188},{"href":187},"#elements-of-a-module",[189],{"type":21,"value":190},"Author a lesson",{"type":21,"value":192},", e.g. by:\n",{"type":15,"tag":162,"props":194,"children":195},{},[196,205,214],{"type":15,"tag":166,"props":197,"children":198},{},[199],{"type":15,"tag":172,"props":200,"children":202},{"href":201},"#slides",[203],{"type":21,"value":204},"Creating slides",{"type":15,"tag":166,"props":206,"children":207},{},[208],{"type":15,"tag":172,"props":209,"children":211},{"href":210},"#exercises",[212],{"type":21,"value":213},"Designing an exercise",{"type":15,"tag":166,"props":215,"children":216},{},[217],{"type":15,"tag":172,"props":218,"children":220},{"href":219},"#online-resources",[221],{"type":21,"value":222},"Curating online resources",{"type":15,"tag":166,"props":224,"children":225},{},[226,228,235,237,244],{"type":21,"value":227},"Review a lesson module; both by looking at ",{"type":15,"tag":172,"props":229,"children":232},{"href":230,"rel":231},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[176],[233],{"type":21,"value":234},"open PRs",{"type":21,"value":236},", as well as flagging issues for improvement in the ",{"type":15,"tag":172,"props":238,"children":241},{"href":239,"rel":240},"https://esciencecenter-digital-skills.github.io/research-software-support/",[176],[242],{"type":21,"value":243},"existing content",{"type":21,"value":42},{"type":15,"tag":166,"props":246,"children":247},{},[248,255],{"type":15,"tag":172,"props":249,"children":252},{"href":250,"rel":251},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[176],[253],{"type":21,"value":254},"Provide feedback",{"type":21,"value":256}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":89,"depth":89,"links":258},[259],{"id":140,"depth":89,"text":143,"children":260},[261],{"id":152,"depth":262,"text":155},3,"local_fs:main:contribute.md","main/contribute.md",1715801015480] \ No newline at end of file diff --git a/modules/testing/exercise3/index.html b/modules/testing/exercise3/index.html index 9703b6a2..7cea23cb 100644 --- a/modules/testing/exercise3/index.html +++ b/modules/testing/exercise3/index.html @@ -2,7 +2,7 @@ Exercise 3 - + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - + + -

    Module: testing

    Exercise 3

    Scenario

    You are part of a research team working on a complex simulation software that models climate change. The software is developed collaboratively by a diverse group of scientists, each contributing to different modules (e.g., ocean temperature modeling, atmospheric chemistry, etc.). The team has faced issues with code integration, where new contributions occasionally break existing functionalities or cause unexpected results, leading to delays in their research. You are considering the adoption of Continuous Integration.

    Question

    Which of the following best describes Continuous Integration and its benefits for this project?

    a) Continuous Integration is a practice where team members work in isolation to ensure their code is perfect before integrating it once at the end of the project, helping to avoid conflicts and errors.

    b) Continuous Integration involves the use of specialized software to automatically translate code into multiple programming languages, making it more versatile and reducing workload.

    c) Continuous Integration is a development practice where team members frequently integrate their work, often several times a day, to detect and fix integration issues early, thereby improving collaboration and code quality.

    d) Continuous Integration is a method where team members manually review each other's code at the end of each day, ensuring that the code meets quality standards and is ready for client presentation.

    e) Continuous Integration refers to the continuous updating of software to incorporate user feedback and new features, ensuring the software evolves to meet user needs.

    correct answer: c)

    - \ No newline at end of file +

    Module: testing

    Exercise 3

    Scenario

    You are part of a research team working on a complex simulation software that models climate change. The software is developed collaboratively by a diverse group of scientists, each contributing to different modules (e.g., ocean temperature modeling, atmospheric chemistry, etc.). The team has faced issues with code integration, where new contributions occasionally break existing functionalities or cause unexpected results, leading to delays in their research. You are considering the adoption of Continuous Integration.

    Question

    Which of the following best describes Continuous Integration and its benefits for this project?

    a) Continuous Integration is a practice where team members work in isolation to ensure their code is perfect before integrating it once at the end of the project, helping to avoid conflicts and errors.

    b) Continuous Integration involves the use of specialized software to automatically translate code into multiple programming languages, making it more versatile and reducing workload.

    c) Continuous Integration is a development practice where team members frequently integrate their work, often several times a day, to detect and fix integration issues early, thereby improving collaboration and code quality.

    d) Continuous Integration is a method where team members manually review each other's code at the end of each day, ensuring that the code meets quality standards and is ready for client presentation.

    e) Continuous Integration refers to the continuous updating of software to incorporate user feedback and new features, ensuring the software evolves to meet user needs.

    correct answer: c)

    + \ No newline at end of file diff --git a/modules/testing/info/_payload.json b/modules/testing/info/_payload.json index 5441d91b..2d34cdd9 100644 --- a/modules/testing/info/_payload.json +++ b/modules/testing/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":217},["Reactive",2],{"content-query-XbM8qyUGeo":3,"content-query-AT44bg6JPw":49},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":44,"_id":45,"_source":46,"_file":47,"_extension":48},"/modules/testing/info","testing",false,"","Learning objectives","info",0,{"type":12,"children":13,"toc":41},"root",[14],{"type":15,"tag":16,"props":17,"children":18},"element","ul",{},[19,26,31,36],{"type":15,"tag":20,"props":21,"children":22},"li",{},[23],{"type":24,"value":25},"text","Appreciate the importance of testing software",{"type":15,"tag":20,"props":27,"children":28},{},[29],{"type":24,"value":30},"Understand the various benefits of testing",{"type":15,"tag":20,"props":32,"children":33},{},[34],{"type":24,"value":35},"Understand the types of tests and what info they convey",{"type":15,"tag":20,"props":37,"children":38},{},[39],{"type":24,"value":40},"Get familiar with the idea of continuous integration and its importance",{"title":7,"searchDepth":42,"depth":42,"links":43},2,[],"markdown","local_fs:modules:testing:info.md","local_fs","modules/testing/info.md","md",[50,86],{"_path":51,"_dir":52,"_draft":6,"_partial":6,"_locale":7,"title":53,"description":7,"body":54,"_type":44,"_id":84,"_source":46,"_file":85,"_extension":48},"/main/about","main","About",{"type":12,"children":55,"toc":80},[56,63,69,75],{"type":15,"tag":57,"props":58,"children":60},"h2",{"id":59},"about-the-research-software-support",[61],{"type":24,"value":62},"About the Research Software Support",{"type":15,"tag":64,"props":65,"children":66},"p",{},[67],{"type":24,"value":68},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":57,"props":70,"children":72},{"id":71},"target-audience",[73],{"type":24,"value":74},"Target audience",{"type":15,"tag":64,"props":76,"children":77},{},[78],{"type":24,"value":79},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":42,"depth":42,"links":81},[82,83],{"id":59,"depth":42,"text":62},{"id":71,"depth":42,"text":74},"local_fs:main:about.md","main/about.md",{"_path":87,"_dir":52,"_draft":6,"_partial":6,"_locale":7,"title":88,"description":7,"body":89,"_type":44,"_id":215,"_source":46,"_file":216,"_extension":48},"/main/contribute","Contribute",{"type":12,"children":90,"toc":209},[91,97,102,109,114],{"type":15,"tag":57,"props":92,"children":94},{"id":93},"contributing-to-the-research-software-support",[95],{"type":24,"value":96},"Contributing to the Research Software Support",{"type":15,"tag":64,"props":98,"children":99},{},[100],{"type":24,"value":101},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":103,"props":104,"children":106},"h3",{"id":105},"what-can-i-do",[107],{"type":24,"value":108},"What can I do?",{"type":15,"tag":64,"props":110,"children":111},{},[112],{"type":24,"value":113},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":16,"props":115,"children":116},{},[117,133,174,197],{"type":15,"tag":20,"props":118,"children":119},{},[120,122,131],{"type":24,"value":121},"Contribute to the content discussion in the ",{"type":15,"tag":123,"props":124,"children":128},"a",{"href":125,"rel":126},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[127],"nofollow",[129],{"type":24,"value":130},"chapter issues",{"type":24,"value":132},", e.g. by listing good resources for information.",{"type":15,"tag":20,"props":134,"children":135},{},[136,142,144],{"type":15,"tag":123,"props":137,"children":139},{"href":138},"#elements-of-a-module",[140],{"type":24,"value":141},"Author a lesson",{"type":24,"value":143},", e.g. by:\n",{"type":15,"tag":16,"props":145,"children":146},{},[147,156,165],{"type":15,"tag":20,"props":148,"children":149},{},[150],{"type":15,"tag":123,"props":151,"children":153},{"href":152},"#slides",[154],{"type":24,"value":155},"Creating slides",{"type":15,"tag":20,"props":157,"children":158},{},[159],{"type":15,"tag":123,"props":160,"children":162},{"href":161},"#exercises",[163],{"type":24,"value":164},"Designing an exercise",{"type":15,"tag":20,"props":166,"children":167},{},[168],{"type":15,"tag":123,"props":169,"children":171},{"href":170},"#online-resources",[172],{"type":24,"value":173},"Curating online resources",{"type":15,"tag":20,"props":175,"children":176},{},[177,179,186,188,195],{"type":24,"value":178},"Review a lesson module; both by looking at ",{"type":15,"tag":123,"props":180,"children":183},{"href":181,"rel":182},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[127],[184],{"type":24,"value":185},"open PRs",{"type":24,"value":187},", as well as flagging issues for improvement in the ",{"type":15,"tag":123,"props":189,"children":192},{"href":190,"rel":191},"https://esciencecenter-digital-skills.github.io/research-software-support/",[127],[193],{"type":24,"value":194},"existing content",{"type":24,"value":196},".",{"type":15,"tag":20,"props":198,"children":199},{},[200,207],{"type":15,"tag":123,"props":201,"children":204},{"href":202,"rel":203},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[127],[205],{"type":24,"value":206},"Provide feedback",{"type":24,"value":208}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":42,"depth":42,"links":210},[211],{"id":93,"depth":42,"text":96,"children":212},[213],{"id":105,"depth":214,"text":108},3,"local_fs:main:contribute.md","main/contribute.md",1715800937079] \ No newline at end of file +[{"data":1,"prerenderedAt":217},["Reactive",2],{"content-query-XbM8qyUGeo":3,"content-query-AT44bg6JPw":49},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":44,"_id":45,"_source":46,"_file":47,"_extension":48},"/modules/testing/info","testing",false,"","Learning objectives","info",0,{"type":12,"children":13,"toc":41},"root",[14],{"type":15,"tag":16,"props":17,"children":18},"element","ul",{},[19,26,31,36],{"type":15,"tag":20,"props":21,"children":22},"li",{},[23],{"type":24,"value":25},"text","Appreciate the importance of testing software",{"type":15,"tag":20,"props":27,"children":28},{},[29],{"type":24,"value":30},"Understand the various benefits of testing",{"type":15,"tag":20,"props":32,"children":33},{},[34],{"type":24,"value":35},"Understand the types of tests and what info they convey",{"type":15,"tag":20,"props":37,"children":38},{},[39],{"type":24,"value":40},"Get familiar with the idea of continuous integration and its importance",{"title":7,"searchDepth":42,"depth":42,"links":43},2,[],"markdown","local_fs:modules:testing:info.md","local_fs","modules/testing/info.md","md",[50,86],{"_path":51,"_dir":52,"_draft":6,"_partial":6,"_locale":7,"title":53,"description":7,"body":54,"_type":44,"_id":84,"_source":46,"_file":85,"_extension":48},"/main/about","main","About",{"type":12,"children":55,"toc":80},[56,63,69,75],{"type":15,"tag":57,"props":58,"children":60},"h2",{"id":59},"about-the-research-software-support",[61],{"type":24,"value":62},"About the Research Software Support",{"type":15,"tag":64,"props":65,"children":66},"p",{},[67],{"type":24,"value":68},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":57,"props":70,"children":72},{"id":71},"target-audience",[73],{"type":24,"value":74},"Target audience",{"type":15,"tag":64,"props":76,"children":77},{},[78],{"type":24,"value":79},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":42,"depth":42,"links":81},[82,83],{"id":59,"depth":42,"text":62},{"id":71,"depth":42,"text":74},"local_fs:main:about.md","main/about.md",{"_path":87,"_dir":52,"_draft":6,"_partial":6,"_locale":7,"title":88,"description":7,"body":89,"_type":44,"_id":215,"_source":46,"_file":216,"_extension":48},"/main/contribute","Contribute",{"type":12,"children":90,"toc":209},[91,97,102,109,114],{"type":15,"tag":57,"props":92,"children":94},{"id":93},"contributing-to-the-research-software-support",[95],{"type":24,"value":96},"Contributing to the Research Software Support",{"type":15,"tag":64,"props":98,"children":99},{},[100],{"type":24,"value":101},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":103,"props":104,"children":106},"h3",{"id":105},"what-can-i-do",[107],{"type":24,"value":108},"What can I do?",{"type":15,"tag":64,"props":110,"children":111},{},[112],{"type":24,"value":113},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":16,"props":115,"children":116},{},[117,133,174,197],{"type":15,"tag":20,"props":118,"children":119},{},[120,122,131],{"type":24,"value":121},"Contribute to the content discussion in the ",{"type":15,"tag":123,"props":124,"children":128},"a",{"href":125,"rel":126},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[127],"nofollow",[129],{"type":24,"value":130},"chapter issues",{"type":24,"value":132},", e.g. by listing good resources for information.",{"type":15,"tag":20,"props":134,"children":135},{},[136,142,144],{"type":15,"tag":123,"props":137,"children":139},{"href":138},"#elements-of-a-module",[140],{"type":24,"value":141},"Author a lesson",{"type":24,"value":143},", e.g. by:\n",{"type":15,"tag":16,"props":145,"children":146},{},[147,156,165],{"type":15,"tag":20,"props":148,"children":149},{},[150],{"type":15,"tag":123,"props":151,"children":153},{"href":152},"#slides",[154],{"type":24,"value":155},"Creating slides",{"type":15,"tag":20,"props":157,"children":158},{},[159],{"type":15,"tag":123,"props":160,"children":162},{"href":161},"#exercises",[163],{"type":24,"value":164},"Designing an exercise",{"type":15,"tag":20,"props":166,"children":167},{},[168],{"type":15,"tag":123,"props":169,"children":171},{"href":170},"#online-resources",[172],{"type":24,"value":173},"Curating online resources",{"type":15,"tag":20,"props":175,"children":176},{},[177,179,186,188,195],{"type":24,"value":178},"Review a lesson module; both by looking at ",{"type":15,"tag":123,"props":180,"children":183},{"href":181,"rel":182},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[127],[184],{"type":24,"value":185},"open PRs",{"type":24,"value":187},", as well as flagging issues for improvement in the ",{"type":15,"tag":123,"props":189,"children":192},{"href":190,"rel":191},"https://esciencecenter-digital-skills.github.io/research-software-support/",[127],[193],{"type":24,"value":194},"existing content",{"type":24,"value":196},".",{"type":15,"tag":20,"props":198,"children":199},{},[200,207],{"type":15,"tag":123,"props":201,"children":204},{"href":202,"rel":203},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[127],[205],{"type":24,"value":206},"Provide feedback",{"type":24,"value":208}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":42,"depth":42,"links":210},[211],{"id":93,"depth":42,"text":96,"children":212},[213],{"id":105,"depth":214,"text":108},3,"local_fs:main:contribute.md","main/contribute.md",1715801014249] \ No newline at end of file diff --git a/modules/testing/info/index.html b/modules/testing/info/index.html index 25c42273..6c8698e8 100644 --- a/modules/testing/info/index.html +++ b/modules/testing/info/index.html @@ -2,7 +2,7 @@ Learning objectives - + - - - - - - - - + + + + + + + + - - - - + + + + - - + + -

    Module: testing

    • Appreciate the importance of testing software
    • Understand the various benefits of testing
    • Understand the types of tests and what info they convey
    • Get familiar with the idea of continuous integration and its importance
    - \ No newline at end of file +

    Module: testing

    • Appreciate the importance of testing software
    • Understand the various benefits of testing
    • Understand the types of tests and what info they convey
    • Get familiar with the idea of continuous integration and its importance
    + \ No newline at end of file diff --git a/modules/testing/presentation/_payload.json b/modules/testing/presentation/_payload.json index ac74195d..84ec0f23 100644 --- a/modules/testing/presentation/_payload.json +++ b/modules/testing/presentation/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":609},["Reactive",2],{"content-query-LoMn6yLjjd":3,"content-query-AT44bg6JPw":445},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":440,"_id":441,"_source":442,"_file":443,"_extension":444},"/modules/testing/presentation","testing",false,"","Software Testing","slides",1,{"type":12,"children":13,"toc":429},"root",[14,19,26,29,35,45,63,68,72,77,82,87,90,96,114,146,150,155,160,165,170,183,186,192,222,226,231,236,241,246,251,254,260,304,308,313,318,323,328,333,336,342,350,354,359,364,367,373,380,383,389,407,410,420],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h2",{"id":22},"software-testing",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":20,"props":30,"children":32},{"id":31},"what-is-software-testing",[33],{"type":25,"value":34},"What is software testing?",{"type":15,"tag":36,"props":37,"children":38},"blockquote",{},[39],{"type":15,"tag":40,"props":41,"children":42},"p",{},[43],{"type":25,"value":44},"“Software testing is the process of evaluating and verifying that a software product or application does what it’s supposed to do. The benefits of good testing include preventing bugs and improving performance.”",{"type":15,"tag":40,"props":46,"children":47},{},[48],{"type":15,"tag":49,"props":50,"children":51},"small",{},[52,61],{"type":15,"tag":53,"props":54,"children":58},"a",{"href":55,"rel":56},"https://www.ibm.com/topics/software-testing",[57],"nofollow",[59],{"type":25,"value":60},"From IBM Featured Topics",{"type":25,"value":62}," ",{"type":15,"tag":40,"props":64,"children":65},{},[66],{"type":25,"value":67},"Note:",{"type":15,"tag":40,"props":69,"children":70},{},[71],{"type":25,"value":34},{"type":15,"tag":40,"props":73,"children":74},{},[75],{"type":25,"value":76},"Software testing is the process of evaluating and verifying that a software and its components meet specified requirements and work as expected. Its primary purpose is to identify defects, errors, flaws, or bugs early in the development process.",{"type":15,"tag":40,"props":78,"children":79},{},[80],{"type":25,"value":81},"Software testing can be done manually, where a human actively uses the software to observe for defects, or automatically, where test scripts or tools are used to execute tests.",{"type":15,"tag":40,"props":83,"children":84},{},[85],{"type":25,"value":86},"Untested software can be compared to uncalibrated experimental devices.",{"type":15,"tag":16,"props":88,"children":89},{},[],{"type":15,"tag":20,"props":91,"children":93},{"id":92},"consequences-of-not-testing-your-research-software",[94],{"type":25,"value":95},"Consequences of not testing your (research) software",{"type":15,"tag":97,"props":98,"children":99},"center",{},[100,106,110],{"type":15,"tag":101,"props":102,"children":105},"img",{"src":103,"width":104},"media/testing-motivation1.png","30%",[],{"type":15,"tag":101,"props":107,"children":109},{"src":108,"width":104},"media/testing-motivation2.png",[],{"type":15,"tag":101,"props":111,"children":113},{"src":112,"width":104},"media/testing-motivation3.png",[],{"type":15,"tag":40,"props":115,"children":116},{},[117],{"type":15,"tag":49,"props":118,"children":119},{},[120,122,129,131,137,139,145],{"type":25,"value":121}," Find the complete articles ",{"type":15,"tag":53,"props":123,"children":126},{"href":124,"rel":125},"https://www.science.org/doi/full/10.1126/science.314.5807.1856",[57],[127],{"type":25,"value":128},"here",{"type":25,"value":130},", ",{"type":15,"tag":53,"props":132,"children":135},{"href":133,"rel":134},"https://arstechnica.com/information-technology/2019/10/chemists-discover-cross-platform-python-scripts-not-so-cross-platform/",[57],[136],{"type":25,"value":128},{"type":25,"value":138},", and ",{"type":15,"tag":53,"props":140,"children":143},{"href":141,"rel":142},"https://www.wired.com/2010/11/1110mars-climate-observer-report/",[57],[144],{"type":25,"value":128},{"type":25,"value":62},{"type":15,"tag":40,"props":147,"children":148},{},[149],{"type":25,"value":67},{"type":15,"tag":40,"props":151,"children":152},{},[153],{"type":25,"value":154},"There are several examples in which the lack of proper software testings resulted in serious consequences.",{"type":15,"tag":40,"props":156,"children":157},{},[158],{"type":25,"value":159},"The first article from 2006 reports about a software flaw (a plus sign in place of a minus sign) that lead to a retraction of 5 scientific articles.",{"type":15,"tag":40,"props":161,"children":162},{},[163],{"type":25,"value":164},"In the second from 2019, researchers found that a programming error in a set of Python scripts commonly used for computational analysis of chemistry data returned varying results based on which operating system they were run on—throwing doubt on the results of more than 150 published chemistry studies.",{"type":15,"tag":40,"props":166,"children":167},{},[168],{"type":25,"value":169},"The loss of the Mars Climate Orbiter in 1999 is another prominent example of a catastrophe caused by a software error, specifically a unit conversion mistake.",{"type":15,"tag":40,"props":171,"children":172},{},[173,175,181],{"type":25,"value":174},"There is also the case of the Ariane flight V88, an European Space Agency rocket which was destroyed just 40 seconds after its launch due to a software bug; see ",{"type":15,"tag":53,"props":176,"children":179},{"href":177,"rel":178},"https://en.wikipedia.org/wiki/Ariane_flight_V88",[57],[180],{"type":25,"value":177},{"type":25,"value":182},".",{"type":15,"tag":16,"props":184,"children":185},{},[],{"type":15,"tag":20,"props":187,"children":189},{"id":188},"why-testing-your-software",[190],{"type":25,"value":191},"Why testing your software ?",{"type":15,"tag":193,"props":194,"children":195},"ul",{},[196,202,207,212,217],{"type":15,"tag":197,"props":198,"children":199},"li",{},[200],{"type":25,"value":201},"Ensure software reliability, validity, and reproducibility.",{"type":15,"tag":197,"props":203,"children":204},{},[205],{"type":25,"value":206},"Confirm correct installation and demonstrate use.",{"type":15,"tag":197,"props":208,"children":209},{},[210],{"type":25,"value":211},"Boost developer confidence for contributions and modifications.",{"type":15,"tag":197,"props":213,"children":214},{},[215],{"type":25,"value":216},"Maintain expected software functionality.",{"type":15,"tag":197,"props":218,"children":219},{},[220],{"type":25,"value":221},"Simplify and manage code complexity.",{"type":15,"tag":40,"props":223,"children":224},{},[225],{"type":25,"value":67},{"type":15,"tag":40,"props":227,"children":228},{},[229],{"type":25,"value":230},"Why testing your software is so crucial?",{"type":15,"tag":40,"props":232,"children":233},{},[234],{"type":25,"value":235},"Specifically for research software, tests are vital for ensuring the reliability, validity, and reproducibility of your scientific results.",{"type":15,"tag":40,"props":237,"children":238},{},[239],{"type":25,"value":240},"They help users by enabling them confirm that the software is installed correctly, providing usage examples.",{"type":15,"tag":40,"props":242,"children":243},{},[244],{"type":25,"value":245},"Tests also help other developers modify and contribute to your software. A good test suite gives collaborators confidence to make modifications without breaking existing functionalities.\nThey preserve the expected functionality of the software.",{"type":15,"tag":40,"props":247,"children":248},{},[249],{"type":25,"value":250},"Manage complexity: Code that is easy to test is often easier to understand and maintain.",{"type":15,"tag":16,"props":252,"children":253},{},[],{"type":15,"tag":20,"props":255,"children":257},{"id":256},"types-of-testing",[258],{"type":25,"value":259},"Types of testing",{"type":15,"tag":193,"props":261,"children":262},{},[263,274,284,294],{"type":15,"tag":197,"props":264,"children":265},{},[266,272],{"type":15,"tag":267,"props":268,"children":269},"strong",{},[270],{"type":25,"value":271},"Unit tests",{"type":25,"value":273},": Assess individual components for correctness.",{"type":15,"tag":197,"props":275,"children":276},{},[277,282],{"type":15,"tag":267,"props":278,"children":279},{},[280],{"type":25,"value":281},"Integration tests",{"type":25,"value":283},": Verify interactions between different parts of the software.",{"type":15,"tag":197,"props":285,"children":286},{},[287,292],{"type":15,"tag":267,"props":288,"children":289},{},[290],{"type":25,"value":291},"System tests",{"type":25,"value":293},": Evaluate the complete and integrated software system.",{"type":15,"tag":197,"props":295,"children":296},{},[297,302],{"type":15,"tag":267,"props":298,"children":299},{},[300],{"type":25,"value":301},"Regression tests",{"type":25,"value":303},": Ensure new changes don’t disrupt existing functionality.",{"type":15,"tag":40,"props":305,"children":306},{},[307],{"type":25,"value":67},{"type":15,"tag":40,"props":309,"children":310},{},[311],{"type":25,"value":312},"There are several types of software testing, each of which with its own purpose.",{"type":15,"tag":40,"props":314,"children":315},{},[316],{"type":25,"value":317},"In unit tests each individual unit of a software is tested separately. The purpose is to ensure that each component of the software works as expected.",{"type":15,"tag":40,"props":319,"children":320},{},[321],{"type":25,"value":322},"Integration tests are a level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units.",{"type":15,"tag":40,"props":324,"children":325},{},[326],{"type":25,"value":327},"The complete, integrated system is checked via the so-called system tests. The purpose here is to evaluate whether the software as a whole gives the correct outputs for given inputs.",{"type":15,"tag":40,"props":329,"children":330},{},[331],{"type":25,"value":332},"Finally, regression tests check for unexpected side-effects in existing features after changes.",{"type":15,"tag":16,"props":334,"children":335},{},[],{"type":15,"tag":20,"props":337,"children":339},{"id":338},"continuous-integration-and-continuous-deployment-cicd",[340],{"type":25,"value":341},"Continuous Integration and Continuous Deployment (CI/CD)",{"type":15,"tag":97,"props":343,"children":344},{},[345],{"type":15,"tag":101,"props":346,"children":349},{"src":347,"width":348},"media/cicd_scheme.png","80%",[],{"type":15,"tag":40,"props":351,"children":352},{},[353],{"type":25,"value":67},{"type":15,"tag":40,"props":355,"children":356},{},[357],{"type":25,"value":358},"Continuous Integration (CI) is a practice in software development where team members regularly integrate their individual code changes, often several times a day, into a shared remote repository. After every integration, a working version of the project is build and the software's test suite is run automatically, making it possible to identify defects, errors, flaws, or bugs introduced by changes early in the development process. This helps keep the code up-to-date and reduces the chances of major issues when combining everyone's work.",{"type":15,"tag":40,"props":360,"children":361},{},[362],{"type":25,"value":363},"Continuous deployment (CD) is the next step after CI in the CI/CD pipeline shown in the figure. CD is the practice of automatically deploying every working version of the project that passes the automated testing phase to its end-users.",{"type":15,"tag":16,"props":365,"children":366},{},[],{"type":15,"tag":20,"props":368,"children":370},{"id":369},"benefits-of-continuous-integration",[371],{"type":25,"value":372},"Benefits of continuous integration",{"type":15,"tag":97,"props":374,"children":375},{},[376],{"type":15,"tag":101,"props":377,"children":379},{"src":378,"width":348},"media/benefits_of_ci.png",[],{"type":15,"tag":16,"props":381,"children":382},{},[],{"type":15,"tag":20,"props":384,"children":386},{"id":385},"take-home-messages",[387],{"type":25,"value":388},"Take home messages",{"type":15,"tag":193,"props":390,"children":391},{},[392,397,402],{"type":15,"tag":197,"props":393,"children":394},{},[395],{"type":25,"value":396},"Software testing is key for quality, reliability, and reproducibility",{"type":15,"tag":197,"props":398,"children":399},{},[400],{"type":25,"value":401},"Unit tests verify individual components, integration tests check component interactions",{"type":15,"tag":197,"props":403,"children":404},{},[405],{"type":25,"value":406},"CI/CD streamline development and enhance deployment efficiency.",{"type":15,"tag":16,"props":408,"children":409},{},[],{"type":15,"tag":40,"props":411,"children":412},{},[413],{"type":15,"tag":53,"props":414,"children":417},{"href":415,"rel":416},"http://www.esciencecenter.nl",[57],[418],{"type":25,"value":419},"www.esciencecenter.nl",{"type":15,"tag":40,"props":421,"children":422},{},[423],{"type":15,"tag":53,"props":424,"children":426},{"href":425},"mailto:info@esciencecenter.nl",[427],{"type":25,"value":428},"info@esciencecenter.nl",{"title":7,"searchDepth":430,"depth":430,"links":431},2,[432,433,434,435,436,437,438,439],{"id":22,"depth":430,"text":8},{"id":31,"depth":430,"text":34},{"id":92,"depth":430,"text":95},{"id":188,"depth":430,"text":191},{"id":256,"depth":430,"text":259},{"id":338,"depth":430,"text":341},{"id":369,"depth":430,"text":372},{"id":385,"depth":430,"text":388},"markdown","local_fs:modules:testing:presentation.pmd","local_fs","modules/testing/presentation.pmd","pmd",[446,481],{"_path":447,"_dir":448,"_draft":6,"_partial":6,"_locale":7,"title":449,"description":7,"body":450,"_type":440,"_id":478,"_source":442,"_file":479,"_extension":480},"/main/about","main","About",{"type":12,"children":451,"toc":474},[452,458,463,469],{"type":15,"tag":20,"props":453,"children":455},{"id":454},"about-the-research-software-support",[456],{"type":25,"value":457},"About the Research Software Support",{"type":15,"tag":40,"props":459,"children":460},{},[461],{"type":25,"value":462},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":20,"props":464,"children":466},{"id":465},"target-audience",[467],{"type":25,"value":468},"Target audience",{"type":15,"tag":40,"props":470,"children":471},{},[472],{"type":25,"value":473},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":430,"depth":430,"links":475},[476,477],{"id":454,"depth":430,"text":457},{"id":465,"depth":430,"text":468},"local_fs:main:about.md","main/about.md","md",{"_path":482,"_dir":448,"_draft":6,"_partial":6,"_locale":7,"title":483,"description":7,"body":484,"_type":440,"_id":607,"_source":442,"_file":608,"_extension":480},"/main/contribute","Contribute",{"type":12,"children":485,"toc":601},[486,492,497,504,509],{"type":15,"tag":20,"props":487,"children":489},{"id":488},"contributing-to-the-research-software-support",[490],{"type":25,"value":491},"Contributing to the Research Software Support",{"type":15,"tag":40,"props":493,"children":494},{},[495],{"type":25,"value":496},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":498,"props":499,"children":501},"h3",{"id":500},"what-can-i-do",[502],{"type":25,"value":503},"What can I do?",{"type":15,"tag":40,"props":505,"children":506},{},[507],{"type":25,"value":508},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":193,"props":510,"children":511},{},[512,526,567,589],{"type":15,"tag":197,"props":513,"children":514},{},[515,517,524],{"type":25,"value":516},"Contribute to the content discussion in the ",{"type":15,"tag":53,"props":518,"children":521},{"href":519,"rel":520},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[57],[522],{"type":25,"value":523},"chapter issues",{"type":25,"value":525},", e.g. by listing good resources for information.",{"type":15,"tag":197,"props":527,"children":528},{},[529,535,537],{"type":15,"tag":53,"props":530,"children":532},{"href":531},"#elements-of-a-module",[533],{"type":25,"value":534},"Author a lesson",{"type":25,"value":536},", e.g. by:\n",{"type":15,"tag":193,"props":538,"children":539},{},[540,549,558],{"type":15,"tag":197,"props":541,"children":542},{},[543],{"type":15,"tag":53,"props":544,"children":546},{"href":545},"#slides",[547],{"type":25,"value":548},"Creating slides",{"type":15,"tag":197,"props":550,"children":551},{},[552],{"type":15,"tag":53,"props":553,"children":555},{"href":554},"#exercises",[556],{"type":25,"value":557},"Designing an exercise",{"type":15,"tag":197,"props":559,"children":560},{},[561],{"type":15,"tag":53,"props":562,"children":564},{"href":563},"#online-resources",[565],{"type":25,"value":566},"Curating online resources",{"type":15,"tag":197,"props":568,"children":569},{},[570,572,579,581,588],{"type":25,"value":571},"Review a lesson module; both by looking at ",{"type":15,"tag":53,"props":573,"children":576},{"href":574,"rel":575},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[57],[577],{"type":25,"value":578},"open PRs",{"type":25,"value":580},", as well as flagging issues for improvement in the ",{"type":15,"tag":53,"props":582,"children":585},{"href":583,"rel":584},"https://esciencecenter-digital-skills.github.io/research-software-support/",[57],[586],{"type":25,"value":587},"existing content",{"type":25,"value":182},{"type":15,"tag":197,"props":590,"children":591},{},[592,599],{"type":15,"tag":53,"props":593,"children":596},{"href":594,"rel":595},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[57],[597],{"type":25,"value":598},"Provide feedback",{"type":25,"value":600}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":430,"depth":430,"links":602},[603],{"id":488,"depth":430,"text":491,"children":604},[605],{"id":500,"depth":606,"text":503},3,"local_fs:main:contribute.md","main/contribute.md",1715800938256] \ No newline at end of file +[{"data":1,"prerenderedAt":609},["Reactive",2],{"content-query-LoMn6yLjjd":3,"content-query-AT44bg6JPw":445},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":440,"_id":441,"_source":442,"_file":443,"_extension":444},"/modules/testing/presentation","testing",false,"","Software Testing","slides",1,{"type":12,"children":13,"toc":429},"root",[14,19,26,29,35,45,63,68,72,77,82,87,90,96,114,146,150,155,160,165,170,183,186,192,222,226,231,236,241,246,251,254,260,304,308,313,318,323,328,333,336,342,350,354,359,364,367,373,380,383,389,407,410,420],{"type":15,"tag":16,"props":17,"children":18},"element","hr",{},[],{"type":15,"tag":20,"props":21,"children":23},"h2",{"id":22},"software-testing",[24],{"type":25,"value":8},"text",{"type":15,"tag":16,"props":27,"children":28},{},[],{"type":15,"tag":20,"props":30,"children":32},{"id":31},"what-is-software-testing",[33],{"type":25,"value":34},"What is software testing?",{"type":15,"tag":36,"props":37,"children":38},"blockquote",{},[39],{"type":15,"tag":40,"props":41,"children":42},"p",{},[43],{"type":25,"value":44},"“Software testing is the process of evaluating and verifying that a software product or application does what it’s supposed to do. The benefits of good testing include preventing bugs and improving performance.”",{"type":15,"tag":40,"props":46,"children":47},{},[48],{"type":15,"tag":49,"props":50,"children":51},"small",{},[52,61],{"type":15,"tag":53,"props":54,"children":58},"a",{"href":55,"rel":56},"https://www.ibm.com/topics/software-testing",[57],"nofollow",[59],{"type":25,"value":60},"From IBM Featured Topics",{"type":25,"value":62}," ",{"type":15,"tag":40,"props":64,"children":65},{},[66],{"type":25,"value":67},"Note:",{"type":15,"tag":40,"props":69,"children":70},{},[71],{"type":25,"value":34},{"type":15,"tag":40,"props":73,"children":74},{},[75],{"type":25,"value":76},"Software testing is the process of evaluating and verifying that a software and its components meet specified requirements and work as expected. Its primary purpose is to identify defects, errors, flaws, or bugs early in the development process.",{"type":15,"tag":40,"props":78,"children":79},{},[80],{"type":25,"value":81},"Software testing can be done manually, where a human actively uses the software to observe for defects, or automatically, where test scripts or tools are used to execute tests.",{"type":15,"tag":40,"props":83,"children":84},{},[85],{"type":25,"value":86},"Untested software can be compared to uncalibrated experimental devices.",{"type":15,"tag":16,"props":88,"children":89},{},[],{"type":15,"tag":20,"props":91,"children":93},{"id":92},"consequences-of-not-testing-your-research-software",[94],{"type":25,"value":95},"Consequences of not testing your (research) software",{"type":15,"tag":97,"props":98,"children":99},"center",{},[100,106,110],{"type":15,"tag":101,"props":102,"children":105},"img",{"src":103,"width":104},"media/testing-motivation1.png","30%",[],{"type":15,"tag":101,"props":107,"children":109},{"src":108,"width":104},"media/testing-motivation2.png",[],{"type":15,"tag":101,"props":111,"children":113},{"src":112,"width":104},"media/testing-motivation3.png",[],{"type":15,"tag":40,"props":115,"children":116},{},[117],{"type":15,"tag":49,"props":118,"children":119},{},[120,122,129,131,137,139,145],{"type":25,"value":121}," Find the complete articles ",{"type":15,"tag":53,"props":123,"children":126},{"href":124,"rel":125},"https://www.science.org/doi/full/10.1126/science.314.5807.1856",[57],[127],{"type":25,"value":128},"here",{"type":25,"value":130},", ",{"type":15,"tag":53,"props":132,"children":135},{"href":133,"rel":134},"https://arstechnica.com/information-technology/2019/10/chemists-discover-cross-platform-python-scripts-not-so-cross-platform/",[57],[136],{"type":25,"value":128},{"type":25,"value":138},", and ",{"type":15,"tag":53,"props":140,"children":143},{"href":141,"rel":142},"https://www.wired.com/2010/11/1110mars-climate-observer-report/",[57],[144],{"type":25,"value":128},{"type":25,"value":62},{"type":15,"tag":40,"props":147,"children":148},{},[149],{"type":25,"value":67},{"type":15,"tag":40,"props":151,"children":152},{},[153],{"type":25,"value":154},"There are several examples in which the lack of proper software testings resulted in serious consequences.",{"type":15,"tag":40,"props":156,"children":157},{},[158],{"type":25,"value":159},"The first article from 2006 reports about a software flaw (a plus sign in place of a minus sign) that lead to a retraction of 5 scientific articles.",{"type":15,"tag":40,"props":161,"children":162},{},[163],{"type":25,"value":164},"In the second from 2019, researchers found that a programming error in a set of Python scripts commonly used for computational analysis of chemistry data returned varying results based on which operating system they were run on—throwing doubt on the results of more than 150 published chemistry studies.",{"type":15,"tag":40,"props":166,"children":167},{},[168],{"type":25,"value":169},"The loss of the Mars Climate Orbiter in 1999 is another prominent example of a catastrophe caused by a software error, specifically a unit conversion mistake.",{"type":15,"tag":40,"props":171,"children":172},{},[173,175,181],{"type":25,"value":174},"There is also the case of the Ariane flight V88, an European Space Agency rocket which was destroyed just 40 seconds after its launch due to a software bug; see ",{"type":15,"tag":53,"props":176,"children":179},{"href":177,"rel":178},"https://en.wikipedia.org/wiki/Ariane_flight_V88",[57],[180],{"type":25,"value":177},{"type":25,"value":182},".",{"type":15,"tag":16,"props":184,"children":185},{},[],{"type":15,"tag":20,"props":187,"children":189},{"id":188},"why-testing-your-software",[190],{"type":25,"value":191},"Why testing your software ?",{"type":15,"tag":193,"props":194,"children":195},"ul",{},[196,202,207,212,217],{"type":15,"tag":197,"props":198,"children":199},"li",{},[200],{"type":25,"value":201},"Ensure software reliability, validity, and reproducibility.",{"type":15,"tag":197,"props":203,"children":204},{},[205],{"type":25,"value":206},"Confirm correct installation and demonstrate use.",{"type":15,"tag":197,"props":208,"children":209},{},[210],{"type":25,"value":211},"Boost developer confidence for contributions and modifications.",{"type":15,"tag":197,"props":213,"children":214},{},[215],{"type":25,"value":216},"Maintain expected software functionality.",{"type":15,"tag":197,"props":218,"children":219},{},[220],{"type":25,"value":221},"Simplify and manage code complexity.",{"type":15,"tag":40,"props":223,"children":224},{},[225],{"type":25,"value":67},{"type":15,"tag":40,"props":227,"children":228},{},[229],{"type":25,"value":230},"Why testing your software is so crucial?",{"type":15,"tag":40,"props":232,"children":233},{},[234],{"type":25,"value":235},"Specifically for research software, tests are vital for ensuring the reliability, validity, and reproducibility of your scientific results.",{"type":15,"tag":40,"props":237,"children":238},{},[239],{"type":25,"value":240},"They help users by enabling them confirm that the software is installed correctly, providing usage examples.",{"type":15,"tag":40,"props":242,"children":243},{},[244],{"type":25,"value":245},"Tests also help other developers modify and contribute to your software. A good test suite gives collaborators confidence to make modifications without breaking existing functionalities.\nThey preserve the expected functionality of the software.",{"type":15,"tag":40,"props":247,"children":248},{},[249],{"type":25,"value":250},"Manage complexity: Code that is easy to test is often easier to understand and maintain.",{"type":15,"tag":16,"props":252,"children":253},{},[],{"type":15,"tag":20,"props":255,"children":257},{"id":256},"types-of-testing",[258],{"type":25,"value":259},"Types of testing",{"type":15,"tag":193,"props":261,"children":262},{},[263,274,284,294],{"type":15,"tag":197,"props":264,"children":265},{},[266,272],{"type":15,"tag":267,"props":268,"children":269},"strong",{},[270],{"type":25,"value":271},"Unit tests",{"type":25,"value":273},": Assess individual components for correctness.",{"type":15,"tag":197,"props":275,"children":276},{},[277,282],{"type":15,"tag":267,"props":278,"children":279},{},[280],{"type":25,"value":281},"Integration tests",{"type":25,"value":283},": Verify interactions between different parts of the software.",{"type":15,"tag":197,"props":285,"children":286},{},[287,292],{"type":15,"tag":267,"props":288,"children":289},{},[290],{"type":25,"value":291},"System tests",{"type":25,"value":293},": Evaluate the complete and integrated software system.",{"type":15,"tag":197,"props":295,"children":296},{},[297,302],{"type":15,"tag":267,"props":298,"children":299},{},[300],{"type":25,"value":301},"Regression tests",{"type":25,"value":303},": Ensure new changes don’t disrupt existing functionality.",{"type":15,"tag":40,"props":305,"children":306},{},[307],{"type":25,"value":67},{"type":15,"tag":40,"props":309,"children":310},{},[311],{"type":25,"value":312},"There are several types of software testing, each of which with its own purpose.",{"type":15,"tag":40,"props":314,"children":315},{},[316],{"type":25,"value":317},"In unit tests each individual unit of a software is tested separately. The purpose is to ensure that each component of the software works as expected.",{"type":15,"tag":40,"props":319,"children":320},{},[321],{"type":25,"value":322},"Integration tests are a level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units.",{"type":15,"tag":40,"props":324,"children":325},{},[326],{"type":25,"value":327},"The complete, integrated system is checked via the so-called system tests. The purpose here is to evaluate whether the software as a whole gives the correct outputs for given inputs.",{"type":15,"tag":40,"props":329,"children":330},{},[331],{"type":25,"value":332},"Finally, regression tests check for unexpected side-effects in existing features after changes.",{"type":15,"tag":16,"props":334,"children":335},{},[],{"type":15,"tag":20,"props":337,"children":339},{"id":338},"continuous-integration-and-continuous-deployment-cicd",[340],{"type":25,"value":341},"Continuous Integration and Continuous Deployment (CI/CD)",{"type":15,"tag":97,"props":343,"children":344},{},[345],{"type":15,"tag":101,"props":346,"children":349},{"src":347,"width":348},"media/cicd_scheme.png","80%",[],{"type":15,"tag":40,"props":351,"children":352},{},[353],{"type":25,"value":67},{"type":15,"tag":40,"props":355,"children":356},{},[357],{"type":25,"value":358},"Continuous Integration (CI) is a practice in software development where team members regularly integrate their individual code changes, often several times a day, into a shared remote repository. After every integration, a working version of the project is build and the software's test suite is run automatically, making it possible to identify defects, errors, flaws, or bugs introduced by changes early in the development process. This helps keep the code up-to-date and reduces the chances of major issues when combining everyone's work.",{"type":15,"tag":40,"props":360,"children":361},{},[362],{"type":25,"value":363},"Continuous deployment (CD) is the next step after CI in the CI/CD pipeline shown in the figure. CD is the practice of automatically deploying every working version of the project that passes the automated testing phase to its end-users.",{"type":15,"tag":16,"props":365,"children":366},{},[],{"type":15,"tag":20,"props":368,"children":370},{"id":369},"benefits-of-continuous-integration",[371],{"type":25,"value":372},"Benefits of continuous integration",{"type":15,"tag":97,"props":374,"children":375},{},[376],{"type":15,"tag":101,"props":377,"children":379},{"src":378,"width":348},"media/benefits_of_ci.png",[],{"type":15,"tag":16,"props":381,"children":382},{},[],{"type":15,"tag":20,"props":384,"children":386},{"id":385},"take-home-messages",[387],{"type":25,"value":388},"Take home messages",{"type":15,"tag":193,"props":390,"children":391},{},[392,397,402],{"type":15,"tag":197,"props":393,"children":394},{},[395],{"type":25,"value":396},"Software testing is key for quality, reliability, and reproducibility",{"type":15,"tag":197,"props":398,"children":399},{},[400],{"type":25,"value":401},"Unit tests verify individual components, integration tests check component interactions",{"type":15,"tag":197,"props":403,"children":404},{},[405],{"type":25,"value":406},"CI/CD streamline development and enhance deployment efficiency.",{"type":15,"tag":16,"props":408,"children":409},{},[],{"type":15,"tag":40,"props":411,"children":412},{},[413],{"type":15,"tag":53,"props":414,"children":417},{"href":415,"rel":416},"http://www.esciencecenter.nl",[57],[418],{"type":25,"value":419},"www.esciencecenter.nl",{"type":15,"tag":40,"props":421,"children":422},{},[423],{"type":15,"tag":53,"props":424,"children":426},{"href":425},"mailto:info@esciencecenter.nl",[427],{"type":25,"value":428},"info@esciencecenter.nl",{"title":7,"searchDepth":430,"depth":430,"links":431},2,[432,433,434,435,436,437,438,439],{"id":22,"depth":430,"text":8},{"id":31,"depth":430,"text":34},{"id":92,"depth":430,"text":95},{"id":188,"depth":430,"text":191},{"id":256,"depth":430,"text":259},{"id":338,"depth":430,"text":341},{"id":369,"depth":430,"text":372},{"id":385,"depth":430,"text":388},"markdown","local_fs:modules:testing:presentation.pmd","local_fs","modules/testing/presentation.pmd","pmd",[446,481],{"_path":447,"_dir":448,"_draft":6,"_partial":6,"_locale":7,"title":449,"description":7,"body":450,"_type":440,"_id":478,"_source":442,"_file":479,"_extension":480},"/main/about","main","About",{"type":12,"children":451,"toc":474},[452,458,463,469],{"type":15,"tag":20,"props":453,"children":455},{"id":454},"about-the-research-software-support",[456],{"type":25,"value":457},"About the Research Software Support",{"type":15,"tag":40,"props":459,"children":460},{},[461],{"type":25,"value":462},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":20,"props":464,"children":466},{"id":465},"target-audience",[467],{"type":25,"value":468},"Target audience",{"type":15,"tag":40,"props":470,"children":471},{},[472],{"type":25,"value":473},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":430,"depth":430,"links":475},[476,477],{"id":454,"depth":430,"text":457},{"id":465,"depth":430,"text":468},"local_fs:main:about.md","main/about.md","md",{"_path":482,"_dir":448,"_draft":6,"_partial":6,"_locale":7,"title":483,"description":7,"body":484,"_type":440,"_id":607,"_source":442,"_file":608,"_extension":480},"/main/contribute","Contribute",{"type":12,"children":485,"toc":601},[486,492,497,504,509],{"type":15,"tag":20,"props":487,"children":489},{"id":488},"contributing-to-the-research-software-support",[490],{"type":25,"value":491},"Contributing to the Research Software Support",{"type":15,"tag":40,"props":493,"children":494},{},[495],{"type":25,"value":496},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":498,"props":499,"children":501},"h3",{"id":500},"what-can-i-do",[502],{"type":25,"value":503},"What can I do?",{"type":15,"tag":40,"props":505,"children":506},{},[507],{"type":25,"value":508},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":193,"props":510,"children":511},{},[512,526,567,589],{"type":15,"tag":197,"props":513,"children":514},{},[515,517,524],{"type":25,"value":516},"Contribute to the content discussion in the ",{"type":15,"tag":53,"props":518,"children":521},{"href":519,"rel":520},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[57],[522],{"type":25,"value":523},"chapter issues",{"type":25,"value":525},", e.g. by listing good resources for information.",{"type":15,"tag":197,"props":527,"children":528},{},[529,535,537],{"type":15,"tag":53,"props":530,"children":532},{"href":531},"#elements-of-a-module",[533],{"type":25,"value":534},"Author a lesson",{"type":25,"value":536},", e.g. by:\n",{"type":15,"tag":193,"props":538,"children":539},{},[540,549,558],{"type":15,"tag":197,"props":541,"children":542},{},[543],{"type":15,"tag":53,"props":544,"children":546},{"href":545},"#slides",[547],{"type":25,"value":548},"Creating slides",{"type":15,"tag":197,"props":550,"children":551},{},[552],{"type":15,"tag":53,"props":553,"children":555},{"href":554},"#exercises",[556],{"type":25,"value":557},"Designing an exercise",{"type":15,"tag":197,"props":559,"children":560},{},[561],{"type":15,"tag":53,"props":562,"children":564},{"href":563},"#online-resources",[565],{"type":25,"value":566},"Curating online resources",{"type":15,"tag":197,"props":568,"children":569},{},[570,572,579,581,588],{"type":25,"value":571},"Review a lesson module; both by looking at ",{"type":15,"tag":53,"props":573,"children":576},{"href":574,"rel":575},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[57],[577],{"type":25,"value":578},"open PRs",{"type":25,"value":580},", as well as flagging issues for improvement in the ",{"type":15,"tag":53,"props":582,"children":585},{"href":583,"rel":584},"https://esciencecenter-digital-skills.github.io/research-software-support/",[57],[586],{"type":25,"value":587},"existing content",{"type":25,"value":182},{"type":15,"tag":197,"props":590,"children":591},{},[592,599],{"type":15,"tag":53,"props":593,"children":596},{"href":594,"rel":595},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[57],[597],{"type":25,"value":598},"Provide feedback",{"type":25,"value":600}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":430,"depth":430,"links":602},[603],{"id":488,"depth":430,"text":491,"children":604},[605],{"id":500,"depth":606,"text":503},3,"local_fs:main:contribute.md","main/contribute.md",1715801015451] \ No newline at end of file diff --git a/modules/testing/presentation/index.html b/modules/testing/presentation/index.html index a785879d..5f765b01 100644 --- a/modules/testing/presentation/index.html +++ b/modules/testing/presentation/index.html @@ -2,7 +2,7 @@ Software Testing - + - - - - - - - - + + + + + + + + - + - - + + -
    - \ No newline at end of file +
    + \ No newline at end of file diff --git a/modules/testing/reading/_payload.json b/modules/testing/reading/_payload.json index fb533c1a..81aacff3 100644 --- a/modules/testing/reading/_payload.json +++ b/modules/testing/reading/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":357},["Reactive",2],{"content-query-4AG5D2tulF":3,"content-query-AT44bg6JPw":194},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":189,"_id":190,"_source":191,"_file":192,"_extension":193},"/modules/testing/reading","testing",false,"","Reading material","reading",5,{"type":12,"children":13,"toc":174},"root",[14,22,28,34,41,57,63,75,81,94,100,112,118,123,128,140,145,156,162],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"reading-material",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":25},"h2",{"id":5},[26],{"type":21,"value":27},"Testing",{"type":15,"tag":29,"props":30,"children":31},"p",{},[32],{"type":21,"value":33},"Follow the links below to read more about software testing.",{"type":15,"tag":35,"props":36,"children":38},"h3",{"id":37},"the-turing-way",[39],{"type":21,"value":40},"The Turing Way",{"type":15,"tag":29,"props":42,"children":43},{},[44,46,55],{"type":21,"value":45},"Read in the Turing Way about ",{"type":15,"tag":47,"props":48,"children":52},"a",{"href":49,"rel":50},"https://the-turing-way.netlify.app/reproducible-research/testing",[51],"nofollow",[53],{"type":21,"value":54},"Code Testing",{"type":21,"value":56},".",{"type":15,"tag":35,"props":58,"children":60},{"id":59},"code-refinery",[61],{"type":21,"value":62},"Code Refinery",{"type":15,"tag":29,"props":64,"children":65},{},[66,68],{"type":21,"value":67},"Read in CodeRefinery about ",{"type":15,"tag":47,"props":69,"children":72},{"href":70,"rel":71},"https://coderefinery.github.io/testing/motivation/",[51],[73],{"type":21,"value":74},"Automated testing",{"type":15,"tag":35,"props":76,"children":78},{"id":77},"ibm",[79],{"type":21,"value":80},"IBM",{"type":15,"tag":29,"props":82,"children":83},{},[84,86,93],{"type":21,"value":85},"Link to an ",{"type":15,"tag":47,"props":87,"children":90},{"href":88,"rel":89},"https://www.ibm.com/topics/software-testing",[51],[91],{"type":21,"value":92},"IBM article",{"type":21,"value":56},{"type":15,"tag":35,"props":95,"children":97},{"id":96},"arxiv",[98],{"type":21,"value":99},"arXiv",{"type":15,"tag":29,"props":101,"children":102},{},[103,105],{"type":21,"value":104},"Read this interesting article about ",{"type":15,"tag":47,"props":106,"children":109},{"href":107,"rel":108},"https://arxiv.org/abs/2205.15982",[51],[110],{"type":21,"value":111},"Testing Research Software",{"type":15,"tag":23,"props":113,"children":115},{"id":114},"cicd",[116],{"type":21,"value":117},"CI/CD",{"type":15,"tag":29,"props":119,"children":120},{},[121],{"type":21,"value":122},"Follow the links below to read more about CI/CD.",{"type":15,"tag":35,"props":124,"children":126},{"id":125},"the-turing-way-1",[127],{"type":21,"value":40},{"type":15,"tag":29,"props":129,"children":130},{},[131,132,139],{"type":21,"value":45},{"type":15,"tag":47,"props":133,"children":136},{"href":134,"rel":135},"https://the-turing-way.netlify.app/reproducible-research/ci",[51],[137],{"type":21,"value":138},"Continuous Integration",{"type":21,"value":56},{"type":15,"tag":35,"props":141,"children":143},{"id":142},"code-refinery-1",[144],{"type":21,"value":62},{"type":15,"tag":29,"props":146,"children":147},{},[148,149],{"type":21,"value":67},{"type":15,"tag":47,"props":150,"children":153},{"href":151,"rel":152},"https://coderefinery.github.io/testing/continuous-integration/",[51],[154],{"type":21,"value":155},"Continuous integration",{"type":15,"tag":35,"props":157,"children":159},{"id":158},"bytebytego-newsletter",[160],{"type":21,"value":161},"ByteByteGo Newsletter",{"type":15,"tag":29,"props":163,"children":164},{},[165,167],{"type":21,"value":166},"Read in ByteByteGo newsletter about ",{"type":15,"tag":47,"props":168,"children":171},{"href":169,"rel":170},"https://blog.bytebytego.com/p/a-crash-course-in-cicd",[51],[172],{"type":21,"value":173},"A Crash Course in CI/CD",{"title":7,"searchDepth":175,"depth":175,"links":176},2,[177,184],{"id":5,"depth":175,"text":27,"children":178},[179,181,182,183],{"id":37,"depth":180,"text":40},3,{"id":59,"depth":180,"text":62},{"id":77,"depth":180,"text":80},{"id":96,"depth":180,"text":99},{"id":114,"depth":175,"text":117,"children":185},[186,187,188],{"id":125,"depth":180,"text":40},{"id":142,"depth":180,"text":62},{"id":158,"depth":180,"text":161},"markdown","local_fs:modules:testing:reading.md","local_fs","modules/testing/reading.md","md",[195,229],{"_path":196,"_dir":197,"_draft":6,"_partial":6,"_locale":7,"title":198,"description":7,"body":199,"_type":189,"_id":227,"_source":191,"_file":228,"_extension":193},"/main/about","main","About",{"type":12,"children":200,"toc":223},[201,207,212,218],{"type":15,"tag":23,"props":202,"children":204},{"id":203},"about-the-research-software-support",[205],{"type":21,"value":206},"About the Research Software Support",{"type":15,"tag":29,"props":208,"children":209},{},[210],{"type":21,"value":211},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":213,"children":215},{"id":214},"target-audience",[216],{"type":21,"value":217},"Target audience",{"type":15,"tag":29,"props":219,"children":220},{},[221],{"type":21,"value":222},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":175,"depth":175,"links":224},[225,226],{"id":203,"depth":175,"text":206},{"id":214,"depth":175,"text":217},"local_fs:main:about.md","main/about.md",{"_path":230,"_dir":197,"_draft":6,"_partial":6,"_locale":7,"title":231,"description":7,"body":232,"_type":189,"_id":355,"_source":191,"_file":356,"_extension":193},"/main/contribute","Contribute",{"type":12,"children":233,"toc":350},[234,240,245,251,256],{"type":15,"tag":23,"props":235,"children":237},{"id":236},"contributing-to-the-research-software-support",[238],{"type":21,"value":239},"Contributing to the Research Software Support",{"type":15,"tag":29,"props":241,"children":242},{},[243],{"type":21,"value":244},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":35,"props":246,"children":248},{"id":247},"what-can-i-do",[249],{"type":21,"value":250},"What can I do?",{"type":15,"tag":29,"props":252,"children":253},{},[254],{"type":21,"value":255},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":257,"props":258,"children":259},"ul",{},[260,275,316,338],{"type":15,"tag":261,"props":262,"children":263},"li",{},[264,266,273],{"type":21,"value":265},"Contribute to the content discussion in the ",{"type":15,"tag":47,"props":267,"children":270},{"href":268,"rel":269},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[51],[271],{"type":21,"value":272},"chapter issues",{"type":21,"value":274},", e.g. by listing good resources for information.",{"type":15,"tag":261,"props":276,"children":277},{},[278,284,286],{"type":15,"tag":47,"props":279,"children":281},{"href":280},"#elements-of-a-module",[282],{"type":21,"value":283},"Author a lesson",{"type":21,"value":285},", e.g. by:\n",{"type":15,"tag":257,"props":287,"children":288},{},[289,298,307],{"type":15,"tag":261,"props":290,"children":291},{},[292],{"type":15,"tag":47,"props":293,"children":295},{"href":294},"#slides",[296],{"type":21,"value":297},"Creating slides",{"type":15,"tag":261,"props":299,"children":300},{},[301],{"type":15,"tag":47,"props":302,"children":304},{"href":303},"#exercises",[305],{"type":21,"value":306},"Designing an exercise",{"type":15,"tag":261,"props":308,"children":309},{},[310],{"type":15,"tag":47,"props":311,"children":313},{"href":312},"#online-resources",[314],{"type":21,"value":315},"Curating online resources",{"type":15,"tag":261,"props":317,"children":318},{},[319,321,328,330,337],{"type":21,"value":320},"Review a lesson module; both by looking at ",{"type":15,"tag":47,"props":322,"children":325},{"href":323,"rel":324},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[51],[326],{"type":21,"value":327},"open PRs",{"type":21,"value":329},", as well as flagging issues for improvement in the ",{"type":15,"tag":47,"props":331,"children":334},{"href":332,"rel":333},"https://esciencecenter-digital-skills.github.io/research-software-support/",[51],[335],{"type":21,"value":336},"existing content",{"type":21,"value":56},{"type":15,"tag":261,"props":339,"children":340},{},[341,348],{"type":15,"tag":47,"props":342,"children":345},{"href":343,"rel":344},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[51],[346],{"type":21,"value":347},"Provide feedback",{"type":21,"value":349}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":175,"depth":175,"links":351},[352],{"id":236,"depth":175,"text":239,"children":353},[354],{"id":247,"depth":180,"text":250},"local_fs:main:contribute.md","main/contribute.md",1715800938297] \ No newline at end of file +[{"data":1,"prerenderedAt":357},["Reactive",2],{"content-query-4AG5D2tulF":3,"content-query-AT44bg6JPw":194},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"type":9,"order":10,"body":11,"_type":189,"_id":190,"_source":191,"_file":192,"_extension":193},"/modules/testing/reading","testing",false,"","Reading material","reading",5,{"type":12,"children":13,"toc":174},"root",[14,22,28,34,41,57,63,75,81,94,100,112,118,123,128,140,145,156,162],{"type":15,"tag":16,"props":17,"children":19},"element","h1",{"id":18},"reading-material",[20],{"type":21,"value":8},"text",{"type":15,"tag":23,"props":24,"children":25},"h2",{"id":5},[26],{"type":21,"value":27},"Testing",{"type":15,"tag":29,"props":30,"children":31},"p",{},[32],{"type":21,"value":33},"Follow the links below to read more about software testing.",{"type":15,"tag":35,"props":36,"children":38},"h3",{"id":37},"the-turing-way",[39],{"type":21,"value":40},"The Turing Way",{"type":15,"tag":29,"props":42,"children":43},{},[44,46,55],{"type":21,"value":45},"Read in the Turing Way about ",{"type":15,"tag":47,"props":48,"children":52},"a",{"href":49,"rel":50},"https://the-turing-way.netlify.app/reproducible-research/testing",[51],"nofollow",[53],{"type":21,"value":54},"Code Testing",{"type":21,"value":56},".",{"type":15,"tag":35,"props":58,"children":60},{"id":59},"code-refinery",[61],{"type":21,"value":62},"Code Refinery",{"type":15,"tag":29,"props":64,"children":65},{},[66,68],{"type":21,"value":67},"Read in CodeRefinery about ",{"type":15,"tag":47,"props":69,"children":72},{"href":70,"rel":71},"https://coderefinery.github.io/testing/motivation/",[51],[73],{"type":21,"value":74},"Automated testing",{"type":15,"tag":35,"props":76,"children":78},{"id":77},"ibm",[79],{"type":21,"value":80},"IBM",{"type":15,"tag":29,"props":82,"children":83},{},[84,86,93],{"type":21,"value":85},"Link to an ",{"type":15,"tag":47,"props":87,"children":90},{"href":88,"rel":89},"https://www.ibm.com/topics/software-testing",[51],[91],{"type":21,"value":92},"IBM article",{"type":21,"value":56},{"type":15,"tag":35,"props":95,"children":97},{"id":96},"arxiv",[98],{"type":21,"value":99},"arXiv",{"type":15,"tag":29,"props":101,"children":102},{},[103,105],{"type":21,"value":104},"Read this interesting article about ",{"type":15,"tag":47,"props":106,"children":109},{"href":107,"rel":108},"https://arxiv.org/abs/2205.15982",[51],[110],{"type":21,"value":111},"Testing Research Software",{"type":15,"tag":23,"props":113,"children":115},{"id":114},"cicd",[116],{"type":21,"value":117},"CI/CD",{"type":15,"tag":29,"props":119,"children":120},{},[121],{"type":21,"value":122},"Follow the links below to read more about CI/CD.",{"type":15,"tag":35,"props":124,"children":126},{"id":125},"the-turing-way-1",[127],{"type":21,"value":40},{"type":15,"tag":29,"props":129,"children":130},{},[131,132,139],{"type":21,"value":45},{"type":15,"tag":47,"props":133,"children":136},{"href":134,"rel":135},"https://the-turing-way.netlify.app/reproducible-research/ci",[51],[137],{"type":21,"value":138},"Continuous Integration",{"type":21,"value":56},{"type":15,"tag":35,"props":141,"children":143},{"id":142},"code-refinery-1",[144],{"type":21,"value":62},{"type":15,"tag":29,"props":146,"children":147},{},[148,149],{"type":21,"value":67},{"type":15,"tag":47,"props":150,"children":153},{"href":151,"rel":152},"https://coderefinery.github.io/testing/continuous-integration/",[51],[154],{"type":21,"value":155},"Continuous integration",{"type":15,"tag":35,"props":157,"children":159},{"id":158},"bytebytego-newsletter",[160],{"type":21,"value":161},"ByteByteGo Newsletter",{"type":15,"tag":29,"props":163,"children":164},{},[165,167],{"type":21,"value":166},"Read in ByteByteGo newsletter about ",{"type":15,"tag":47,"props":168,"children":171},{"href":169,"rel":170},"https://blog.bytebytego.com/p/a-crash-course-in-cicd",[51],[172],{"type":21,"value":173},"A Crash Course in CI/CD",{"title":7,"searchDepth":175,"depth":175,"links":176},2,[177,184],{"id":5,"depth":175,"text":27,"children":178},[179,181,182,183],{"id":37,"depth":180,"text":40},3,{"id":59,"depth":180,"text":62},{"id":77,"depth":180,"text":80},{"id":96,"depth":180,"text":99},{"id":114,"depth":175,"text":117,"children":185},[186,187,188],{"id":125,"depth":180,"text":40},{"id":142,"depth":180,"text":62},{"id":158,"depth":180,"text":161},"markdown","local_fs:modules:testing:reading.md","local_fs","modules/testing/reading.md","md",[195,229],{"_path":196,"_dir":197,"_draft":6,"_partial":6,"_locale":7,"title":198,"description":7,"body":199,"_type":189,"_id":227,"_source":191,"_file":228,"_extension":193},"/main/about","main","About",{"type":12,"children":200,"toc":223},[201,207,212,218],{"type":15,"tag":23,"props":202,"children":204},{"id":203},"about-the-research-software-support",[205],{"type":21,"value":206},"About the Research Software Support",{"type":15,"tag":29,"props":208,"children":209},{},[210],{"type":21,"value":211},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":15,"tag":23,"props":213,"children":215},{"id":214},"target-audience",[216],{"type":21,"value":217},"Target audience",{"type":15,"tag":29,"props":219,"children":220},{},[221],{"type":21,"value":222},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":175,"depth":175,"links":224},[225,226],{"id":203,"depth":175,"text":206},{"id":214,"depth":175,"text":217},"local_fs:main:about.md","main/about.md",{"_path":230,"_dir":197,"_draft":6,"_partial":6,"_locale":7,"title":231,"description":7,"body":232,"_type":189,"_id":355,"_source":191,"_file":356,"_extension":193},"/main/contribute","Contribute",{"type":12,"children":233,"toc":350},[234,240,245,251,256],{"type":15,"tag":23,"props":235,"children":237},{"id":236},"contributing-to-the-research-software-support",[238],{"type":21,"value":239},"Contributing to the Research Software Support",{"type":15,"tag":29,"props":241,"children":242},{},[243],{"type":21,"value":244},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":15,"tag":35,"props":246,"children":248},{"id":247},"what-can-i-do",[249],{"type":21,"value":250},"What can I do?",{"type":15,"tag":29,"props":252,"children":253},{},[254],{"type":21,"value":255},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":15,"tag":257,"props":258,"children":259},"ul",{},[260,275,316,338],{"type":15,"tag":261,"props":262,"children":263},"li",{},[264,266,273],{"type":21,"value":265},"Contribute to the content discussion in the ",{"type":15,"tag":47,"props":267,"children":270},{"href":268,"rel":269},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[51],[271],{"type":21,"value":272},"chapter issues",{"type":21,"value":274},", e.g. by listing good resources for information.",{"type":15,"tag":261,"props":276,"children":277},{},[278,284,286],{"type":15,"tag":47,"props":279,"children":281},{"href":280},"#elements-of-a-module",[282],{"type":21,"value":283},"Author a lesson",{"type":21,"value":285},", e.g. by:\n",{"type":15,"tag":257,"props":287,"children":288},{},[289,298,307],{"type":15,"tag":261,"props":290,"children":291},{},[292],{"type":15,"tag":47,"props":293,"children":295},{"href":294},"#slides",[296],{"type":21,"value":297},"Creating slides",{"type":15,"tag":261,"props":299,"children":300},{},[301],{"type":15,"tag":47,"props":302,"children":304},{"href":303},"#exercises",[305],{"type":21,"value":306},"Designing an exercise",{"type":15,"tag":261,"props":308,"children":309},{},[310],{"type":15,"tag":47,"props":311,"children":313},{"href":312},"#online-resources",[314],{"type":21,"value":315},"Curating online resources",{"type":15,"tag":261,"props":317,"children":318},{},[319,321,328,330,337],{"type":21,"value":320},"Review a lesson module; both by looking at ",{"type":15,"tag":47,"props":322,"children":325},{"href":323,"rel":324},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[51],[326],{"type":21,"value":327},"open PRs",{"type":21,"value":329},", as well as flagging issues for improvement in the ",{"type":15,"tag":47,"props":331,"children":334},{"href":332,"rel":333},"https://esciencecenter-digital-skills.github.io/research-software-support/",[51],[335],{"type":21,"value":336},"existing content",{"type":21,"value":56},{"type":15,"tag":261,"props":339,"children":340},{},[341,348],{"type":15,"tag":47,"props":342,"children":345},{"href":343,"rel":344},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[51],[346],{"type":21,"value":347},"Provide feedback",{"type":21,"value":349}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":175,"depth":175,"links":351},[352],{"id":236,"depth":175,"text":239,"children":353},[354],{"id":247,"depth":180,"text":250},"local_fs:main:contribute.md","main/contribute.md",1715801015482] \ No newline at end of file diff --git a/modules/testing/reading/index.html b/modules/testing/reading/index.html index b19b521b..824fbec0 100644 --- a/modules/testing/reading/index.html +++ b/modules/testing/reading/index.html @@ -2,7 +2,7 @@ Reading material - + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - - + + -

    Module: testing

    Reading material

    Testing

    Follow the links below to read more about software testing.

    The Turing Way

    Read in the Turing Way about Code Testing.

    Code Refinery

    Read in CodeRefinery about Automated testing

    IBM

    Link to an IBM article.

    arXiv

    Read this interesting article about Testing Research Software

    CI/CD

    Follow the links below to read more about CI/CD.

    The Turing Way

    Read in the Turing Way about Continuous Integration.

    Code Refinery

    Read in CodeRefinery about Continuous integration

    ByteByteGo Newsletter

    Read in ByteByteGo newsletter about A Crash Course in CI/CD

    - \ No newline at end of file +

    Module: testing

    Reading material

    Testing

    Follow the links below to read more about software testing.

    The Turing Way

    Read in the Turing Way about Code Testing.

    Code Refinery

    Read in CodeRefinery about Automated testing

    IBM

    Link to an IBM article.

    arXiv

    Read this interesting article about Testing Research Software

    CI/CD

    Follow the links below to read more about CI/CD.

    The Turing Way

    Read in the Turing Way about Continuous Integration.

    Code Refinery

    Read in CodeRefinery about Continuous integration

    ByteByteGo Newsletter

    Read in ByteByteGo newsletter about A Crash Course in CI/CD

    + \ No newline at end of file diff --git a/modules/version-control/info/_payload.json b/modules/version-control/info/_payload.json index d0c19c0a..b36d51b7 100644 --- a/modules/version-control/info/_payload.json +++ b/modules/version-control/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-QVHdkVu3GD":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/version-control/info","version-control",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:version-control:info.md","local_fs","modules/version-control/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715800937433] \ No newline at end of file +[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-QVHdkVu3GD":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/version-control/info","version-control",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:version-control:info.md","local_fs","modules/version-control/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715801014620] \ No newline at end of file diff --git a/modules/version-control/info/index.html b/modules/version-control/info/index.html index 64f630a1..437ff974 100644 --- a/modules/version-control/info/index.html +++ b/modules/version-control/info/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - + + + - - + + -

    Module: version-control

    Learning objectives for the FAIR software module

    - \ No newline at end of file +

    Module: version-control

    Learning objectives for the FAIR software module

    + \ No newline at end of file diff --git a/modules/versioning/info/_payload.json b/modules/versioning/info/_payload.json index edb110c6..2abb4ab9 100644 --- a/modules/versioning/info/_payload.json +++ b/modules/versioning/info/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-UDhTEF8dMG":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/versioning/info","versioning",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:versioning:info.md","local_fs","modules/versioning/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715800937085] \ No newline at end of file +[{"data":1,"prerenderedAt":199},["Reactive",2],{"content-query-UDhTEF8dMG":3,"content-query-AT44bg6JPw":30},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"type":10,"order":11,"body":12,"_type":25,"_id":26,"_source":27,"_file":28,"_extension":29},"/modules/versioning/info","versioning",false,"","Learning objectives","Learning objectives for the FAIR software module","info",0,{"type":13,"children":14,"toc":22},"root",[15],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"title":7,"searchDepth":23,"depth":23,"links":24},2,[],"markdown","local_fs:modules:versioning:info.md","local_fs","modules/versioning/info.md","md",[31,66],{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":34,"description":7,"body":35,"_type":25,"_id":64,"_source":27,"_file":65,"_extension":29},"/main/about","main","About",{"type":13,"children":36,"toc":60},[37,44,49,55],{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"about-the-research-software-support",[42],{"type":21,"value":43},"About the Research Software Support",{"type":16,"tag":17,"props":45,"children":46},{},[47],{"type":21,"value":48},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.",{"type":16,"tag":38,"props":50,"children":52},{"id":51},"target-audience",[53],{"type":21,"value":54},"Target audience",{"type":16,"tag":17,"props":56,"children":57},{},[58],{"type":21,"value":59},"The target audience for this material is University management and support staff.\nUniversity management taking part in courses involving these modules may be involved in creating university policy around research software.\nThe University support staff targeted are not themselves researchers or software engineers, but they support researchers and research software engineers in creating research software.",{"title":7,"searchDepth":23,"depth":23,"links":61},[62,63],{"id":40,"depth":23,"text":43},{"id":51,"depth":23,"text":54},"local_fs:main:about.md","main/about.md",{"_path":67,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":68,"description":7,"body":69,"_type":25,"_id":197,"_source":27,"_file":198,"_extension":29},"/main/contribute","Contribute",{"type":13,"children":70,"toc":191},[71,77,82,89,94],{"type":16,"tag":38,"props":72,"children":74},{"id":73},"contributing-to-the-research-software-support",[75],{"type":21,"value":76},"Contributing to the Research Software Support",{"type":16,"tag":17,"props":78,"children":79},{},[80],{"type":21,"value":81},"In the Research Software Support modules we want to provide a comprehensive overview of the different aspects of research software support.\nThis, as you can imagine, is no easy feat, and we need your help!\nSo first of all, thank you very much for your interest in contributing to this project.",{"type":16,"tag":83,"props":84,"children":86},"h3",{"id":85},"what-can-i-do",[87],{"type":21,"value":88},"What can I do?",{"type":16,"tag":17,"props":90,"children":91},{},[92],{"type":21,"value":93},"Go to our github repository by clicking on the GitHub logo in the top right of this website.",{"type":16,"tag":95,"props":96,"children":97},"ul",{},[98,115,156,179],{"type":16,"tag":99,"props":100,"children":101},"li",{},[102,104,113],{"type":21,"value":103},"Contribute to the content discussion in the ",{"type":16,"tag":105,"props":106,"children":110},"a",{"href":107,"rel":108},"https://github.com/esciencecenter-digital-skills/research-software-support/issues?q=is%3Aissue+is%3Aopen+label%3Astory",[109],"nofollow",[111],{"type":21,"value":112},"chapter issues",{"type":21,"value":114},", e.g. by listing good resources for information.",{"type":16,"tag":99,"props":116,"children":117},{},[118,124,126],{"type":16,"tag":105,"props":119,"children":121},{"href":120},"#elements-of-a-module",[122],{"type":21,"value":123},"Author a lesson",{"type":21,"value":125},", e.g. by:\n",{"type":16,"tag":95,"props":127,"children":128},{},[129,138,147],{"type":16,"tag":99,"props":130,"children":131},{},[132],{"type":16,"tag":105,"props":133,"children":135},{"href":134},"#slides",[136],{"type":21,"value":137},"Creating slides",{"type":16,"tag":99,"props":139,"children":140},{},[141],{"type":16,"tag":105,"props":142,"children":144},{"href":143},"#exercises",[145],{"type":21,"value":146},"Designing an exercise",{"type":16,"tag":99,"props":148,"children":149},{},[150],{"type":16,"tag":105,"props":151,"children":153},{"href":152},"#online-resources",[154],{"type":21,"value":155},"Curating online resources",{"type":16,"tag":99,"props":157,"children":158},{},[159,161,168,170,177],{"type":21,"value":160},"Review a lesson module; both by looking at ",{"type":16,"tag":105,"props":162,"children":165},{"href":163,"rel":164},"https://github.com/esciencecenter-digital-skills/research-software-support/pulls",[109],[166],{"type":21,"value":167},"open PRs",{"type":21,"value":169},", as well as flagging issues for improvement in the ",{"type":16,"tag":105,"props":171,"children":174},{"href":172,"rel":173},"https://esciencecenter-digital-skills.github.io/research-software-support/",[109],[175],{"type":21,"value":176},"existing content",{"type":21,"value":178},".",{"type":16,"tag":99,"props":180,"children":181},{},[182,189],{"type":16,"tag":105,"props":183,"children":186},{"href":184,"rel":185},"https://github.com/esciencecenter-digital-skills/research-software-support/issues",[109],[187],{"type":21,"value":188},"Provide feedback",{"type":21,"value":190}," on the different subjects covered: what did we miss? Should something be restructured?",{"title":7,"searchDepth":23,"depth":23,"links":192},[193],{"id":73,"depth":23,"text":76,"children":194},[195],{"id":85,"depth":196,"text":88},3,"local_fs:main:contribute.md","main/contribute.md",1715801014255] \ No newline at end of file diff --git a/modules/versioning/info/index.html b/modules/versioning/info/index.html index 3b579aec..2f42f494 100644 --- a/modules/versioning/info/index.html +++ b/modules/versioning/info/index.html @@ -4,7 +4,7 @@ - + - - - - - - - - + + + + + + + + - - - + + + - - + + -

    Module: versioning

    Learning objectives for the FAIR software module

    - \ No newline at end of file +

    Module: versioning

    Learning objectives for the FAIR software module

    + \ No newline at end of file