Jump to content

Chromium (web browser)

From Wikipedia, the free encyclopedia

Chromium
Original author(s)Google[1]
Developer(s)The Chromium Projects,[2] controlled by Google[3]
Initial release2 September 2008; 16 years ago (2008-09-02)[1]
Repository
Written inC++ primarily,[4] HTML, CSS, JavaScript for UI and test suite[5][6]
EnginesV8, Blink (WebKit on iOS/iPadOS)[7]
Operating system
PlatformIA-32, x86-64, ARM, ARM64
LicenseBSD-3[8] and others[9]
Websitechromium.org

Chromium is a free and open-source web browser project primarily developed and maintained by Google.[3] It serves as the foundation for a number of browsers, including Google Chrome, Microsoft Edge, Samsung Internet, and Opera. The codebase is also used in several application frameworks.

Comparison with Google Chrome

[edit]

Chromium serves as the upstream project for Google Chrome, providing the vast majority of its source code. However, there are several differences between the two in terms of licensing, features and branding.

Licensing

[edit]

Chromium's source code is released under free and open-source software licenses. The portion authored by Google is primarily licensed under the 3-clause BSD license.[8] Third-party components may use other licenses, such as the MIT License, LGPL, Ms-PL, and a tri-license under the Mozilla Public License, GPL, and LGPL.[9] These licenses permit third parties to build and distribute the browser. As a result, many Linux distributions, as well as FreeBSD and OpenBSD, include Chromium builds.[10]

In contrast, Google Chrome includes proprietary features and branding. It is distributed as freeware under the Google Chrome Terms of Service and is not open source.[11]

Features

[edit]

Chrome includes several features not present in Chromium, such as:[10]

Branding

[edit]

The names also reflect different intentions. Google named its browser "Chrome" to emphasize a minimal interface and draw attention to web content rather than browser controls.[13][14] The open-source project was later named "Chromium" after the chromium metal used in chrome plating.[1]

Development

[edit]

Chromium is an open-source web browser project led by Google, with a codebase of over 32 million source lines of code (excluding comments and blank lines).[4] Since the project began, most of the development work has been done by Google employees, but many other companies such as Microsoft, Intel, Samsung, Opera, and Brave have also contributed.[3][15] However, Google retains full control over the project.[16] Google refers to this project and its offshoot ChromiumOS collectively as "the Chromium projects".[2]

One of Chromium's key innovations is its design as a multi-process browser.[17][18] This means it separates different tabs and functions into separate processes, which improves speed and security but uses more memory.[19][20] Later, this design was improved to isolate websites even more strictly for added security.[19]

Chromium’s user interface was created to be simple and minimalistic, focusing on ease of use.[18][21][22]

The browser engine was originally based on Apple's WebKit,[23] but Google later developed its own engine called Blink to better support its multi-process architecture.[23][24]

Most of Chromium’s code is written in C++, including its core components like the Blink engine, the JavaScript engine (V8), network protocols, caching, and the main parts of the user interface.[25] The rest of the interface, called the WebUI, uses web technologies such as HTML, CSS, and JavaScript (often converted from TypeScript).[25][5] Various tests for web standards are also written in these languages plus XML.[6][4]

Third-party libraries provide important functions like databases and media codecs.[26] These are mostly written in C, C++, or recently, Rust.[4][27][28] For mobile platforms, Chromium uses additional languages: Java and Kotlin for Android, and Objective-C and Swift for iOS.[4][5]

The build system, which compiles and prepares the browser software, is mainly written in Python and uses Google’s GN tool for configuration.[4][29]

Chromium's development is publicly tracked through an open bug system, where contributors use their email addresses.[30] The project also runs automated continuous integration systems that builds and test the browser multiple times a day to catch problems early.[31]

Version numbers follow a four-part system (major.minor.build.patch) based on Google Chrome's development cycle, with new development branches every six to seven weeks.[32][33]

History

[edit]

2008 to 2010

[edit]
An alpha build of Chromium 3 for Linux

Google Chrome debuted in September 2008, and along with its release, the Chromium source code was also made available, allowing third parties to build their own browsers from it.[1][34][35]

Version 3 was the first alpha release for Linux, and included native theming using the GTK+ toolkit to better integrate with the GNOME desktop environment.[36][37][38][39] It also introduced improved JavaScript engine performance and user-selectable themes.[40]

