Our team is using Hybrid model for source code management which is trunk based development + feature branch develpoment. It has been working quite well. And I have seen frictions moving towards trunk based development + feature flipping/toggling. With today's decision towards Kanban, trunk based development + feature flipping seems nature fit in the case for me. But most team members are not comfortable with that. And I do think team has made right decision.
In the meeting, team members have pointed out that
(1) If we don't experience now, why we need to move to new model
(2) The feature flipping would make code design less elegant
(3) What is adavantage of Feature Flipping
And team decides to continoue hybrid mode. And I believe in their decision. But there were still some doubts.
I have a better thought on it while I am on train. And the following summarize some of my thoughts.
If a team member don't experience any problem with current source code management methodology, I am strongly support decision to stay with current metdhology instead of moving. But if team expects large growth, I will suggest team to experiment some stories with feature flipping and be able to avoid difficulty of merging feature branches when team grows.
An elegant design is a fair point. It is not a time to think about feature flipping because the lost of software design doesn't provide any value with current infrastructure and testing frameworks that we have at the moment. But in the same time, I do think some design concept can be broken if it will bring more values such as performance driven scripts. But in the same time, the feature flipping can be base on very good OO design. But at the start, we don't need elegant design of feature flipping. A single configuration file and a general checking script should work.
Feature flipping's major advatanges:
(1) Minimize costs for merging branches in large teams environment
(2) Be able to hide features if features must be hidden because customer requirement or market decision
(1) Codes will looks a little bit more messy
(2) Team must commit themselves to remove feature flags after a while
(3) Without clearning flags, your code base will be a big mess