Context: Branching has been widely adopted in version control to enable collaborative software development. However, the isolation caused by branches may impose challenges on the upcoming merging process. Recently, companies like Google, Microsoft, Facebook, and Spotify, among others, have adopted trunk-based development together with feature toggles. This strategy enables collaboration without the need for isolation through branches, potentially reducing the merging challenges. However, the literature lacks evidence about the benefits and limitations of feature toggles to collaborative software development. Objective/Method: In this paper, we study the effects of applying feature toggles on 949 open-source projects written in 6 different programming languages. We first identified the moment in which each project adopted a feature toggles framework. Then, we observed whether the adoption implied significant changes in the frequency or complexity of branch merges and the number of defects, and the average time to fix them. Finally, we compared the obtained results with results obtained from a set of control projects that do not use feature toggles frameworks. Results/Conclusion: We could observe a reduction in the average merge effort and an increase in the average total time needed to fix defects after adopting feature toggles frameworks. However, we could not confirm that this increase was influenced by the use of feature toggles.
翻译:在版本控制中广泛采用了分支化,以便合作软件开发。然而,各分支造成的孤立可能会给即将进行的合并进程带来挑战。最近,谷歌、微软、脸书和Spotify等公司采用了基于中继系统的开发,并配有特征拼图。这一战略使得合作无需通过分支孤立即可进行,从而有可能减少合并的挑战。然而,文献缺乏证据,无法证明将特性的特异性对协作软件开发的好处和局限性。目标/方法:在本文件中,我们研究了在以6种不同编程语言编写的949个开放源项目中应用特性来切除功能的效果。我们首先确定了每个项目采用特征切换框架的时刻。然后,我们观察到,采用这一应用是否意味着分支合并频率或复杂性的重大变化和缺陷的数量以及修正这些缺陷的平均时间都发生了重大变化。最后,我们比较了从一系列控制项目中得出的结果,这些控制项目不使用特性来切除框架。结果/结论/结论:我们可以看到,平均合并努力减少,平均需要的时间增加总时间来修正特性框架,但采用后又无法确认特性框架。