Version 6 focused on minimalism and usability, consolidating UI elements and modifying defaults such as hiding the home button and bookmark bar. Additional features included an integrated PDF reader, support for WebM and VP8 video formats, and enhancements to the URL bar.[41][42][43]

Version 7 introduced performance improvements, including early implementation of hardware acceleration.[44][45][46]

Version 8 focused on cloud and ChromeOS integration, introducing background web application support, remote desktop capabilities, and cloud printing.[46]

Version 9 added features such as a phishing detection mechanism in the URL bar, sandboxing for the Adobe Flash plug-in, support for WebGL, and access to the newly launched Chrome Web Store.[47][48][49]

2011

[edit]
Chromium logo introduced in 2011[50]

In February 2011, Google explored user interface redesign concepts, including a proposal to consolidate tabs, navigation buttons, menus, and the address bar into a single row. The objective was to maximize screen space, although the proposal raised concerns about usability and visibility of URLs. The idea was ultimately shelved by August due to concerns over usability.[51][52]

In March, Google outlined new development priorities, including reducing the size of the Chromium executable, enhancing the integration of web applications and plug-ins, cloud features, and support for touchscreen interfaces.[53][54] A multi-profile feature was also added, allowing users to manage multiple accounts within a single session. Additional improvements included malware detection and support for hardware-accelerated CSS transforms.[55][56]

Efforts to reduce the software’s overall file size became visible by May, with early work targeting components such as WebKit, the image resizer, and the Android build system.[57] A more compact UI for mobile was also introduced.[58][59]

Other notable changes in 2011 included GPU acceleration for all pages, support for the Web Audio API, and the Google Native Client (NaCl), which enables secure execution of platform-neutral native code within the browser.[60][61] Google's Skia graphics library was also made available for all Chromium versions.[62][63]

Since 2012

[edit]
The Chromium Material Icon used until 2022

The sync service added for Google Chrome in 2012 could also be used by Chromium builds.[64][65] 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.[66][67] Then GPU accelerated video decoding for Windows and support for the QUIC protocol were added.[68][69]

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

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

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

Since 2021, the Google Chrome sync service can no longer be used by Chromium builds.[74][12] Also, starting with version 89, only Intel and AMD processors with the SSE3 instruction set or later are supported.[75]

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

Browsers based on Chromium

[edit]

In addition to Google Chrome, many other actively developed browsers are based on the Chromium code. Most of these are proprietary, like Chrome, but some remain free and open-source software, like Chromium.[77][78][79][80]

Proprietary

[edit]

Free and open-source

[edit]

Use in app frameworks

[edit]

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.)[84][85]

References

