Skip to main content
Log in

The modular and feature toggle architectures of Google Chrome

  • Published:
Empirical Software Engineering Aims and scope Submit manuscript

Abstract

Software features often span multiple directories and conceptual modules making the extraction of feature architectures difficult. In this work, we extract a feature toggle architectural view and show how features span the conceptual, concrete, and reference architectures. Feature toggles are simple conditional flags that allow developers to turn a feature on or off in a running system. They are commonly used by large web companies, including Google, Netflix and Facebook to selectively enable and disable features. Recently, libraries to help inject and manage toggles have been created for all the major programming languages. We extract the feature toggles from the Google Chrome web browser to illustrate their use in understanding the architecture of a system. Since there is no high-level conceptual and concrete architectures for Chrome, we had to manually derive these representations from available documentation and map them into the source code. These modular representations of a modern web browser allowed us to update the 12 year old research on browser reference architectures with current technologies and browser concepts. Mining the usages of feature toggles in the source code, we were able to map them on to the modular representation to create a feature toggle architectural view of Chrome. We are also able to show which features are contained in a module and which modules a feature spans. Throughout the paper, we show how the feature toggle view can give new perspectives into the feature architecture of a system.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9

Similar content being viewed by others

Notes

  1. For example, Java has 5 competing toggle libraries http://featureflags.io/java-feature-flags/accessed May 20, 2018

