Hi Schabi,
also ich bin kein Anwalt und vielleicht meldet sich da auch noch jemand zu Wort, aber schon mal so viel: Das mit dem Recht ist oft einfacher als man vermutet. Die GPL wurde auch von jemandem verfasst, der kein Anwalt ist und der einfach hingeschrieben hat, was er will und so lange das eindeutig genug ist, ist das alles unproblematisch.
Die sauberste Variante ist wahrscheinlich wirklich ein Stück Papier pro Contributor, aber bei großen Personengruppen organisiert man sowas vielleicht doch lieber elektronisch, bei den besagten 30 würde ich es noch auf Papier machen. Letztendlich schreibt man einen Satz dazu drauf, der feststellt _wer_ _welche_Beiträge_ _unter_welchen_Bedingungen_ zur Verfügung stellt. Das könnte also so aussehen:
Ich, Vorname Nachname, stelle meine bisherigen und zukünftigen Beiträge zu Repository/Software XY unter den Bedingungen der GNU General Public License Version 2 oder später zur Verfügung.
Datum, Unterschrift
Das sollte reichen, denn die ganzen Details wie Geltungsdauer und so weiter stehen dann in der Lizenz selbst. Zur Absicherung kann man sich auch noch versichern lassen, dass der Code wirklich selbst erstellt und nicht irgendwo abgeschrieben ist, aber ich denke das geht eigentlich auch ohne, weil der Fehler dann auf jeden Fall bei dem Contributor liegt, der ja gegen seine eigene Vereinbarung verstößt, weil er abgeschriebenen Code ja eventuell gar nicht unter diesen Bedingungen beitragen darf. Ich denke das ist also impliziert, aber wenn ihr wollt, ergänzt ihr da halt noch was dazu, was so klingt wie die eidesstattliche Versicherung am Ende von Arbeiten an der Hochschule.
Wenn man in diesem konkreten Fall unbedingt noch mehr Papierkram will, kann man auch das Fiduciary Licensing Agreement der FSFE nutzen: https://fsfe.org/news/2017/news-20171013-01 Das ist im Grunde ein CLA, also Overkill für das, was du beschreibst und was der Standardfall ist, also eingehende Lizenz = ausgehende Lizenz, aber es regelt halt noch ein paar mehr Sachen. Braucht man hier denke ich nicht, kann man aber auch verwenden.
Wie man sowas elektronisch halbwegs rechtssicher in trockene Tücher kriegt, überlasse ich jemandem, der sich mit sowas auskennt. Da bin ich mal selber gespannt, ob die Sachen, die ich so im Kopf habe, juristisch tragfähig sind.
Ansonsten würde ich noch empfehlen, gleich auch REUSE in die CI zu packen, damit die Lizenzinformationen im Repository auch überall und dauerhaft sauber sind: https://reuse.software
Happy hacking! Florian