Mon entreprise (appelons-les Acme Technology) possède une bibliothèque d'environ un millier de fichiers source provenant à l'origine de son groupe de recherche Acme Labs, incubés dans un groupe de développement pendant quelques années, et plus récemment, fournis à une poignée de clients sous non-divulgation. Acme s'apprête à publier peut-être 75% du code à la communauté open source. Les 25% restants seraient publiés plus tard, mais pour l'instant, soit ils ne sont pas prêts à être utilisés par le client, soit ils contiennent du code lié aux futures innovations dont ils ont besoin pour rester hors de la portée des concurrents.
Le code est actuellement formaté avec #ifdefs qui permet à la même base de code de fonctionner avec les plates-formes de pré-production qui seront disponibles pour les chercheurs universitaires et un éventail beaucoup plus large de clients commerciaux une fois qu'il sera ouvert, tout en étant en même temps disponible pour l'expérimentation et le prototypage et les tests de compatibilité ascendante avec la future plateforme. Garder une base de code unique est considéré comme essentiel pour l'économie (et la santé mentale) de mon groupe qui aurait du mal à maintenir deux copies en parallèle.
Les fichiers de notre base actuelle ressemblent à ceci:
> // Copyright 2012 (C) Acme Technology, All Rights Reserved.
> // Very large, often varied and restrictive copyright license in English and French,
> // sometimes also embedded in make files and shell scripts with varied
> // comment styles.
>
>
> ... Usual header stuff...
>
> void initTechnologyLibrary() {
> nuiInterface(on);
> #ifdef UNDER_RESEARCH
> holographicVisualization(on);
> #endif
> }
Et nous aimerions les convertir en quelque chose comme:
> // GPL Copyright (C) Acme Technology Labs 2012, Some rights reserved.
> // Acme appreciates your interest in its technology, please contact xyz@acme.com
> // for technical support, and www.acme.com/emergingTech for updates and RSS feed.
>
> ... Usual header stuff...
>
> void initTechnologyLibrary() {
> nuiInterface(on);
> }
Existe-t-il un outil, une bibliothèque d'analyse ou un script populaire qui peut remplacer le droit d'auteur et supprimer non seulement #ifdefs, mais des variantes comme #if défini (UNDER_RESEARCH), etc.?
Le code est actuellement dans Git et serait probablement hébergé quelque part qui utilise Git. Existerait-il un moyen de lier les référentiels en toute sécurité afin que nous puissions réintégrer efficacement nos améliorations avec les versions open source? Des conseils sur d'autres pièges sont les bienvenus.