Chromium (web browser) explained

Chromium
Logo Size:64px
Author:Google
Developer:The Chromium Projects, controlled by Google
Programming Language:C++ primarily,[1] HTML, CSS, JavaScript for UI and test suite[2]
Operating System:Windows, Linux, Android, iOS, macOS, BSD
Engines:Blink, V8
Platform:IA-32, x86-64, ARM, ARM64
License:BSD-3 and others

Chromium is a free and open-source web browser project, primarily developed and maintained by Google. It is a widely-used codebase, providing the vast majority of code for Google Chrome and many other browsers, including Microsoft Edge, Samsung Internet, and Opera. The code is also used by several app frameworks.

Licensing

Chromium is a free and open-source software project. The Google-authored portion is shared under the 3-clause BSD license.[3] Third party dependencies are subject to a variety of licenses, including MIT, LGPL, Ms-PL, and an MPL/GPL/LGPL tri-license.[4]

This licensing permits any party to build the codebase and share the resulting browser executable with the Chromium name and logo. Thus many Linux distributions do this, as well as FreeBSD and OpenBSD.

Differences from Google Chrome

Chromium provides the vast majority of source code for Google Chrome, but there are important differences.

Features

Chromium lacks the following Chrome features:[5]

Branding and licensing

Google first chose the name "Chrome" for its browser.[6] [7] Then the open-source release was named "Chromium" because chromium metal is used to make chrome plating.[8]

Chrome has the same user interface functionality as Chromium, but with a Google-branded color scheme. Unlike Chromium, Chrome is not open-source; its binaries are licensed as freeware under the Google Chrome Terms of Service.[9]

Development

The Chromium browser codebase contains over 32 million source lines of code, excluding comments and blank lines.[1]

Contributors

Chromium has been a Google project since its inception,[8] [10] and Google employees have done the bulk of the development work.[11]

Google refers to this project and the offshoot ChromiumOS as "the Chromium projects",[12] and its employees use @chromium.org email addresses for this development work. However, in terms of governance, the Chromium projects are not independent entities; Google retains firm control of them.[10]

The Chromium browser codebase is widely used, so others have made important contributions, most notably Microsoft, Igalia, Yandex, Intel, Samsung, LG, Opera, Vivaldi, and Brave.[11] [10] Some employees of these companies also have @chromium.org email addresses.

Architecture

Google designed the first multi-process browser.[13] Compared to single-process designs, this architecture has better responsiveness with many browser tabs open and security benefits of process isolation, but with the trade-off of higher memory usage.[14] [15] This was later refined as per-process website isolation, providing additional security.[14]

Another important design decision was for the browser's user interface to be minimalistic.[16] [17]

The browser engine was originally based on Apple's WebKit, which Google deemed the "obvious choice" of available options. However, Google's novel multi-process design required engine changes. This divergence from Apple's version increased over time, so in 2013 Google officially forked its version as the Blink engine.

Programming languages

C++ is the primary language, comprising over half of the codebase. This includes the Blink and V8 engines, the implementation of HTTP and other protocols, the internal caching system, the extension API, and most of the user interface.[18]

The rest of the user interface, called the WebUI, is implemented in HTML, CSS, and JavaScript (usually via TypeScript transpilation).[18] An extensive collection of web platform tests is also written in these languages plus XML.[19]

Third-party libraries that provide essential functionality,[20] such as SQLite and numerous codecs, are written in C, C++, or beginning in 2023,[21] [22] the newer Rust language.[1]

Support for mobile operating systems requires special languages: for Android both Java and Kotlin, and for iOS both Objective-C and Swift.[2] [1]

Python is the main language of the build system,[1] which also has special configuration files for Google's GN tool.[23]

Logistics

The bug tracking system is a publicly accessible website.[24] Participants are identified by their email addresses.

The Chromium continuous integration system automatically builds and tests the codebase several times a day.[25]

Builds are identified by a four-part version number that is major.minor.build.patch.[26] This versioning scheme and the branch points that occur every six to seven weeks are from Google Chrome and its development cycle.[27]

History

2008 to 2010

Google Chrome debuted in September 2008, and along with its release, the Chromium source code was also made available, allowing builds to be constructed from it.[8] [28] [29]

Upon release, Chrome was criticized for storing a user's passwords without the protection of a master password. Google has insisted that a master password provides no real security against knowledgeable hackers, but users argued that it would protect against co-workers or family members borrowing a computer and being able to view stored passwords as plaintext.[30] In December 2009, Chromium developer P. Kasting stated: "A master password was issue 1397. That issue is closed. We will not implement a master password. Not now, not ever. Arguing for it won't make it happen. 'A bunch of people would like it' won't make it happen. Our design decisions are not democratic. You cannot always have what you want."[31]

