Моя компанія (назвемо їх Acme Technology) має бібліотеку з приблизно однією тисячею вихідних файлів, які спочатку надходили від її дослідницької групи Acme Labs, інкубувались у групі розробників протягом декількох років, а нещодавно були надані кільком клієнтам під нерозголошення. Acme готується випустити, можливо, 75% коду до спільноти з відкритим кодом. Інші 25% будуть випущені пізніше, але поки що вони або не готові до використання клієнтів, або містять код, пов’язаний з майбутніми нововведеннями, який потрібно тримати поза руками конкурентів.
В даний час код відформатований з #ifdefs, що дозволяє одній і тій же кодовій базі працювати з платформами для попереднього виробництва, які будуть доступні для дослідників університетів та набагато більш широкого кола комерційних клієнтів, коли вони перейдуть до відкритого коду, і в той же час будуть доступний для експериментів та прототипування та тестування сумісності в майбутньому з майбутнім платформою. Збереження єдиної бази кодів вважається важливим для економіки (і розумності) моєї групи, якій було б важко підтримувати дві копії паралельно.
Файли в нашій нинішній базі виглядають приблизно так:
> // 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
> }
І ми хотіли б перетворити їх на щось на кшталт:
> // 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);
> }
Чи є інструмент, бібліотека розбору або популярний скрипт, який може замінити авторські права та викреслити не лише #ifdefs, а такі варіанти, як #if визначено (UNDER_RESEARCH) тощо?
Код зараз знаходиться в Git і, ймовірно, буде розміщений десь, де використовується Git. Чи може бути спосіб безпечно зв’язати сховища разом, щоб ми могли ефективно реінтегрувати наші покращення з версіями з відкритим кодом? Поради щодо інших підводних каменів вітаються.