Commit 75247cda authored by Kourser's avatar Kourser
Browse files

Accord de contribution : ce qu'on demande, et ce qu'on donne en retour

Deux textes — personnes physiques et entités —, un registre qui tient lieu de
signature, le DCO 1.1 joint, un guide, et un outil qui contrôle l'historique.

Ce que l'accord demande
  Le contributeur garde son droit d'auteur. Aucune cession : une licence large,
  incluant le droit de republier sous une autre licence. C'est ce qui préserve
  la capacité de changer de licence, de proposer un module sous licence
  distincte, et surtout d'agir en justice contre un contrefacteur sans réunir
  la signature de chaque contributeur.

Ce qu'il donne en retour, et pourquoi il le faut
  Ce droit de relicenciement crée un déséquilibre réel : une partie du pouvoir
  sur le code du contributeur passe à l'éditeur. C'est ce qui fait refuser les
  accords de contribution, souvent à raison.

  L'article 7 est la contrepartie, et elle est opposable. Publication libre
  immédiate de toute contribution intégrée. Aucun retrait de ce qui est déjà
  sorti sous AGPL. Le cœur reste sous une licence approuvée OSI ou FSF.
  Attribution conservée dans l'historique publié. Et ces engagements survivent
  à l'abandon du projet, opposables aux ayants droit.

Deux points de droit français traités, pas recopiés d'un modèle américain
  Le droit moral est perpétuel et inaliénable : une clause de renonciation
  serait nulle. Plutôt que d'en recopier une qui donnerait une fausse garantie,
  l'accord organise ce que ce droit appelle concrètement — paternité au
  registre et dans l'historique, traçabilité des modifications ultérieures.

  L'article L. 113-9 attribue de plein droit à l'employeur les droits sur le
  logiciel écrit par un salarié dans l'exercice de ses fonctions. Un
  développeur salarié qui signe l'accord individuel accorde des droits dont il
  n'est pas titulaire : sa signature ne couvre rien. D'où l'accord entité, qui
  fait garantir la titularité par celui qui la détient et nommer les adresses
  autorisées. C'est le défaut le plus courant des accords de contribution, et
  il ne se voit que le jour où quelqu'un le conteste.

  Ces textes n'ont pas été relus par un avocat, et le disent en tête. À faire
  avant d'ouvrir le dépôt.

Ce qui ne demande aucune signature, dit avant le reste
  Un rapport de bogue, une critique de conception, une remarque sur la
  documentation. Sur un outil de crise, un rapport précis vaut souvent mieux
  qu'un correctif — le guide le dit d'entrée, avant de parler de formalités.

Un accord qu'on ne vérifie pas se découvre incomplet des années plus tard
  « pnpm accords » lit l'historique réel : tout auteur figure-t-il au registre,
  tout commit postérieur à l'ouverture porte-t-il sa certification d'origine.
  L'ouverture n'est pas une date choisie à la main, c'est le commit qui a
  introduit CONTRIBUTING.md — ce qui précède est antérieur à la règle et n'a
  pas à s'y conformer rétroactivement. L'outil est sous CC0, comme le
  vérificateur de journal : ce qui contrôle un projet ne doit rien lui devoir.

  Neuf contrôles de plus dans « pnpm verif » (454 → 463) sur la cohérence des
  documents entre eux : l'accord existe dans les deux formes, il laisse la
  titularité, il porte son article 7, il ne prétend pas faire renoncer au droit
  moral, il traite le salarié, le DCO est joint sans être réécrit, le registre
  se lit, le guide dit comment signer et ouvre un canal privé pour les failles.

Sur les commits assistés par un outil
  L'historique porte des « Co-Authored-By: Claude Opus 5 ». Le vérificateur les
  ignore, et le registre dit pourquoi : une œuvre suppose un auteur personne
  physique, un outil ne détient aucun droit à accorder et n'a donc rien à
  signer. L'auteur du commit répond seul des garanties de l'article 6. La
  mention reste, parce que dire comment ce code a été écrit vaut mieux que de
  l'effacer.

Signed-off-by: default avatarKourser <contact@kourser.bzh>
Co-Authored-By: default avatarClaude Opus 5 <noreply@anthropic.com>
parent ba31c575
Loading
Loading
Loading
Loading

