As everyone already knows, Google released a new open-source web browser called Chrome.
Having interest in code reuse, I downloaded the source code and examined all the open-source libraries used.
Google Chrome browser shows excellent example of code reuse. I found that they use at least 25 different software libraries!
Here is the full list of libraries, along with relative paths to source code and short library descriptions. Many of the libraries have been patched by googlers; look for README.google files in each library directory for information about changes.
|Google Breakpad||/src/breakpad||An open-source multi-platform crash reporting system.|
|Google URL||/src/googleurl||A small library for parsing and canonicalizing URLs.|
|Skia||/src/skia||Vector graphics engine.|
|Webkit||/src/webki||Open source web browser engine.|
|Netscape Portable Runtime (NSPR)||/src/base/third_party/nspr||Netscape Portable Runtime (NSPR) provides a platform-neutral API for system level and libc like functions.|
|Network Security Services (NSS)||/src/base/third_party/nss||Network Security Services (NSS) is a set of libraries designed to support cross-platform development of security-enabled client and server applications. Applications built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security standards.|
|Spell checker and morphological analyzer library and program designed for languages with rich morphology and complex word compounding or character encoding.|
|Windows Template Library||/src/chrome/third_party/wtl||C++ library for developing Windows applications and UI components. It extends ATL (Active Template Library) and provides a set of classes for controls, dialogs, frame windows, GDI objects, and more.|
|Google C++ Testing Framework||/src/testing/gtest||Google's framework for writing C++ tests on a variety of platforms (Linux, Mac OS X, Windows, Windows CE, and Symbian). Based on the xUnit architecture. Supports automatic test discovery, a rich set of assertions, user-defined assertions, death tests, fatal and non-fatal failures, various options for running the tests, and XML test report generation.|
|bsdiff and bspatch||/src/third_party/bsdiff and /src/third_party/bspatch||bsdiff and bspatch are tools for building and applying patches to binary files.|
|bzip2||/src/third_party/bzip2||bzip2 compresses files using the Burrows-Wheeler block sorting text compression algorithm, and Huffman coding.|
|International Components for Unicode (ICU)||/src/third_party/icu38||ICU is a mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization support for software applications.|
|libjpeg||/src/third_party/libjpeg||Library for handling the JPEG (JFIF) image format.|
|libpng||/src/third_party/libpng||PNG image format library. It supports almost all PNG features, is extensible, and has been extensively tested for over 13 years.|
|libxml||/src/third_party/libxml||XML C parsing library.|
|libxslt||/src/third_party/libxslt||XSLT C library.|
|LZMA||/src/third_party/lzma_sdk||LZMA is the default and general compression method of 7z format in the 7-Zip program.|
|stringencoders||/src/third_party/modp_b64||A collection of high performance c-string transformations (in this case, base 64 encoding/decoding), frequently 2x faster than standard implementations (if they exist at all).|
|Netscape Plugin Application Programming Interface (NPAPI)||/src/third_party/npapi||Cross-platform plugin architecture used by many web browsers.|
|Pthreads-w32||/src/third_party/pthread||Application programming interface (API) for writing multithreaded applications|
|SCons - a software construction tool||/src/third_party/scons||Open Source software construction tool—that is, a next-generation build tool. Think of SCons as an improved, cross-platform substitute for the classic Make utility with integrated functionality similar to autoconf/automake and compiler caches such as ccache.|
|sqlite||/src/third_party/sqlite||Software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine.|
|TLS Lite||/src/third_party/tlslite||Free Python library that implements SSL 3.0, TLS 1.0, and TLS 1.1. TLS Lite supports non-traditional authentication methods such as SRP, shared keys, and cryptoIDs in addition to X.509 certificates. Note: Python is not a part of Chrome. It's used for testing various parts of Chrome browser, such as code coverage, dependencies, measures page load times, compares generated html, etc.|
|zlib||/src/third_party/zlib||zlib is designed to be a free, general-purpose, legally unencumbered -- that is, not covered by any patents -- lossless data-compression library for use on virtually any computer hardware and operating system.|
They have done a really good job making these libraries work together. As someone said, "good coders code, great reuse."
I also found some other exciting things in the source, which I will soon post about. I recommend that you subscribe to my rss feed, if you are interested!
Talking about Chrome, I am waiting for Google to add capability to write extensions for their browser! I already made a list of extensions that I will try to create as soon as they add this feature.