Version 3 was the first alpha available for Linux. Chromium soon incorporated native theming for Linux, using the GTK+ toolkit to allow it fit into the GNOME desktop environment.[32] [33] [34] [35] Version 3 also introduced JavaScript engine optimizations and user-selectable themes.[36]

Version 6 introduced features for user interface minimalism, as one of Google's goals was to make the browser "feel lightweight (cognitively and physically) and fast".[37] The changes were a unified tools menu, no home button by default (although user configurable), a combined reload/stop button, and the bookmark bar deactivated by default. It also introduced an integrated PDF reader, WebM and VP8 support for use with HTML video, and a smarter URL bar.[38] [39]

Version 7 boosted performance to twice that of prior versions via hardware acceleration.[40] [41] [42]

Version 8 focused on improved integration into ChromeOS and improved cloud features. These include background web applications, host remoting (allowing users centrally to control features and settings on other computers) and cloud printing.[42]

Version 9 introduced a number of features, including a URL bar feature for exposing phishing attacks and sandboxing for the Adobe Flash plug-in. Other additions were the WebGL library and access for the new Chrome Web Store.[43] [44] [45]

2011

In February, Google announced that it was considering large-scale user interface (UI) changes, including at least partial elimination of the URL bar, which had been a mainstay of browsers since the early years of the Web. The proposed UI was to be a consolidation of the row of tabs and the row of navigation buttons, the menu, and URL bar into a single row. The justification was freeing up more screen space for web page content. Google acknowledged that this would result in URLs not always being visible to the user, that navigation controls and menus may lose their context, and that the resulting single line could be quite crowded.[46] However, by August, Google decided that these changes were too risky and shelved the idea.[47]

In March, Google announced other directions for the project. Development priorities focused on reducing the size of the executable, integrating web applications and plug-ins, cloud computing, and touch interface support.[48] [49] Thus a multi-profile button was introduced to the UI, allowing users to log into multiple Google and other accounts in the same browser instance. Other additions were malware detection and support for hardware-accelerated CSS transforms.[50] [51]

By May, the results of Google's attempts to reduce the file size of Chromium were already being noted. Much of the early work in this area concentrated on shrinking the size of WebKit, the image resizer, and the Android build system.[52] Subsequent work introduced a more compact mobile version that reduced the vertical space of the UI.[53] [54]

Other changes in 2011 were GPU acceleration on all pages, adding support for the new Web Audio API, and the Google Native Client (NaCl) which permits native code supplied by third parties as platform-neutral binaries to be securely executed within the browser itself.[55] [56] Google's Skia graphics library was also made available for all Chromium versions.[57] [58]

Since 2012

The sync service added for Google Chrome in 2012 could also be used by Chromium builds.[59] [60] The same year, a new API for high-quality video and audio communication was added, enabling web applications to access the user's webcam and microphone after asking permission to do so.[61] [62] Then GPU accelerated video decoding for Windows and support for the QUIC protocol were added.[63] [64]

In 2013, Chromium's modified WebKit rendering engine was officially forked as the Blink engine.[65] [66]

Other changes in 2013 were the ability to reset user profiles and new browser extension APIs.[67] Tab indicators for audio and webcam usage were also added, as was automatic blocking of files detected as malware.[68]

Version 67 added the security benefit of per-process website isolation.[14] Then version 69 introduced a new browser theme, as part of the tenth anniversary of Google Chrome.[69] The same year, new measures were added to curtail abusive advertising.[70]

Since 2021, the Google Chrome sync service can no longer be used by Chromium builds.[71] [72]

Starting with version 110, only Windows 10 and later are supported for Windows users.[73]

Browsers based on Chromium

In addition to Google Chrome, many other actively developed browsers are based on the Chromium code.

Primarily non-English

Use in app frameworks

These notable app frameworks embed a Chromium browser as the functional core of custom apps:

The two prominent Chromium-based WebView components also provide a similar way to make apps:

With either approach, the custom app is implemented with HTML, CSS, JavaScript, and other web technologies. Moreover, the app can be readily deployed on the operating systems supported by Chromium. Since the 2010s, many apps have been created this way. (Two examples are Spotify and Slack.)[77] [78]