CONTRIBUTING.md

0 → 100644
+115 −0
Original line number Diff line number Diff line
# Contribuer à Kastell

> **Le dépôt n'est pas encore ouvert aux contributions externes.** Ce document
> et l'accord qui l'accompagne existent pour qu'il puisse l'être sans
> improviser le jour venu — pas pour appeler des demandes de fusion dès
> maintenant. Les rapports de bogue et les remarques de conception, eux, sont
> les bienvenus tout de suite.

---

## Ce qui ne demande aucune formalité

Signaler un bogue. Proposer une évolution. Contester un choix de conception.
Poser une question sur le modèle de crise. Relire la documentation et dire ce
qui n'y est pas clair.

Rien de tout cela n'est une contribution au sens de l'accord, et rien de tout
cela ne demande de signature. Sur un outil de gestion de crise, un rapport
précis — ce que vous faisiez, ce que vous attendiez, ce qui s'est passé — vaut
souvent davantage qu'un correctif.

## Ce qui demande une signature

Soumettre du code, de la documentation, une traduction, un jeu de vérification.

Deux gestes, une fois pour toutes&nbsp;:

**1. Inscrivez-vous au registre.** Ajoutez votre ligne à
[`accords/registre.md`](accords/registre.md), dans votre première demande de
fusion. Cette ligne **est** votre signature — rien à scanner, rien à renvoyer.
Lisez d'abord [`accords/ACCORD-DE-CONTRIBUTION.md`](accords/ACCORD-DE-CONTRIBUTION.md)&nbsp;;
il tient en dix articles et son article 7 dit ce que vous recevez en échange.

