Công ty của tôi (hãy gọi chúng là Acme Technology) có một thư viện gồm khoảng một nghìn tệp nguồn gốc từ nhóm nghiên cứu Acme Labs của nó, được ươm tạo trong một nhóm phát triển trong một vài năm và gần đây đã được cung cấp cho một số ít khách hàng không tiết lộ. Acme đã sẵn sàng để phát hành có lẽ 75% mã cho cộng đồng nguồn mở. 25% còn lại sẽ được phát hành sau đó, nhưng hiện tại, chưa sẵn sàng cho khách hàng sử dụng hoặc chứa mã liên quan đến các đổi mới trong tương lai mà họ cần để tránh xa các đối thủ cạnh tranh.
Mã hiện được định dạng với #ifdefs cho phép cùng một cơ sở mã hoạt động với các nền tảng tiền sản xuất sẽ có sẵn cho các nhà nghiên cứu đại học và một phạm vi khách hàng thương mại rộng hơn nhiều khi nó chuyển sang nguồn mở, đồng thời có sẵn để thử nghiệm và tạo mẫu và thử nghiệm khả năng tương thích về phía trước với nền tảng trong tương lai. Giữ một cơ sở mã duy nhất được coi là cần thiết cho kinh tế (và sự tỉnh táo) của nhóm tôi, người sẽ có một thời gian khó khăn để duy trì song song hai bản sao.
Các tệp trong cơ sở hiện tại của chúng tôi trông giống như thế này:
> // 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
> }
Và chúng tôi muốn chuyển đổi chúng thành một cái gì đó như:
> // 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);
> }
Có công cụ, thư viện phân tích hoặc tập lệnh phổ biến nào có thể thay thế bản quyền và loại bỏ không chỉ #ifdefs, mà cả các biến thể như #if được xác định (UNDER_RESEARCH), v.v.?
Mã hiện có trong Git và có khả năng sẽ được lưu trữ ở đâu đó sử dụng Git. Liệu có cách nào để liên kết các kho lưu trữ với nhau một cách an toàn để chúng tôi có thể tái hòa nhập một cách hiệu quả các cải tiến của chúng tôi với các phiên bản nguồn mở? Tư vấn về những cạm bẫy khác được chào đón.