# Richtlijn: Deel, hergebruik en werk samen

Efficiënte softwareontwikkeling binnen de overheid betekent dat we technologie,
data en diensten zoveel mogelijk delen en hergebruiken. Dit voorkomt dubbele
inspanningen, bespaart kosten en versnelt innovatie.

## Rationale: Waarom delen, hergebruiken en samenwerken?

Overheidsorganisaties hebben vaak vergelijkbare behoeften. Door bestaande
oplossingen te hergebruiken bespaar je tijd en moeite die anders besteed zou
worden aan het opnieuw uitvinden van het wiel.

Minder ontwikkel- en onderhoudskosten door gedeelde software en infrastructuur
betekent dat publiek geld efficiënter wordt besteed. Door te investeren in
herbruikbare componenten profiteert de hele overheidssector.

Kennisdeling versnelt de ontwikkeling van nieuwe oplossingen. Overheden kunnen
zo voortbouwen op elkaars werk in plaats van vanaf nul te beginnen. Samen kom je
verder dan alleen.

Herbruikbare componenten zijn beter getest en onderhouden door meerdere
organisaties. Dit leidt tot minder fouten, betere beveiliging en robuustere
software.

Door open standaarden te gebruiken en samen te werken, verbeteren we de
kwaliteit, veiligheid en interoperabiliteit van systemen. Bovendien zorgt meer
transparantie voor betere controle en publieke verantwoording.

## Doelgroep: Wie zijn er betrokken bij delen en hergebruik?

De volgende doelgroepen kunnen met delen en hergebruik aan de slag: developers,
architecten, open source officers, designers en product owners.

Developers zoeken naar herbruikbare componenten en dragen bij aan open source
projecten. Architecten adviseren over hergebruik en standaardisatie. Open source
officers faciliteren het open source beleid en helpen bij het publiceren van
code. Designers delen design patterns en componenten via design systems. Product
owners nemen hergebruik mee in de productstrategie.

## Implementatie: Hoe implementeer je delen en hergebruik?

### Methoden en technieken

#### NL Design System gebruiken

Het NL Design System is een overheidsbrede initiatief waarbij organisaties
gezamenlijk werken aan een systeem om makkelijk themes en sets van componenten
aan te bieden. Het voordeel is dat je eenvoudig componenten kunt hergebruiken
van andere projecten.

#### publiccode.yml toevoegen

De publiccode.yml standaard is bedoeld om op een gestandaardiseerde manier
informatie aan te bieden over een Open Source project. Dit maakt projecten
vindbaar en herbruikbaar.

#### Software beheerst overdragen

Als je software overdraagt aan een andere partij zorg je dat de software goed
onderhoudbaar is. Dit omvat goede documentatie, testautomatisering en overdracht
van kennis.

### Tools

#### Repository catalogus

Gebruik de
[repository catalogus](https://oss.developer.overheid.nl/repositories) om
bestaande open source projecten van de overheid te vinden.

#### API catalogus

Gebruik de [API catalogus](https://apis.developer.overheid.nl/) om bestaande
API's van de overheid te vinden die je kunt hergebruiken.

### Gerelateerde richtlijnen

- [Richtlijn software beheerst overdragen](richtlijn-software-overdragen.md)
- [Richtlijn onboarding](richtlijn-onboarding.md)

### Succescriteria

Wanneer voldoe je aan deze richtlijn?

- Je zoekt actief naar bestaande oplossingen voordat je zelf iets bouwt.
- Je publiceert je open source code met een publiccode.yml bestand.
- Je documenteert je code en API's zodat anderen deze kunnen hergebruiken.

Wanneer ben je echt goed bezig?

- Je draagt actief bij aan bestaande open source projecten.
- Je gebruikt het NL Design System voor front-end componenten.
- Je deelt je ervaringen en leermomenten met andere overheidsorganisaties.

## Wanneer is deze richtlijn van toepassing?

Deze richtlijn is altijd van toepassing. Of je nu nieuwe software ontwikkelt of
bestaande software onderhoudt, delen en hergebruik moet altijd onderdeel zijn
van je overwegingen.

## Bronnen

### Wet- en regelgeving

Geen bekend.

### Beleid

Geen bekend.

### Standaarden

- [publiccode.yml standaard](https://github.com/publiccodeyml/publiccode.yml)

### Communities

- [Code for NL](/kennisbank/open-source/communities/code-for-nl)
- [Digilab](/kennisbank/data/communities/digilab)
- [Open Source Werken](/kennisbank/open-source/communities/open-source-werken)
- [NL Design System](/kennisbank/front-end/communities/nl-design-system)

### Literatuur

Geen bekend.

### Bronnen op developer.overheid.nl

- [NL Design System hoofdstuk](/kennisbank/front-end/design-systems/nl-design-system/)
- [API Catalogus](https://apis.developer.overheid.nl/)
- [Repository Catalogus](https://oss.developer.overheid.nl/repositories)
- [publiccode.yml standaard](/kennisbank/open-source/standaarden/publiccode-yml)