[edit]
  1. ^ a b c d "Welcome to Chromium". Google. 2 September 2008. Retrieved 28 April 2021.
  2. ^ a b "The Chromium Projects". Google. Retrieved 28 April 2021.
  3. ^ a b c Shankland, Stephen (30 November 2020). "Google gets web allies by letting outsiders help build Chrome's foundation". CNET. Retrieved 27 April 2021.
  4. ^ a b c d e f "Chromium – Language Breakdown". Open Hub. Retrieved 19 February 2024.
  5. ^ a b c "Chromium coding style". Google Open Source. Google Source. Retrieved 22 April 2021.
  6. ^ a b "Web Platform Tests". Chromium repository. Retrieved 27 April 2021.
  7. ^ "Open-sourcing Chrome on iOS!". 2017. Retrieved 26 April 2021. Due to constraints of the iOS platform, all browsers must be built on top of the WebKit rendering engine.
  8. ^ a b "BSD license". Chromium repository. Retrieved 27 April 2021.
  9. ^ a b "Chromium Terms and Conditions". Google Code. 2 September 2008. Archived from the original on 22 October 2008. Retrieved 27 April 2021.
  10. ^ a b "Notes on Chromium". Woolyss. Retrieved 3 April 2021.
  11. ^ "Google Chrome Terms of Service". Google. Retrieved 26 September 2017.
  12. ^ a b "Chromium sync Google API removed". 24 January 2021. Retrieved 20 March 2021.
  13. ^ Dougerty, Conor (12 July 2015). "Sundar Pichai of Google Talks About Phone Intrusion". The New York Times. Archived from the original on 19 July 2015. Retrieved 25 April 2019.
  14. ^ Murphy, Glen (18 December 2012). "Why is Google Chrome browser named as Chrome?". Retrieved 6 July 2020.
  15. ^ "Intent to Explain: Demystifying the Blink Shipping Process". Chromium Blog. 12 November 2019. Retrieved 27 April 2021.
  16. ^ Cite error: The named reference tcphome3 was invoked but never defined (see the help page).
  17. ^ "Modern Multi-Process Browser Architecture". 22 January 2019. Retrieved 1 December 2023. Chrome was the first browser with a multi-process architecture.
  18. ^ a b "The story behind Google Chrome". YouTube. Google. 26 August 2008. Retrieved 5 December 2023.
  19. ^ a b c Kosaka, Mariko. "Inside look at modern web browser (part 1)". developer.chrome.com. Retrieved 1 December 2023.
  20. ^ "Multi-process Architecture". www.chromium.org. Retrieved 18 November 2023.
  21. ^ Pilcher, Pat (13 July 2009). "Battle of the browsers – which is master of the web?". The Independent. London. Archived from the original on 15 May 2022.
  22. ^ "User Experience". Chromium Developer Documentation. dev.chromium.org. 2009. Retrieved 5 July 2009.
  23. ^ a b "chrome/browser/ui – chromium/src.git – Git at Google". Chromium repository. Retrieved 20 December 2023.
  24. ^ "third_party – chromium/src.git – Git at Google". Chromium repository. Retrieved 27 April 2021.
  25. ^ Jansens, Dana (12 January 2023). "Supporting the Use of Rust in the Chromium Project". Google Online Security Blog. Retrieved 13 January 2023.
  26. ^ "Rust in Chromium". Chromium docs. Retrieved 2 December 2023.
  27. ^ "gn – Git at Google". gn.googlesource.com. Retrieved 3 December 2023.
  28. ^ "Chromium bug tracking system". Retrieved 28 April 2021.
  29. ^ "Tour of the Chromium Continuous Integration Console". Retrieved 26 April 2021.
  30. ^ Frysinger, Mike (14 March 2014). "Version Numbers". The Chromium Projects. Retrieved 1 May 2015.
  31. ^ LaForge, Anthony (16 December 2010). "Chrome Release Cycle -12/16/2010". Google Slides. Retrieved 1 May 2015.
  32. ^ Paul, Ryan (September 2008). "Google unveils Chrome source code and Linux port". Retrieved 19 June 2010.
  33. ^ Paul, Ryan (December 2008). "Google releases Chrome 1.0". Retrieved 19 June 2010.
  34. ^ Cite error: The named reference Paul27May092 was invoked but never defined (see the help page).
  35. ^ Cite error: The named reference Paul05Jun092 was invoked but never defined (see the help page).
  36. ^ Cite error: The named reference Paul08Jul092 was invoked but never defined (see the help page).
  37. ^ Cite error: The named reference ChromiumBlog04Jun092 was invoked but never defined (see the help page).
  38. ^ Cite error: The named reference Paul16Sep092 was invoked but never defined (see the help page).
  39. ^ Cite error: The named reference Chromium User Exp2 was invoked but never defined (see the help page).
  40. ^ Cite error: The named reference OMGUbuntu11Jul102 was invoked but never defined (see the help page).
  41. ^ Cite error: The named reference Gruener11Jul102 was invoked but never defined (see the help page).
  42. ^ Cite error: The named reference NakanoAug102 was invoked but never defined (see the help page).
  43. ^ Cite error: The named reference Gruener17Aug102 was invoked but never defined (see the help page).
  44. ^ a b Cite error: The named reference Gruener08Oct102 was invoked but never defined (see the help page).
  45. ^ Cite error: The named reference Bakke11Nov102 was invoked but never defined (see the help page).
  46. ^ Cite error: The named reference ChromiumBlog01Dec102 was invoked but never defined (see the help page).
  47. ^ Cite error: The named reference Gruener04Feb112 was invoked but never defined (see the help page).
  48. ^ Protalinski, Emil (16 March 2011). "Google Chrome and Chromium to get new logos". Conceivably Tech. Retrieved 10 December 2017.
  49. ^ Cite error: The named reference Gruener20Feb112 was invoked but never defined (see the help page).
  50. ^ Cite error: The named reference Gruener09Aug112 was invoked but never defined (see the help page).
  51. ^ Cite error: The named reference Gruener22Mar112 was invoked but never defined (see the help page).
  52. ^ Cite error: The named reference Shankland22Mar112 was invoked but never defined (see the help page).
  53. ^ Cite error: The named reference Gruener19Apr112 was invoked but never defined (see the help page).
  54. ^ Cite error: The named reference Paul10Jun112 was invoked but never defined (see the help page).
  55. ^ Cite error: The named reference Bailey04May112 was invoked but never defined (see the help page).
  56. ^ Cite error: The named reference Paul19May112 was invoked but never defined (see the help page).
  57. ^ Cite error: The named reference Gruener19May112 was invoked but never defined (see the help page).
  58. ^ Cite error: The named reference Bailey02Jun112 was invoked but never defined (see the help page).
  59. ^ Cite error: The named reference Paul18Sep112 was invoked but never defined (see the help page).
  60. ^ Bailey, Dan (September 2011). "3D Web Browsing Sneaks into Google Chrome". Conceivably Tech. Archived from the original on 18 August 2012. Retrieved 19 September 2011.
  61. ^ Bailey, Dan (September 2011). "Google To Switch Chromium For Mac Graphics to Skia". Conceivably Tech. Archived from the original on 16 June 2012. Retrieved 19 September 2011.
  62. ^ Mathias, Raz (15 May 2012). "Keeping tabs on your tabs". Retrieved 15 May 2012.
  63. ^ Paul, Ryan (16 May 2012). "Hands-on with the new tab synchronization feature in Chrome 19". Ars Technica. Retrieved 19 May 2012.
  64. ^ Grunberg, Karen (31 July 2012). "Stable Channel Release". Retrieved 31 July 2012.
  65. ^ Paul, Ryan (31 July 2012). "Chrome 21 launches with webcam API and retina Mac support". Ars Technica. Retrieved 15 August 2012.
  66. ^ Grunberg, Karen (6 November 2012). "Stable Channel Release and Beta Channel". Chrome Releases. Google. Retrieved 6 November 2012.
  67. ^ "Issue 11125002: Add QuicFramer and friends". Chromium Code Reviews. 12 October 2012. Retrieved 25 December 2020.
  68. ^ Cho, Eddie (20 August 2013). "Chrome 29 adds a reset button". Download.com. CNET. Archived from the original on 8 April 2014. Retrieved 8 April 2014.
  69. ^ Grunberg, Karen; Xie, Daniel (14 January 2014). "Stable Channel Update". Chrome Releases. Archived from the original on 16 January 2014. Retrieved 14 January 2014.
  70. ^ "Google Chrome Browser – New Material Design – 10 Years Anniversary". TehnoBlog.org. 7 September 2018. Archived from the original on 9 March 2024.
  71. ^ Bradbury, Danny (6 December 2018). "Chrome 71 stomps on abusive advertising". Naked Security. Archived from the original on 9 December 2018. Retrieved 7 December 2018.
  72. ^ Eisinger, Jochen (15 January 2021). "Limiting private API availability in Chromium". Chromium Blog. Retrieved 20 March 2021.
  73. ^ Weatherbed, Jess (8 February 2021). "Google Chrome will no longer support some older processors". TechRadar. Archived from the original on 11 February 2021. Retrieved 16 February 2021.
  74. ^ "Chrome browser system requirements". Chrome Enterprise and Education Help. Retrieved 10 March 2024.
  75. ^ "What are the best Chrome based browsers?". NordVPN (in Portuguese). 7 June 2019. Retrieved 4 October 2024.
  76. ^ "Chromium-based browsers". Alternative to.
  77. ^ "10 Best Chromium-Based Browsers 2024". BrowserScan. Retrieved 4 October 2024.
  78. ^ "16 Best Chromium Browsers 2024 [Ranked & Reviewed]". Alvaro Trigo. 25 November 2022. Retrieved 4 October 2024.
  79. ^ "Qt WebEngine Overview – Qt WebEngine 5.11". doc.qt.io. Retrieved 9 March 2024.
  80. ^ Hildenbrand, Jerry (23 March 2021). "What is the Android System WebView and why do so many apps depend on it?". androidcentral.com. Retrieved 9 March 2024.
  81. ^ "Introduction to Microsoft Edge WebView2". learn.microsoft.com. Retrieved 9 March 2024.
  82. ^ "Open Source – Spotify". Retrieved 1 December 2023. Here are the sources to the great Chromium Embedded Framework that is used by the Spotify Desktop client.
  83. ^ Betts, Anaïs (25 October 2016). "Building Hybrid Applications with Electron". Slack Engineering. Slack. Retrieved 1 December 2023.
[edit]