Notes and References

  1. Web site: Chromium - Language Breakdown . Open Hub . 19 February 2024.
  2. Web site: Chromium coding style . Google Open Source . Google Source . 22 April 2021.
  3. Web site: BSD license . Chromium repository . 27 April 2021.
  4. Web site: Chromium Terms and Conditions . 2 September 2008 . 27 April 2021 . . https://web.archive.org/web/20081022102106/https://code.google.com/chromium/terms.html . 22 October 2008.
  5. Web site: Notes on Chromium . Woolyss . 3 April 2021.
  6. News: Dougerty . Conor . July 12, 2015 . Sundar Pichai of Google Talks About Phone Intrusion . https://web.archive.org/web/20150719034413/https://bits.blogs.nytimes.com/2015/07/12/sundar-pichai-of-google-talks-about-phone-intrusion/ . July 19, 2015 . April 25, 2019 . . There is a reason when we built Chrome we minimized everything to do with Chrome so that all you spent time on was the website you cared about at the given time. We wanted the users to focus on the content they were using. The reason the product was named "Chrome" was we wanted to minimize the chrome of the browser. That's how we thought about it..
  7. Web site: Why is Google Chrome browser named as Chrome?. Murphy. Glen. 2012-12-18 . dmy-all. 6 July 2020.
  8. Web site: Welcome to Chromium. ((Google)). 2 September 2008 . 28 April 2021.
  9. Web site: Google Chrome Terms of Service. www.google.com. 26 September 2017.
  10. Web site: Stephen. Shankland. 30 November 2020. Google gets web allies by letting outsiders help build Chrome's foundation. CNET. 27 April 2021.
  11. Web site: Intent to Explain: Demystifying the Blink Shipping Process. Chromium Blog. 12 November 2019. 27 April 2021.
  12. Web site: The Chromium Projects . Google . 28 April 2021.
  13. Web site: Modern Multi-Process Browser Architecture . 22 January 2019 . Chrome was the first browser with a multi-process architecture. . 1 December 2023.
  14. Web site: Kosaka . Mariko . Inside look at modern web browser (part 1) . developer.chrome.com . 1 December 2023.
  15. Web site: Multi-process Architecture . 2023-11-18 . www.chromium.org.
  16. Web site: The story behind Google Chrome . YouTube . Google . 5 December 2023.
  17. News: Battle of the browsers - which is master of the web? . https://ghostarchive.org/archive/20220515/https://www.independent.co.uk/life-style/gadgets-and-tech/features/battle-of-the-browsers--which-is-master-of-the-web-1743947.html . 15 May 2022 . subscription . live . London . The Independent . Pat . Pilcher . 13 July 2009.
  18. Web site: chrome/browser/ui - chromium/src.git - Git at Google . Chromium repository . 20 December 2023.
  19. Web site: Web Platform Tests . Chromium repository . 27 April 2021.
  20. Web site: third_party - chromium/src.git - Git at Google . Chromium repository . 27 April 2021.
  21. Web site: Jansens . Dana . 2023-01-12 . Supporting the Use of Rust in the Chromium Project . 2023-01-13 . Google Online Security Blog . en.
  22. Web site: Rust in Chromium . Chromium docs . 2023-12-02.
  23. Web site: gn - Git at Google . 2023-12-03 . gn.googlesource.com.
  24. Web site: Chromium bug tracking system . 28 April 2021.
  25. Web site: Tour of the Chromium Continuous Integration Console. 26 April 2021.
  26. Web site: Version Numbers. The Chromium Projects. 1 May 2015. 14 March 2014. Mike. Frysinger.
  27. Web site: Chrome Release Cycle -12/16/2010 . Google Slides. 1 May 2015. 16 December 2010. Anthony. LaForge.
  28. Web site: Google unveils Chrome source code and Linux port. 19 June 2010. Paul. Ryan. September 2008.
  29. Web site: Google releases Chrome 1.0. 19 June 2010. Paul. Ryan. December 2008.
  30. Web site: 1397 - Master password is missing . 29 March 2011. bugs.chromium.org. March 2011.
  31. Web site: 812 - Profile/login support . 29 March 2011. bugs.chromium.org. March 2011.
  32. Web site: Hands on: Google Chromium browser alpha for Linux . 20 June 2010. Paul. Ryan. May 2009.
  33. Web site: Google releases Chrome preview for Mac OS X and Linux . 20 June 2010 . Paul. Ryan. June 2009.
  34. Web site: Google Chromium gains native theming support on Linux . 20 June 2010. Paul. Ryan. July 2009.
  35. Web site: Danger: Mac and Linux builds available . 22 June 2010 . Smith. Mike and Karen Grunberg. June 2009.
  36. Web site: Chrome 3 out, JavaScript performance increased 150% since v1 . 20 June 2010. Paul. Ryan. September 2009.
  37. Web site: User Experience . 5 July 2009 . dev.chromium.org . 2009 . Chromium Developer Documentation.
  38. Web site: Chromium's Unified Menu Comes to Daily Builds . https://web.archive.org/web/20100815043349/http://www.omgubuntu.co.uk/2010/07/chromiums-unified-menu-great-idea-sucks.html . dead . dmy-all . 2010-08-15 . 15 July 2010. Sneddon . Joey-Elijah. July 2010.
  39. Web site: Overview: Chrome 6, The Naked Browser . 14 July 2010. Gruener. Wolfgang. July 2010 . https://web.archive.org/web/20120406211829/http://www.conceivablytech.com/1770/products/chrome-6-the-naked-browser . 6 April 2012.
  40. Web site: Chromium 7 Has Arrived and It's Not that Awesome . 20 August 2010. Nakano . Chelsi. August 2010.
  41. Web site: First Look: Google Increases Graphics Performance With Chrome 7 . 20 August 2010 . Gruener . Wolfgang . August 2010 . https://web.archive.org/web/20120724042508/http://www.conceivablytech.com/2295/products/first-look-google-increases-graphics-performance-with-chrome-7 . 24 July 2012.
  42. News: A Preview of Chrome 8: Clouds Ahead . 14 October 2010. Gruener. Wolfgang. October 2010 . Conceivably Tech . https://web.archive.org/web/20120724042517/http://www.conceivablytech.com/3391/products/a-preview-of-chrome-8-clouds-ahead . 24 July 2012.
  43. News: Google's Next Big Browser Play: Prerendering and False Start? . 23 October 2010. Bakke. Kurt . November 2010 . Conceivably Tech. https://web.archive.org/web/20120724042540/http://www.conceivablytech.com/4059/products/googles-next-big-browser-play-perendering-and-false-start . 24 July 2012.
  44. News: Rolling out a sandbox for Adobe Flash Player . 1 December 2010. Schuh . Justin and Carlos Pizano . December 2010 . Chromium Blog.
  45. News: Chrome 9 and 11: Instant Search, More Speed . 6 February 2011 . Gruener . Wolfgang . February 2011 . Conceivably Tech . https://web.archive.org/web/20121018064658/http://www.conceivablytech.com/5491/products/chrome-9-and-11-instant-search-more-speed . 18 October 2012.
  46. News: Google May Kill Chrome URL Bar . 6 February 2011 . Gruener . Wolfgang . February 2011 . Conceivably Tech. https://web.archive.org/web/20130326023943/http://www.conceivablytech.com/5746/products/google-may-kill-chrome-url-bar . 26 March 2013.
  47. News: Google Shelves Hidden Location Bar . 9 August 2011. Gruener. Wolfgang. August 2011 . Conceivably Tech. https://web.archive.org/web/20120406211012/http://www.conceivablytech.com/8765/products/google-shelves-hidden-location-bar . 6 April 2012.
  48. Web site: Google Chrome in 2011: The Biggest Loser? . 27 March 2011 . Gruener. Wolfgang. March 2011. https://web.archive.org/web/20120818111245/http://www.conceivablytech.com/6390/products/google-chrome-in-2011-the-biggest-loser . 18 August 2012.
  49. Web site: Google working to reverse Chrome bloat . 27 March 2011. Shankland. Stephen. March 2011.
  50. News: Google Preps Huge UI Update For Chrome . 20 April 2011. Gruener. Wolfgang . April 2011 . Conceivably Tech. https://web.archive.org/web/20120406211102/http://www.conceivablytech.com/6908/products/google-preps-huge-ui-update-for-chrome . 6 April 2012.
  51. News: Chrome 12 arrives with security, rendering improvements . 12 June 2011. Paul. Ryan. June 2011 . Ars Technica.
  52. News: Google Trims Fat From Chrome . 5 May 2011 . Bailey. Dan. May 2011 . Conceivably Tech. https://web.archive.org/web/20120406211131/http://www.conceivablytech.com/7203/products/google-trims-fat-from-chrome . 6 April 2012.
  53. News: Chrome 13 introduces experimental hidden nav bar option . 19 May 2011. Paul. Ryan. May 2011 . Ars Technica.
  54. News: Google Is Serious: You Can Kill Chrome's URL Bar . 19 May 2011. Gruener . Wolfgang. May 2011 . Conceivably Tech. https://web.archive.org/web/20120419081802/http://www.conceivablytech.com/7485/products/google-is-serious-you-can-kill-chromes-url-bar . 19 April 2012.
  55. News: No More Updates For Firefox 4, Chromium 14 Released . 3 June 2011. Bailey. Dan. June 2011 . Conceivably Tech. https://web.archive.org/web/20120406211200/http://www.conceivablytech.com/7747/products/no-more-updates-for-firefox-4-chromium-14-released . 6 April 2012.
  56. News: Chrome 14 arrives with improved Lion support and NaCl . 20 September 2011. Paul. Ryan. September 2011 . Ars Technica.
  57. News: 3D Web Browsing Sneaks into Google Chrome . 19 September 2011. Bailey . Dan. September 2011 . Conceivably Tech . https://web.archive.org/web/20120818161953/http://www.conceivablytech.com/9400/products/3d-web-browsing-sneaks-into-google-chrome . 18 August 2012.
  58. News: Google To Switch Chromium For Mac Graphics to Skia . 19 September 2011. Bailey. Dan . September 2011 . Conceivably Tech. https://web.archive.org/web/20120616125718/http://www.conceivablytech.com/9448/business/google-to-switch-chromium-for-mac-graphics-to-skia . 16 June 2012.
  59. Web site: Keeping tabs on your tabs . 15 May 2012. Mathias. Raz . 15 May 2012.
  60. News: Hands-on with the new tab synchronization feature in Chrome 19 . 19 May 2012. Paul. Ryan . 16 May 2012 . Ars Technica.
  61. Web site: Stable Channel Release . 31 July 2012. Grunberg. Karen . 31 July 2012.
  62. News: Chrome 21 launches with webcam API and retina Mac support . 15 August 2012. Paul. Ryan . 31 July 2012 . Ars Technica.
  63. Web site: Stable Channel Release and Beta Channel . Chrome Releases . 6 November 2012. Grunberg. Karen. Google. 6 November 2012.
  64. Web site: Issue 11125002: Add QuicFramer and friends. . 2020-12-25 . dmy-all. Chromium Code Reviews . 2012-10-12 .
  65. Web site: Barth . Adam . Blink: A rendering engine for the Chromium project . blog.chromium.org . 3 April 2013 . 12 March 2024.
  66. Web site: Peter . Bright . Google going its own way, forking WebKit rendering engine . . . 3 April 2013 . 9 March 2017.
  67. Web site: Chrome 29 adds a reset button. 8 April 2014. Cho. Eddie. 20 August 2013. CNET . Download.com . 8 April 2014. https://web.archive.org/web/20140408211548/http://download.cnet.com/8301-2007_4-57599447-12/chrome-29-adds-a-reset-button/#!. dead.
  68. News: Stable Channel Update . 14 January 2014 . Karen . Grunberg . Daniel . Xie . 14 January 2014 . Chrome Releases . live . https://web.archive.org/web/20140116094641/http://googlechromereleases.blogspot.ca/2014/01/stable-channel-update.html . Jan 16, 2014 .
  69. Web site: Google Chrome Browser – New Material Design – 10 Years Anniversary . TehnoBlog.org . September 7, 2018 . live . https://web.archive.org/web/20240309035728/https://tehnoblog.org/how-to-fix-google-chrome-browser-new-round-design-revert-it-back/ . Mar 9, 2024 .
  70. Web site: Chrome 71 stomps on abusive advertising. 7 December 2018. Bradbury . Danny. Naked Security . 6 December 2018 . dead . https://web.archive.org/web/20181209124019/https://nakedsecurity.sophos.com/2018/12/06/chrome-71-stomps-on-abusive-advertising/ . Dec 9, 2018 .
  71. Web site: Limiting private API availability in Chromium. Chromium Blog . January 15, 2021 . Jochen . Eisinger . 20 March 2021.
  72. Web site: Chromium sync Google API removed. 24 January 2021. 20 March 2021.
  73. Web site: Chrome browser system requirements . Chrome Enterprise and Education Help . 10 March 2024.
  74. Web site: Qt WebEngine Overview - Qt WebEngine 5.11. doc.qt.io. 9 March 2024.
  75. Web site: Hildenbrand . Jerry . What is the Android System WebView and why do so many apps depend on it? . androidcentral.com . 9 March 2024.
  76. Web site: Introduction to Microsoft Edge WebView2 . learn.microsoft.com . 9 March 2024.
  77. Web site: Open Source - Spotify . Here are the sources to the great Chromium Embedded Framework that is used by the Spotify Desktop client. . 1 December 2023.
  78. News: Betts . Anaïs . Building Hybrid Applications with Electron . Slack Engineering . 25 October 2016 . Slack . 1 December 2023.