Si vous contribuez dans le cadre de votre emploi, c'est
[l'accord entité](accords/ACCORD-DE-CONTRIBUTION-ENTITE.md) qu'il faut&nbsp;: en
droit français, les droits sur un logiciel écrit par un salarié dans l'exercice
de ses fonctions appartiennent à son employeur, pas à lui.

**2. Signez vos commits.** Chaque commit porte une ligne `Signed-off-by:`&nbsp;:

```bash
git commit -s -m "…"
```

C'est le [Developer Certificate of Origin](accords/DCO.txt) 1.1&nbsp;: vous
certifiez que vous avez le droit de soumettre ce code. Le registre est
l'accord&nbsp;; le sign-off est la certification, commit par commit.

Pour contrôler l'ensemble avant d'envoyer&nbsp;:

```bash
pnpm accords
```

## Mettre le projet en route

Voir [le README](README.md#démarrage). En bref&nbsp;:

```bash
cp .env.example .env
pnpm install
pnpm demarrer
```

Avant toute demande de fusion, ces trois commandes doivent passer&nbsp;:

```bash
pnpm typecheck && pnpm verif && pnpm accords
```

`pnpm verif` **remet le schéma à zéro** et rejoue plus de quatre cent cinquante
garanties. Il refuse de s'exécuter si `KASTELL_ENV=production`.

## Ce qu'on attend d'un correctif

**Une garantie de plus dans `pnpm verif`.** Un correctif sans contrôle qui
échouait avant et passe après n'est pas fini. Les suites vivent dans
[`apps/api/src/verification/`](apps/api/src/verification/) et se lisent comme
des phrases&nbsp;: `r.verifie("EB-01", "une décision entre au journal", …)`.

**La règle à ne jamais enfreindre.** Toute mutation de l'état d'une crise passe
par `enregistrer()`. Un `insert` direct dans une table de projection produit un
état que le rejeu ne reconstruira pas — c'est-à-dire une boîte noire qui ment.
Voir [le README](README.md#la-règle-à-ne-jamais-enfreindre).

**Ce qui entre au journal, et ce qui n'y entre pas.** La frontière est un choix
de produit, pas un détail d'implémentation. Ajouter un type d'événement à la
chaîne engage l'organisation pour la durée de conservation du journal&nbsp;;
proposez-le avant de l'écrire.

**Des commentaires qui disent pourquoi.** Le code de ce dépôt explique ses
choix, y compris les mauvais. Un commentaire qui paraphrase la ligne suivante
sera retiré&nbsp;; un commentaire qui dit pourquoi cette ligne n'est pas ce
qu'on ferait ailleurs sera gardé.

**Le français.** Noms de fonctions, de tables, de variables, de routes,
messages d'erreur, commentaires. Les termes techniques consacrés restent en
anglais quand les traduire nuirait à la clarté.

**Les messages d'erreur s'adressent à quelqu'un sous pression.** Ils disent ce
qui s'est passé et quoi faire ensuite. Pas de code seul, pas de « une erreur
est survenue ».

## Signaler une faille de sécurité

**N'ouvrez pas de ticket public.** Écrivez à `contact@kourser.bzh`, en décrivant
le chemin d'exploitation et l'effet obtenu.

Kastell est un outil de gestion de crise&nbsp;: ses utilisateurs s'en servent
précisément quand leur système d'information est compromis. Une faille publiée
avant correction ne gêne pas un éditeur, elle atteint des organisations déjà
attaquées.

Vous serez tenu au courant du traitement, et cité à la publication du correctif
si vous le souhaitez.
+25 −0
Original line number Diff line number Diff line
@@ -403,6 +403,31 @@ Voir §7 du cahier des charges.
  doit produire une erreur franche plutôt qu'une projection silencieusement
  fausse.

## Contribuer

Le dépôt n'est pas encore ouvert aux contributions externes, mais l'accord qui
le permettra est écrit : [`CONTRIBUTING.md`](CONTRIBUTING.md) et
[`accords/`](accords/).

Signaler un bogue, contester un choix de conception, relire la documentation :
**rien à signer.** Soumettre du code : une ligne dans
[`accords/registre.md`](accords/registre.md) — cette ligne *est* la signature —
et un `Signed-off-by` par commit.

Le contributeur **garde son droit d'auteur** et accorde une licence large,
relicenciement compris. En échange, l'article 7 engage le projet : publication
libre immédiate, aucun retrait de ce qui a été publié, et un cœur qui reste sous
licence libre. Sans cette contrepartie, un accord de contribution ne fait que
recevoir.

```bash
pnpm accords     # tout auteur de l'historique figure-t-il au registre ?
```

Une faille de sécurité ne s'ouvre pas en ticket public : `contact@kourser.bzh`.
Kastell sert quand le SI est déjà compromis — une divulgation prématurée
n'atteint pas l'éditeur, elle atteint des organisations déjà attaquées.

## Licence

**AGPL-3.0-or-later** — texte intégral dans [`LICENSE`](LICENSE), notice d'usage
+78 −0
Original line number Diff line number Diff line
# Accord de contribution — entité

**Version 1.0 — 22 août 2026**
*Pour une société, une association ou une administration dont des membres
contribuent à Kastell. Les personnes physiques signent
[`ACCORD-DE-CONTRIBUTION.md`](ACCORD-DE-CONTRIBUTION.md).*

---

> **Ce document n'a pas été relu par un avocat.** Voir l'avertissement en tête
> de l'accord individuel, qui vaut ici aussi.

---

## Pourquoi une version distincte

Parce qu'en droit français, l'employeur détient déjà les droits.

L'article L. 113-9 du code de la propriété intellectuelle attribue **de plein
droit à l'employeur** les droits patrimoniaux sur les logiciels créés par un
salarié dans l'exercice de ses fonctions ou d'après ses instructions. Le
développeur qui signe l'accord individuel accorde alors des droits dont il
n'est pas titulaire&nbsp;: sa signature ne couvre rien.

C'est le défaut le plus courant des accords de contribution, et il ne se voit
que le jour où quelqu'un le conteste. Cet accord le corrige à la source.

## 1. Objet

L'entité désignée au registre&nbsp;:

1. **accorde à Kourser**, sur les contributions de ses collaborateurs
   autorisés, les droits énumérés aux articles 3 et 4 de l'accord individuel,
   qui sont ici repris dans leur intégralité et font partie du présent
   accord&nbsp;;
2. **garantit** être titulaire de ces droits, au titre de l'article L. 113-9 ou
   d'une cession régulière, et pouvoir valablement les accorder&nbsp;;
3. **autorise nommément** les collaborateurs listés au registre à soumettre des
   contributions en son nom.

## 2. Collaborateurs autorisés

L'entité tient à jour, au registre, la liste des adresses électroniques de ses
collaborateurs autorisés.

**Une contribution reçue d'une adresse non listée n'engage pas l'entité**
elle sera traitée comme une contribution individuelle, et l'auteur devra
attester lui-même de ses droits.

Retirer une adresse de la liste met fin à l'autorisation **pour l'avenir**. Les
contributions déjà soumises restent couvertes.

## 3. Ce que Kourser s'engage à faire en retour

Les engagements de l'article 7 de l'accord individuel — publication libre
immédiate, absence de retrait, cœur maintenu libre, attribution, sort du projet
— s'appliquent à l'identique à l'entité et à ses collaborateurs.

## 4. Ce que cet accord n'est pas

L'entité ne devient ni partenaire, ni associée, ni prestataire de Kourser.
Aucune obligation de contribuer, de maintenir ou de financer n'en découle.
Aucune contrepartie financière n'est due de part ni d'autre.

L'entité ne garantit pas ses contributions, fournies **en l'état**.

## 5. Durée, fin, droit applicable

Les articles 9 et 10 de l'accord individuel s'appliquent. Droit français&nbsp;;
tribunaux de Rennes.

---

## Comment signer

Un représentant habilité inscrit l'entité au [`registre`](registre.md), avec la
liste des adresses autorisées, et le confirme par courriel à
`contact@kourser.bzh` depuis une adresse du domaine de l'entité.
+236 −0
Original line number Diff line number Diff line
# Accord de contribution — Kastell

**Version 1.0 — 22 août 2026**
*Contributeur personne physique. Les entités ont leur propre texte&nbsp;:
[`ACCORD-DE-CONTRIBUTION-ENTITE.md`](ACCORD-DE-CONTRIBUTION-ENTITE.md).*

---

> **Ce document n'a pas été relu par un avocat.** Il a été rédigé avec soin et
> en connaissance du droit français applicable, mais il organise la cession de
> droits patrimoniaux sur du code&nbsp;: faites-le relire avant d'ouvrir le
> dépôt aux contributions externes. Les points qui méritent le plus d'attention
> sont signalés en note dans le texte.

---

## Pourquoi cet accord existe

Vous conservez le droit d'auteur sur ce que vous écrivez. Vous accordez à
Kourser une licence large sur votre contribution, **y compris le droit de la
publier sous une autre licence que l'AGPL**.

C'est le seul point qui compte, et il faut le dire franchement&nbsp;: sans lui,
Kastell ne pourrait plus jamais changer de licence, ni proposer de module sous
licence distincte, ni faire valoir ses droits en justice contre un
contrefacteur sans réunir la signature de chaque contributeur. Avec lui, une
partie du pouvoir sur votre code passe à Kourser.

Ce déséquilibre est réel. L'**article 7** est ce que vous recevez en échange, et
il est contraignant&nbsp;: le cœur de Kastell reste publié sous licence libre,
définitivement.

Si cet arbitrage ne vous convient pas, ne signez pas. Une contribution
n'est pas due, et un rapport de bogue précis vaut souvent davantage qu'un
correctif.

---

## 1. Définitions

**« Vous »** — la personne physique qui accepte le présent accord.

**« Kourser »** — Kourser, établi à Rennes, éditeur de Kastell, et ses ayants
droit en cas de cession du projet.

**« Contribution »** — tout élément que vous soumettez sciemment en vue de son
intégration à Kastell&nbsp;: code, correctif, documentation, traduction, jeu de
vérification, texte d'interface, schéma. La soumission peut prendre n'importe
quelle forme — demande de fusion, correctif attaché à un message, extrait
proposé dans une discussion technique — dès lors qu'elle est destinée à être
intégrée.

N'est **pas** une contribution&nbsp;: un rapport de bogue, une demande
d'évolution, une remarque de conception, un avis dans une discussion. Vous
pouvez signaler, critiquer et proposer sans rien signer.

## 2. Ce que vous gardez

**Vous restez titulaire du droit d'auteur sur votre contribution.** Cet accord
n'opère aucune cession de propriété. Vous pouvez la réutiliser, la republier, la
proposer ailleurs, l'exploiter commercialement, sans en demander la permission
à quiconque et sans restriction d'aucune sorte.

## 3. Ce que vous accordez

Vous accordez à Kourser, à titre non exclusif, gratuit, irrévocable,
transférable et sous-licenciable, sur votre contribution, les droits
suivants&nbsp;:

- **droit de reproduction** — reproduire la contribution par tout procédé, sur
  tout support numérique ou papier, en tout nombre d'exemplaires&nbsp;;
- **droit de représentation** — la communiquer au public par tout procédé de
  télédiffusion ou de mise à disposition en ligne, y compris son exploitation
  au sein d'un service hébergé accessible par un réseau&nbsp;;
- **droit d'adaptation** — la modifier, la corriger, la refondre, l'intégrer à
  d'autres éléments, en dériver des œuvres nouvelles&nbsp;;
- **droit de traduction** — la traduire en toute langue, y compris tout langage
  de programmation ou format technique&nbsp;;
- **droit de distribution** — la distribuer, la commercialiser, la concéder,
  seule ou intégrée à Kastell.

**Étendue et destination** — ces droits sont accordés pour l'exploitation de
Kastell et de tout produit qui en dérive, y compris à des fins commerciales,
sous licence libre comme sous licence privative.

**Territoire** — le monde entier.

**Durée** — la durée légale de protection du droit d'auteur, prorogations
comprises.

**Droit de relicenciement** — Kourser peut publier votre contribution sous toute
licence de son choix, y compris une licence privative, dans les limites de
l'article 7.

> *Note — l'article L. 131-3 du code de la propriété intellectuelle impose que
> chaque droit concédé soit mentionné distinctement et que le domaine
> d'exploitation soit délimité quant à son étendue, sa destination, son lieu et
> sa durée. C'est la raison de cette énumération, qui serait inutilement lourde
> ailleurs qu'en droit français.*
>
> *L'article L. 131-6 encadre la concession portant sur des modes
> d'exploitation imprévisibles à la date de l'accord&nbsp;: cet accord ne les
> couvre volontairement pas. Un mode d'exploitation véritablement nouveau
> demanderait un avenant.*

## 4. Brevets

Vous accordez à Kourser et à tout utilisateur de Kastell une licence de brevet
non exclusive, gratuite, mondiale et irrévocable sur les revendications de
brevet dont vous disposez et que votre contribution met nécessairement en œuvre,
seule ou combinée à Kastell.

Cette licence prend fin, pour vous, si vous engagez une action en contrefaçon de
brevet visant Kastell ou ses utilisateurs à raison de Kastell.

## 5. Droit moral

**Votre droit moral n'est pas cédé, et il ne peut pas l'être.** En droit
français, il est perpétuel, inaliénable et imprescriptible&nbsp;: toute clause
de renonciation serait nulle. Plutôt que d'en recopier une, cet accord
s'organise pour le respecter.

- **Droit à la paternité** — votre nom figure au registre des signataires et
  votre qualité d'auteur reste attachée à vos commits dans l'historique du
  dépôt, que Kourser s'engage à conserver et à publier tel quel.
- **Droit au respect de l'œuvre** — votre contribution sera modifiée&nbsp;:
  c'est l'objet même d'un logiciel vivant, et vous l'acceptez en la soumettant.
  L'historique du dépôt permet en tout temps de distinguer votre version des
  modifications ultérieures, ce qui est la garantie concrète que ce droit
  appelle ici.

Vous acceptez de ne pas exercer votre droit moral d'une manière qui empêcherait
l'exploitation normale de Kastell telle que décrite à l'article 3.

## 6. Ce que vous garantissez

Vous déclarez que&nbsp;:

1. votre contribution est votre création originale, ou que vous détenez les
   droits nécessaires pour l'accorder&nbsp;;
2. vous avez signalé, dans la contribution elle-même, tout élément tiers qu'elle
   incorpore, avec sa licence et son origine&nbsp;;
3. à votre connaissance, votre contribution ne porte atteinte au droit d'aucun
   tiers&nbsp;;
4. si vous êtes salarié ou lié par un contrat de commande, votre employeur ou
   votre donneur d'ordre n'a pas de droit sur cette contribution, ou bien il l'a
   autorisée et a signé l'accord entité.

> *Note — le point&nbsp;4 n'est pas une précaution de style. L'article L. 113-9
> du code de la propriété intellectuelle attribue de plein droit à l'employeur
> les droits patrimoniaux sur les logiciels créés par un salarié dans l'exercice
> de ses fonctions. Un développeur salarié qui contribue sur son temps de
> travail, ou avec le matériel de son employeur, ne détient souvent pas les
> droits qu'il croit accorder.*

Vous ne garantissez rien d'autre. Votre contribution est fournie **en l'état**,
sans garantie de fonctionnement, d'adéquation à un usage ou d'absence de défaut.
Vous n'êtes tenu à aucune obligation de maintenance, de correction ni de
support.

## 7. Ce que Kourser s'engage à faire en retour

Cet article est la contrepartie du droit de relicenciement de l'article 3. Il
engage Kourser envers vous, et vous pouvez vous en prévaloir.

1. **Publication libre immédiate.** Toute contribution intégrée au cœur de
   Kastell est publiée sous AGPL-3.0-or-later dans la version publique du dépôt,
   au plus tard lors de la publication de la version qui l'intègre.

2. **Pas de retrait.** Un relicenciement ultérieur ne retire jamais ce qui a
   déjà été publié sous licence libre. Ce qui est sorti sous AGPL le reste,
   définitivement, entre les mains de tous ceux qui l'ont reçu.

3. **Le cœur reste libre.** Kourser s'interdit de faire du cœur de Kastell —
   noyau de journalisation, rejeu, dossier de préparation, conduite de crise —
   un produit exclusivement privatif. Si Kastell devait changer de licence, ce
   serait pour une autre licence approuvée par l'Open Source Initiative ou la
   Free Software Foundation.

4. **Attribution.** Votre nom figure au registre des signataires et votre
   qualité d'auteur est conservée dans l'historique publié.

5. **Sort du projet.** Si Kourser cesse de maintenir Kastell pendant plus de
   vingt-quatre mois consécutifs — aucune version publiée, aucune correction de
   sécurité — sans en transmettre la charge, les engagements du présent article
   restent opposables à ses ayants droit.

## 8. Ce que cet accord n'est pas

- **Ce n'est pas une promesse d'intégration.** Kourser n'est tenu ni d'examiner,
  ni d'accepter, ni de conserver votre contribution. Une contribution refusée
  ne crée aucun droit et ne vous coûte rien&nbsp;: l'accord ne s'applique
  qu'aux contributions effectivement soumises, et refuser la vôtre ne vous lie
  à rien de plus.
- **Ce n'est pas un contrat de travail, ni une société, ni une agence.** Vous
  n'êtes ni salarié, ni mandataire, ni associé de Kourser.
- **Ce n'est pas une rémunération.** Aucune contrepartie financière n'est due
  de part ni d'autre.
- **Ce n'est pas un accord sur vos données.** Il ne porte que sur ce que vous
  soumettez au dépôt.

## 9. Durée et fin

L'accord prend effet à votre inscription au registre et couvre toutes vos
contributions, y compris celles soumises avant cette inscription.

Vous pouvez y mettre fin à tout moment, par simple message&nbsp;: **vos
contributions futures ne seront alors plus couvertes.** Les droits accordés sur
vos contributions déjà soumises restent acquis — ils ne peuvent pas être repris
sans rendre le projet inexploitable, ce qui est précisément la situation que
cet accord existe pour éviter.

## 10. Divers

**Intégralité** — cet accord et son registre forment l'ensemble de ce qui est
convenu sur les droits attachés aux contributions.

**Modification** — une nouvelle version de cet accord ne s'applique pas
rétroactivement. Les contributions restent régies par la version que vous avez
signée, mentionnée au registre. Il vous sera proposé de signer la nouvelle
version pour vos contributions suivantes.

**Divisibilité** — si une clause est jugée nulle, les autres restent en vigueur,
et la clause nulle est remplacée par la stipulation valable la plus proche de
l'intention commune.

**Droit applicable et juridiction** — droit français. À défaut de règlement
amiable, les tribunaux de Rennes sont compétents.

---

## Comment signer

Voir [`../CONTRIBUTING.md`](../CONTRIBUTING.md). En résumé&nbsp;: une ligne dans
[`registre.md`](registre.md), ajoutée par vous, dans votre première demande de
fusion&nbsp;; et un `Signed-off-by:` sur chacun de vos commits.

accords/DCO.txt

0 → 100644
+34 −0
Original line number Diff line number Diff line
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.
Loading