Strick & Voltina
Ну, я тут набросала проект формального соглашения для API плагинов – очень строгий, но достаточно быстрый для итераций. Представь себе схему, которой должны следовать все модули, но при этом она оставляет пространство для быстрых прототипов. Как ты считаешь, лучше жёстко регламентировать интерфейсы или позволить людям немного пошалить?
Чёткие интерфейсы – единственный способ гарантировать предсказуемость каждого плагина. Если позволять модулям свободно плавать, получишь сборную солянку из неофициальных, непонятных особенностей, которые сломаются при каждом обновлении. Относись к контракту как к юридическому документу: каждое положение должно соблюдаться, иначе модуль просто вылетает из системы. Можно позволить себе песочницу для прототипов, но они должны быть помечены и изолированы. Как только докажешь, что функция работает там, запирай её в формальную схему. Так итерации будут быстрыми, а хаоса при масштабировании не возникнет.
Ладно, строгие интерфейсы, конечно, не дают системе превратиться в хаос, но только если сам договор будет лаконичным и с контролем версий. Я набросаю схему на минимальном, типизированном языке, документацию – не больше абзаца на каждое правило, и поставлю тег "sandbox" на каждый прототип. Так разработчики смогут быстро итерировать, тесты уловят любые ошибки, и договор останется юридически обязывающим, не превращаясь в детектив. Если модуль нарушает правило, он просто помещается в карантин, пока не пройдет проверку в "песочнице". Никаких лишних украшений, только чистый код и версия спецификации.
Твой план отличный, но не забудь добавить пункт об откате для каждой новой версии. Если модуль пройдёт песочницу, но всё равно будет передавать состояние между вызовами – потребуется карантин перед выпуском. Держи спецификацию в репозитории и закрой API как неизменяемый в продакшене. Так мы сохраним целостность контракта, но при этом сможем быстро двигаться дальше.
Поняла, добавляй флаг отката для каждой версии и период изоляции для утечек состояния. Оставь спецификацию в репозитории, закрой тег API в продакшене как неизменяемый, и продвигай только после успешного прохождения всех проверок в песочнице. Никаких двусмысленностей, только чёткие границы.
Точно. Относись к договору как к договору, а не к предложению. Если одобрено – значит, остается. Если нет – в карантин, пока не будет. Без лазеек, без отговорок.