Ми - організація, що складається з близько 200 розробників, які постійно працюють над одним продуктом (використовуючи контрольний редактор Git), який планується випустити на певну дату.
Завдяки величезній кількості розробників, ми намагаємось створити "крос-функціональні" команди з приблизно 10 розробниками в кожній команді, в результаті чого в організації налічується близько 20 команд розвитку.
Оскільки ми хотіли б підтримувати продукт у головному сховищі постійно «високим стандартом» (мається на увазі, коли розробник робить потяг, продукт повинен бути принаймні компільований тощо), ми хотіли б використовувати якісь ворота якості.
Я трохи не впевнений, як сформулювати це питання, але мені цікаво, чи можу я отримати поради щодо методології розробки для такої великої групи розробників, що працюють над одним продуктом.
На наш погляд, одним кінцем спектру є дозволити кожному розробнику брати участь безпосередньо в основному сховищі, однак ми побоюємось, що через велику кількість розробників / зобов’язань, що "основний сховище" може постійно перебувати в ламаній стадії, через щоб ми не могли мати вимогливі «ворота якості» для кожного вчинку.
Інший кінець спектру може бути таким (ми думаємо, що це робить Лінус Торвальдс / Linux) дерево або структура піраміди, де "основний сховище" має лише три джерела витягування, у цих трьох є лише кілька надійних джерел витягу тощо. Однак ми вважаємо, що при такій структурі зміни мають довгий ланцюг, щоб піднятися, щоб потрапити в "основне сховище". Плюс у тому, що якщо виникає конфлікт злиття, проблема потрапляє на іншого розробника, ніж "оригінальний розробник".
З огляду на всю цю довідкову інформацію та думки, як ми можемо вивчити та читати рекомендовані методики розробки для багатьох розробників? Як великі організації (Microsoft, Facebook, Ubuntu тощо) структурують свій розвиток?