References

  • Adams B, McIntosh S (2016) Modern release engineering in a nutshell–why researchers should care. In: 2016 IEEE 23rd International conference on software analysis, evolution, and reengineering (SANER), vol 5. IEEE, pp 78–90

  • Andritsos P, Tzerpos V (2005) Information-theoretic software clustering. IEEE Trans Softw Eng 31(2):150–165. https://doi.org/10.1109/TSE.2005.25

    Article  Google Scholar 

  • Anquetil N, Lethbridge TC (2003) Comparative study of clustering algorithms and abstract representations for software remodularisation. IEE Proc Softw 150(3):185–201. https://doi.org/10.1049/ip-sen:20030581

    Article  Google Scholar 

  • Antoniol G, Canfora G, Casazza G, De Lucia A, Merlo E (2002) Recovering traceability links between code and documentation. IEEE Trans Softw Eng 28(10):970–983

    Article  Google Scholar 

  • Batory D, Liu J, Sarvela JN (2003) Refinements and multi-dimensional separation of concerns. In: Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on foundations of software engineering ESEC/FSE-11. ACM, New York, pp 48–57, https://doi.org/10.1145/940071.940079

  • Benavides D, Trinidad P, Ruiz-Cortés A (2005) Automated reasoning on feature models. In: Proceedings of the 17th international conference on advanced information systems engineering CAiSE’05. Springer, Berlin, pp 491–503, https://doi.org/10.1007/11431855_34

  • Bowman IT, Holt RC, Brewster NV (1999) Linux as a case study: its extracted software architecture. In: Proceedings of the 21st international conference on software engineering ICSE ’99. ACM, New York, pp 555–563, https://doi.org/10.1145/302405.302691

  • Bravo (2012) List of chromium command line switches (for 2012-09-26). http://peter.sh/experiments/chromium-command-line-switches/?date=2012-09-26

  • Chen K, Rajlich V (2000) Case study of feature location using dependence graph. In: Proceedings IWPC 2000. 8th International workshop on program comprehension, pp 241–247. https://doi.org/10.1109/WPC.2000.852498

  • Chrome (2015a) The chromium projects: design documents. http://www.chromium.org/developers/design-documents

  • Chrome (2015b) Google chrome developers’ documentation. https://developer.chrome.com/extensions/devguide

  • Chrome (2016a) The chromium projects: Nacl and pnacl. http://www.chromium.org/native-client/nacl-and-pnacl

  • Chrome (2016b) Content module. http://www.chromium.org/developers/content-module

  • Chrome (2016c) What are extensions. https://developer.chrome.com/extensions

  • Chrome G (2013) Saying goodbye to our old friend npapi. http://bit.ly/2fgG8UX

  • ChromeWiki (2015) Google chrome official wiki page. http://en.wikipedia.org/wiki/Chrome

  • Corazza A, Di Martino S, Scanniello G (2010) A probabilistic based approach towards software system clustering. In: Proceedings of the 2010 14th European conference on software maintenance and reengineering CSMR ’10. IEEE Computer Society, Washington, DC, pp 88–96. https://doi.org/10.1109/CSMR.2010.36

  • Corazza A, Martino SD, Maggio V, Scanniello G (2011) Investigating the use of lexical information for software system clustering. In: Proceedings of the 2011 15th European conference on software maintenance and reengineering CSMR ’11. IEEE Computer Society, Washington, DC, pp 35–44. https://doi.org/10.1109/CSMR.2011.8

  • CSAcademy (2017) Graph editor. https://csacademy.com/app/graph_editor

  • Czarnecki K, Helsen S, Eisenecker U (2004) Staged configuration using feature models. Springer, Berlin, pp 266–283

    Google Scholar 

  • Dagenais B, Robillard MP (2012) Recovering traceability links between an API and its learning resources. In: Proceedings of the 34th ACM/IEEE international conference on software engineering, pp 47 –57

  • Dintzner N, v Deursen A, Pinzger M (2016) Fever: extracting feature-oriented changes from commits. In: 2016 IEEE/ACM 13th Working conference on mining software repositories (MSR), pp 85–96. https://doi.org/10.1109/MSR.2016.018

  • Dit B, Revelle M, Gethers M, Poshyvanyk D (2013) Feature location in source code: a taxonomy and survey. J Softw Evol Process 25(1):53–95

    Article  Google Scholar 

  • Dixon E, Enos E, Brodmerkle S (2011) A/b testing of a webpage. US Patent 7,975,000

  • Dubinsky Y, Rubin J, Berger T, Duszynski S, Becker M, Czarnecki K (2013) An exploratory study of cloning in industrial software product lines. In: Proceedings of the 2013 17th European conference on software maintenance and reengineering CSMR ’13. IEEE Computer Society, Washington, DC, pp 25–34, https://doi.org/10.1109/CSMR.2013.13

  • Ethertank, DBaron, Kohei, Kennykaiyinyu (2013) https://mzl.la/2i7M1vp

  • FeatureFlags (2018) Feature flags, toggles, controls: Libraries/sdks. https://featureflags.io/feature-flags/

  • Firefox (2015) Multi-process Firefox - technical overview. https://mzl.la/2AwsuJp

  • Fitzgerald B, Stol KJ (2014) Continuous software engineering and beyond: trends and challenges. In: Proceedings of the 1st international workshop on rapid continuous software engineering RCoSE 2014. ACM, New York, pp 1–9, https://doi.org/10.1145/2593812.2593813

  • Fowler (2010) Featuretoggle. http://martinfowler.com/bliki/FeatureToggle.html

  • Garcia J, Popescu D, Mattmann C, Medvidovic N, Cai Y (2011) Enhancing architectural recovery using concerns. In: Proceedings of the 2011 26th IEEE/ACM international conference on automated software engineering ASE ’11. IEEE Computer Society, Washington, DC, pp 552–555. https://doi.org/10.1109/ASE.2011.6100123

  • Garcia J, Ivkovic I, Medvidovic N (2013) A comparative analysis of software architecture recovery techniques. In: Proceedings of the 28th IEEE/ACM international conference on automated software engineering ASE’13. IEEE Press, Piscataway, pp 486–496, https://doi.org/10.1109/ASE.2013.6693106

  • Griss ML, Favaro J, Alessandro Md (1998) Integrating feature modeling with the rseb. In: Proceedings of the 5th international conference on software reuse ICSR ’98. IEEE Computer Society, Washington, DC, pp 76–. http://dl.acm.org/citation.cfm?id=551789.853486

  • Grosskurth A, Godfrey MW (2005) A reference architecture for web browsers. In: Proceedings of the 21st IEEE international conference on software maintenance ICSM ’05. IEEE Computer Society, Washington, DC, pp 661–664, https://doi.org/10.1109/ICSM.2005.13

  • Jansen A, Bosch J (2005) Software architecture as a set of architectural design decisions. In: Proceedings of the 5th Working IEEE/IFIP conference on software architecture WICSA ’05. IEEE Computer Society, Washington, DC, pp 109–120, https://doi.org/10.1109/WICSA.2005.61

  • Kang K, Cohen S, Hess J, Novak W, Peterson S (1990) Feature–oriented domain analysis (FODA) feasibility study. Tech. Rep CMU/SEI-90-TR-21. Software Engineering Institute, Carnegie Mellon University

  • Kellens A, Mens K, Tonella P (2007) A survey of automated code-level aspect mining techniques. Transactions on aspect-oriented software development IV, 143–162

  • Kiczales G, Hilsdale E, Hugunin J, Kersten M, Palm J, Griswold WG (2001) An overview of aspectj. In: Proceedings of the 15th European conference on object-oriented programming ECOOP ’01. Springer, London, pp 327–353. http://dl.acm.org/citation.cfm?id=646158.680006

  • Kobayashi K, Kamimura M, Kato K, Yano K, Matsuo A (2012) Feature-gathering dependency-based software clustering using dedication and modularity. In: Proceedings of the 2012 IEEE international conference on software maintenance (ICSM) ICSM ’12. IEEE Computer Society, Washington, DC, pp 462–471, https://doi.org/10.1109/ICSM.2012.6405308

  • Krikhaar RL (1999) Software architecture reconstruction. Philips Electronics

  • Kruchten P (1995) Architecture Blueprints&Mdash;the&Ldquo;4 + 1&Rdquo; view model of software architecture. TRI-Ada ’95. ACM, New York

    Google Scholar 

  • Laforge (2011) Chrome release cycle. http://www.slideshare.net/Jolicloud/chrome-release-cycle, job title: Technical Program Manager (Chrome) at Google

  • Lindvall M, Sandahl K (1996) Practical implications of traceability. Softw Pract Exper 26(10):1161–1180. https://doi.org/10.1002/(SICI)1097-024X(199610)26:10<1161::AID-SPE58>3.3.CO;2-O

  • Mancoridis S, Mitchell BS, Chen Y, Gansner ER (1999) Bunch: a clustering tool for the recovery and maintenance of software system structures. In: Proceedings of the IEEE international conference on software maintenance ICSM ’99. IEEE Computer Society, Washington, DC, pp 50–. http://dl.acm.org/citation.cfm?id=519621.853406

  • Maqbool O, Babri HA (2004) The weighted combined algorithm: a linkage algorithm for software clustering. In: Proceedings of the Eighth Euromicro working conference on software maintenance and reengineering (CSMR’04) CSMR ’04. IEEE Computer Society, Washington, DC, pp 15–. http://dl.acm.org/citation.cfm?id=977397.977725

  • Marcus A, Maletic J (2003) Recovering documentation-to-source-code traceability links using latent semantic indexing. In: Proceedings of the 25th ACM/IEEE International conference on software engineering, pp 125–135

  • Mirakhorli M, Cleland-Huang J (2011) Transforming trace information in architectural documents into re-usable and effective traceability links. In: Proceedings of the 6th International workshop on SHAring and reusing architectural knowledge SHARK ’11. ACM, New York, pp 45–52. https://doi.org/10.1145/1988676.1988685

  • MozillaWiki (2015) javascript:spidermonkey:odinmonkey. https://mzl.la/2A4K5YQ

  • Naseem R, Maqbool O, Muhammad S (2011) Improved similarity measures for software clustering. In: Proceedings of the 2011 15th European conference on software maintenance and reengineering CSMR ’11. IEEE Computer Society, Washington, DC, pp 45–54, https://doi.org/10.1109/CSMR.2011.9

  • Queille JP, Voidrot JF, Wilde N, Munro M (1994) The impact analysis task in software maintenance: a model and a case study. In: Proceedings of the International conference on software maintenance ICSM ’94. IEEE Computer Society, Washington, DC, pp 234–242. http://dl.acm.org/citation.cfm?id=645543.655725

  • Rahman AAU, Helms E, Williams L, Parnin C (2015) Synthesizing continuous deployment practices used in software development. In: 2015 Agile Conference, pp 1–10. https://doi.org/10.1109/Agile.2015.12

  • Rahman MT (2017) Chrome architecture replication package. https://github.com/tajmilur-rahman/chrome-architecture

  • Rahman MT, Querel LP, Rigby PC, Adams B (2016) Feature toggles: practitioner practices and a case study. In: Proceedings of the 13th international conference on mining software repositories MSR ’16. ACM, New York, pp 201–211, https://doi.org/10.1145/2901739.2901745

  • Rigby PC, Robillard MP (2013) Discovering essential code elements in informal documentation. In: Proceedings of the 2013 International conference on software engineering, ICSE ’13, pp 832–841

  • Rubin J, Czarnecki K, Chechik M (2015) Cloned product variants: from ad-hoc to managed software product lines. Int J Softw Tools Technol Transf 17(5):627–646. https://doi.org/10.1007/s10009-014-0347-9

    Article  Google Scholar 

  • Scitools (2016) Understand source code analyzer. https://scitools.com

  • Sochos P, Philippow I, Riebisch M (2004) Feature-oriented development of software product lines: mapping feature models to the architecture. In: Object-Oriented and internet-based technologies: 5th annual international conference on object-oriented and internet-based technologies, concepts, and applications for a networked world, Net. ObjectDays 2004 Erfurt, Germany, September 27–30, 2004 Proceedings, vol 3263. Springer, pp 138

  • TheRegisterCOUK (2011) Google’s native client goes live in chrome. http://www.theregister.co.uk/2011/09/16/native_client_debuts_in_chrome/

  • Tzerpos V, Holt RC (2000) Acdc: an algorithm for comprehension-driven clustering. In: Proceedings of the seventh working conference on reverse engineering (WCRE’00) WCRE ’00. http://dl.acm.org/citation.cfm?id=832307.837118. IEEE Computer Society, Washington, DC, pp 258–

  • Wu J, Hassan AE, Holt RC (2005) Comparison of clustering algorithms in the context of software evolution. In: Proceedings of the 21st IEEE international conference on software maintenance ICSM ’05. IEEE Computer Society, Washington, DC, pp 525–535, https://doi.org/10.1109/ICSM.2005.31

Download references

Acknowledgements

We would like to thank Sumit Sarkar, Alexey Moujeer, Taiseem Ahmed and Gautam Sidharth Verma for their assistance in mapping architectural entities in the documentation to the concrete source files and directories.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Md Tajmilur Rahman.

Additional information

Communicated by: Harald Gall

Publisher’s Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Rahman, M.T., Rigby, P.C. & Shihab, E. The modular and feature toggle architectures of Google Chrome. Empir Software Eng 24, 826–853 (2019). https://doi.org/10.1007/s10664-018-9639-0

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10664-018-9639-0

Keywords

Navigation