Code Search for Google open source projects

We are pleased to launch Code Search for Google open source projects. Code Search is one of Google’s most popular internal tools, and now we have a version (same binary, different flags) targeted to open source communities.

Googlers use Code Search every day to help understand the codebase: they search for half-remembered functions and usages; jump through the codebase to figure out what calls the function they are viewing; and try to identify when and why a particular line of code changed.

The Code Search tool gives a rich code browsing experience. For example, the blame button shows which user last changed each line and you can display history on the same page as the file contents. In addition, it supports a powerful search language and, for some repositories, cross-references.

Suggest-as-you-type in any search box annotates suggestions with the type of code object, the repository and the path, helping users find what they want faster.


The search language supports regular expressions and a number of helpful search atoms. For a user looking for a function foo in a Go file, instead of sifting through thousands of results containing foo, the user can search for lang:go function:foo to limit search results to Go files where foo is a function and not a struct or a word in a comment.

One example is finding a file using only part of the name. The query file:KytheURI.java goes directly to the file, since there is only one such file.

See the quick reference for more information.

In addition to text search, some of the open source repositories have cross-references powered by Kythe. Kythe is a Google open source project that includes tools to help understand code. Project owners instrument a build of their repository to output compilation information for Kythe. Kythe tools convert this data to a graph. This graph connects definitions to declarations and code references to the abstract objects they represent (described by a graph schema). Google then runs an internal pipeline that combines these graphs for the different languages, prunes unnecessary pieces, and optimizes it for serving cross-references. The whole process runs several times per day to keep the data fresh.

Open source communities use a broader set of build systems than Google. In order to support cross-references, Kythe added drop-in support for Bazel, CMake, Maven, and Go. Projects using other build systems can use Kythe-provided wrappers for clang and javac to instrument their builds; these are used by Chromium and Android AOSP to provide compilation information for Kythe.

Because Kythe is based on the build, Kythe cross-references include links to files generated as part of the build process, such as Java files generated for AutoValues (example here) or protos. For repositories where cross-references are enabled, clicking on a symbol will take you to a definition of that symbol.

Clicking on the definition of a symbol will open a cross-reference panel, showing all the places where that symbol is referenced. For example, clicking on toVName below, we can see the places that reference this method. One of the callers is parseVName, and clicking on that shows the callers of that method.



At this time, we only provide search on the repositories listed below, but we plan to add more over time:
  • Angular
  • Bazel (with cross-references)
  • Dart
  • ExoPlayer
  • Firebase SDK
  • Flutter
  • Go (with cross-references)
  • gVisor (with cross-references)
  • Kythe (with cross-references)
  • Nomulus (with cross-references)
  • Outline
  • Tensorflow (with cross-references)
We are also investing in making the application keyboard-navigable and usable with a screen reader.

We hope you find this tool useful!

By Kris Hildrum, Code Search Team

Stable Channel Update for Desktop

The stable channel has been updated to 80.0.3987.162 for Windows, Mac, and Linux, which will roll out over the coming days/weeks.





A list of all changes is available in the log. Interested in switching release channels? Find out how. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.

Security Fixes and Rewards
Note: Access to bug details and links may be kept restricted until a majority of users are updated with a fix. We will also retain restrictions if the bug exists in a third party library that other projects similarly depend on, but haven’t yet fixed.

This update includes 8 security fixes. Below, we highlight fixes that were contributed by external researchers. Please see the Chrome Security Page for more information.

[$TBD][1062247] High CVE-2020-6450: Use after free in WebAudio. Reported by Man Yue Mo of Semmle Security Research Team on 2020-03-17
[$TBD][1061018] High CVE-2020-6451: Use after free in WebAudio. Reported by Man Yue Mo of Semmle Security Research Team on 2020-03-12
[$N/A][1059764] High CVE-2020-6452: Heap buffer overflow in media. Reported by asnine on 2020-03-09

We would also like to thank all security researchers that worked with us during the development cycle to prevent security bugs from ever reaching the stable channel.

As usual, our ongoing internal security work was responsible for a wide range of fixes:
  • [1066247] Various fixes from internal audits, fuzzing and other initiatives





Srinivas Sista
Google Chrome

Helping health organizations make COVID-19 information more accessible

Health organizations are busier than ever providing information to help with the COVID-19 pandemic. To better assist them, Google has created a best practices article to guide health organizations to make COVID-19 information more accessible on Search. We’ve also created a new technical support group for eligible health organizations.

Best practices for search visibility

By default, Google tries to show the most relevant, authoritative information in response to any search. This process is more effective when content owners help Google understand their content in appropriate ways.

To better guide health-related organizations in this process (known as SEO, for "search engine optimization"), we have produced a new help center article with some important best practices, with emphasis on health information sites, including:
  • How to help users access your content on the go
  • The importance of good page content and titles
  • Ways to check how your site appears for coronavirus-related queries
  • How to analyze the top coronavirus related user queries
  • How to add structured data for FAQ content

New support group for health organizations

In addition to our best practices help page, health organizations can take part in our new technical support group that's focused on helping health organizations who publish COVID-19 information with Search related questions.

We’ll be approving requests for access on a case-by-case basis. At first we’ll be accepting only domains under national health ministries and US state level agencies. We'll inform of future expansions here in this blog post, and on our Twitter account. You’ll need to register using either an email under those domains (e.g. [email protected]) or have access to the website Search Console account.

Fill this form to request access to the COVID-19 Google Search group 

The group was created to respond to the current needs of health organizations, and we intend to deprecate the group as soon as COVID-19 is no longer considered a Public Health Emergency by WHO or some similar deescalation is widely in place.

Everyone is welcome to use our existing webmaster help forum, and if you have any questions or comments, please let us know on Twitter.

Posted by Daniel Waisberg, Search Advocate & Ofir Roval, Search Console Lead PM

Kpt: Packaging up your Kubernetes configuration with git and YAML since 2014

Kubernetes configuration manifests have become an industry standard for deploying both custom and off-the-shelf applications (as well as for infrastructure). Manifests are combined into bundles to create higher-level deployable systems as well as reusable blueprints (such as a product offering, off the shelf software, or customizable starting point for a new application).

However, most teams lack the expertise or desire to create bespoke bundles of configuration from scratch and instead: 1) either fork them from another bundle, or 2) use some packaging solution which generates manifests from code.

Teams quickly discover they need to customize, validate, audit and re-publish their forked/ generated bundles for their environment. Most packaging solutions to date are tightly coupled to some format written as code (e.g. templates, DSLs, etc). This introduces a number of challenges when trying to extend, build on top of, or integrate them with other systems. For example, how does one update a forked template from upstream, or how does one apply custom validation?

Packaging is the foundation of building reusable components, but it also incurs a productivity tax on the users of those components.

Today we’d like to introduce kpt, an OSS tool for Kubernetes packaging, which uses a standard format to bundle, publish, customize, update, and apply configuration manifests.

Kpt is built around an “as data” architecture bundling Kubernetes resource configuration, a format for both humans and machines. The ability for tools to read and write the package contents using standardized data structures enables powerful new capabilities:
  • Any existing directory in a Git repo with configuration files can be used as a kpt package.
  • Packages can be arbitrarily customized and later pull in updates from upstream by merging them.
  • Tools and automation can perform high-level operations by transforming and validating package data on behalf of users or systems.
  • Organizations can develop their own tools and automation which operate against the package data.
  • Existing tools and automation that work with resource configuration “just work” with kpt.
  • Existing solutions that generate configuration (e.g. from templates or DSLs) can emit kpt packages which enable the above capabilities for them.

Example workflow with kpt

Now that we’ve established the benefits of using kpt for managing your packages of Kubernetes config, lets walk through how an enterprise might leverage kpt to package, share and use their best practices for Kubernetes across the organization.


First, a team within the organization may build and contribute to a repository of best practices (pictured in blue) for managing a certain type of application, for example a microservice (called “app”). As the best practices are developed within an organization, downstream teams will want to consume and modify configuration blueprints based on them. These blueprints provide a blessed starting point which adheres to organization policies and conventions.

The downstream team will get their own copy of a package by downloading it to their local filesystem (pictured in red) using kpt pkg get. This clones the git subdirectory, recording upstream metadata so that it can be updated later.

They may decide to update the number of replicas to fit their scaling requirements or may need to alter part of the image field to be the image name for their app. They can directly modify the configuration using a text editor (as would be done before). Alternatively, the package may define setters, allowing fields to be set programmatically using kpt cfg set. Setters streamline workflows by providing user and automation friendly commands to perform common operations.

Once the modifications have been made to the local filesystem, the team will commit and push their package to an app repository owned by them. From there, a CI/CD pipeline will kick off and the deployment process will begin. As a final customization before the package is deployed to the cluster, the CI/CD pipeline will inject the digest of the image it just built into the image field (using kpt cfg set). When the image digest has been set, the CI/CD pipeline can send the manifests to the cluster using kpt live apply. Kpt live operates like kubectl apply, providing additional functionality to prune resources deleted from the configuration and block on rollout completion (reporting status of the rollout back to the user).

Now that we’ve walked through how you might use kpt in your organization, we’d love it if you’d try it out, read the docs, or contribute.

One more thing

There’s still a lot to the story we didn’t cover here. Expect to hear more from us about:
  • Using kpt with GitOps
  • Building custom logic with functions
  • Writing effective blueprints with kpt and kustomize
By Phillip Wittrock, Software Engineer and Vic Iglesias, Cloud Solutions Architect

My Path to Google – Beyza Bozbey, Software Engineer


Welcome to the 44th installment of our blog series “My Path to Google.” These are real stories from Googlers, interns, and alumni highlighting how they got to Google, what their roles are like, and even some tips on how to prepare for interviews.

Today’s post is all about Beyza Bozbey. Read on!

Editor’s note: Beyza speaks about her experience participating in Google’s longest running coding competition, Code Jam. The 2020 online qualification round is happening this Friday, April 3. If you would like to register,  you can do so at g.co/codejam.

Beyza posing on the Brooklyn bridge.

Can you tell us a bit about yourself?

I was born and raised in Istanbul, Turkey. In high school, I participated in a special program that prepared a small number of students for the Informatics Olympiad computer science competition. I was the only woman in the program from my high school. When I learned programming and algorithms, I discovered my passion for Computer Science. After I finished two years of college in Istanbul, I transferred to the University of Southern California in Los Angeles where I studied Computer Science. During college, I participated in robotics and fashion clubs and did an internship at a fashion tech startup company which was a great experience for me to combine my programming skills with my interest in fashion. 

Outside of work, I love traveling, following fashion trends, and watching movies and TV shows — especially supernatural ones. I'm a huge Marvel fan and I once camped out to get into a panel at San Diego Comic-Con. 


Beyza posing in glasses and a cape.

What’s your role at Google?

I'm a Software Engineer on the YouTube Comments team. I've been working on the backend side of a new project about the comments section. What I love the most about it is that everyday is a challenge and it never gets boring. When I create a new feature or fix a bug, it is truly amazing to see that the impact reaches thousands of users around the globe. This is absolutely what makes me get out of bed every morning. Also, Google has an incredible amount of resources, therefore learning at Google is a never ending journey.


Beyza posing in front of YouTube sign at her office.

You’ve participated in a few Google coding competitions, can you tell us more about that?

I’ve participated in both Google Code Jam (Google’s longest running coding competitions for individuals) and Hash Code (Google’s team coding competition). I didn’t realize it at the time, but the types of questions I really enjoyed during the Informatics Olympiad competition were very similar to Google coding competition questions. My first Google competition was Hash Code — when I heard about it, I was so excited. I found two friends from college and convinced them to join. While the problems were a little advanced for our level, it was fun to work together and brainstorm in order to solve the questions.

Code Jam registration is open now — any advice to those thinking about getting involved?
Definitely sign up! You don’t have to know everything about coding competitions already. The UI is simple and it’s also really fun to see other people solving a question. When I see that others have solved a question, I think, “if they solved it, I can solve it too!” It’s encouraging.

Has participating in Google's Coding Competitions affected your path to becoming an engineer at Google?
Yes! I started to realize that I was developing a lot of great skills while doing the coding competitions. Code Jam was a similar practice and environment to a coding interview, making it fun and useful at the same time!

Beyza sitting inside a giant "G" statue.


Can you tell us about your decision to enter the Google application process? 
After I learned programming in high school, I wanted to learn more about how Google Search works. As a high school student in Turkey, working at Google was like an impossible dream for me. Then I heard that someone who graduated from my high school started working at Google and that inspired me. I realized that it was an attainable goal, so I decided to apply. However, my application wasn't accepted and I couldn't get an interview. One year after my internship application got rejected, a recruiter contacted me and asked if I'd be interested in interviewing for another internship. I was super excited and nervous, but during that time, I was trying to adapt to moving to a new country (the USA) and transferring to a new school (USC), and unfortunately, I couldn't pass the interviews. Fast forward two years and two more attempts at interviewing and I got a full-time offer. Do not give up if you don't get it your first (or second or third) try!


Beyza in front of the Golden Gate Bridge.

What do you wish you’d known when you started the process? 
I wish I had known Google's interview process better before my first interview. I remember that I was so nervous that I couldn't even understand the question. I should have asked some clarifying questions and talked about my thought process.

Do you have any tips you’d like to share with aspiring Googlers? 
LeetCode was super helpful, but sometimes it makes you lazy to check edge cases. You can submit your solution with just one click and if it fails, it's so easy to find out which edge case caused the failure since the website shows you the input already. However, in a real interview, you walk through your solution by hand. You have to find the edge cases on your own and which input might break your solution. Therefore, I highly suggest aspiring Googlers code on a piece of paper and practice walking through your solution by hand. You can also pair with a friend and practice interviewing ... and sign up for Google's coding competitions!

Less secure app turn-off suspended until further notice

Last December, we announced that we’d be turning off less secure app (LSA) access to G Suite accounts, and that you should migrate to OAuth authentication instead. The first phase of the LSA turn-down was scheduled for June 15, 2020. As many organizations deal with the impact of COVID-19 and are now focused on supporting a remote workforce, we want to minimize potential disruptions for customers unable to complete migrations in this timeframe.

As a result, we are suspending the LSA turn-off until further notice. All previously announced timeframes no longer apply. 

This applies to all categories of applications and protocols outlined in our original blog post, including Google Sync for iOS Mail. We’ll announce new timelines on the G Suite Updates blog at a later date.

Despite these timing adjustments, Google does not recommend the use of any application that does not support OAuth. We recommend that you switch to using OAuth authentication whenever possible for your organization. OAuth helps protect your account by helping us identify and prevent suspicious login attempts, and allows us to enforce G Suite admin-defined login policies, such as the use of security keys. See our original blog post for details and instructions on migrating to OAuth

Getting started 


  • Admins: No action required. However, we do recommend switching to OAuth authentication. See our original blog post for details on migrating to OAuth.
  • End users: No end user impact.
  • Developers: Update your app to use OAuth 2.0 as soon as possible.

Women at Google: Meet Sabrina Geremia


For Women's History Month, we're profiling some of the powerful, dynamic and creative Canadian women at Google.

As the Country Manager for Google Canada, Sabrina Geremia is a firm believer that technology, when thoughtfully applied, can be a bridge to building a better Canada. And as a champion of technology, she leads her teams to build programs aimed at helping Canadians and Canadian businesses (small and large) thrive in the digital economy.

Her focus this year is on helpfulness, and she’s been hard at work with her team to build helpful tools, products and features that lead to productivity, wellness and happiness. Whether it’s meeting with Canadian business leaders, advising nonprofits or mentoring, Sabrina is passionate about sharing her experience, and finding ways to propel Canada forward in the digital age.

Recently named "Woman of the Year" by WCT (Women in Communication Technology in Canada), it’s undeniable that Sabrina is not only paving the path forward, but continuing to inspire other women along the way.

How would you describe your job at a dinner party to people who don't work in tech?

I'm the Country Manager for a company whose mission is to organize the world's information and make it universally accessible and useful. Our goal is to help Canadians find and get things done in the moments that matter, help businesses drive economic impact, and grow digital skills in Canada.

The most exciting part about leading Google in Canada is that we have here at home, amazing people and teams who are innovating and creating products that are helpful for users across the globe.

Was there something specific that pushed you toward your career in tech?

When I was 11, my big brother surprised me at Christmas with an IBM PS@ model 50 computer. He said to me "you can play with this over the holidays" and walked out of the room. Now this was the 80s, and we’re talking first generation personal computing. The computer was enormous, weighed a ton, had a blinking cursor, and a floppy disk drive. I was both enthralled and intimidated. I unpacked it and started asking him questions like how to turn it on. Instead of coming to my rescue, he said "the plugs can only go into one place, you won't break it, figure it out". That lesson has stayed with me for over 30 years. I used this computer to write stories, play games, and eventually saved up enough to buy another computer. While I didn't go on to become a coder, I did have a University internship at Microsoft. My role there was to help explain their technology to their senior clients, and that’s the type of work I still do today.

What is the most challenging part of your job?

The speed of technological transformation is intense, and this makes my job challenging but also exciting. Every day I’m connecting with Canadian businesses to showcase the opportunities that technology can offer. And a big part of digital transformation is anchored in investing in digital skills.

What is your favourite part of the job?

Solving complex problems with amazing people in Canada and beyond. And I love seeing how our products are helping people across the globe, my family included! My kids for example, are learning how to play the trumpet with their Grandpa who lives in Wales, thanks to the Google Home Hub.

What is your secret power that makes you successful?

I’m innately curious and an ‘always on learner’. Whether it’s brushing up on my technical skills or finding best practices from other parts of the world or learning from other amazing leaders, I like understanding how things work. In my job it’s like putting together a puzzle of a landscape that keeps evolving. In my 14 years at Google there’s never been a day where I haven’t learned something new.

Speaking of Canadian businesses - are there any businesses that inspire you?

I’m inspired to see how small businesses in Canada are thinking beyond our borders and expanding their businesses abroad. A great example of this is Peace by Chocolate. Originally from Syria, the Hadhad family came to Nova Scotia and re-built their family-run chocolate business. It’s now become a symbol of international peace and purchased by customers all across the globe.

What inspires you in your career?

The people I work with, inside and outside of Google, inspire me every day. I recently attended a graduation for Grow with Google’s IT Support Professional Certificate Program at the Toronto Public Library. I'm a big believer in the power of education, and by growing your digital skills so many more doors will open. Connecting with the graduates about their new skills and their career aspirations was extremely rewarding.

Tell us about a project that you're proud of!

Investing in digital skills for Canadians was one of the first things I wanted to do when I took this job. So I’m extremely proud of our Grow with Google program, which includes free training, tools and events for Canadians to grow their skills, career or business. Over the past few years we’ve gone to different cities across Canada and trained thousands of learners.

What advice would you give to women pursuing a career in technology?

Make digital skills a super power, no matter what industry you work in.

Women at Google: Meet Sabrina Geremia


For Women's History Month, we're profiling some of the powerful, dynamic and creative Canadian women at Google.

As the Country Manager for Google Canada, Sabrina Geremia is a firm believer that technology, when thoughtfully applied, can be a bridge to building a better Canada. And as a champion of technology, she leads her teams to build programs aimed at helping Canadians and Canadian businesses (small and large) thrive in the digital economy.

Her focus this year is on helpfulness, and she’s been hard at work with her team to build helpful tools, products and features that lead to productivity, wellness and happiness. Whether it’s meeting with Canadian business leaders, advising nonprofits or mentoring, Sabrina is passionate about sharing her experience, and finding ways to propel Canada forward in the digital age.

Recently named "Woman of the Year" by WCT (Women in Communication Technology in Canada), it’s undeniable that Sabrina is not only paving the path forward, but continuing to inspire other women along the way.

How would you describe your job at a dinner party to people who don't work in tech?

I'm the Country Manager for a company whose mission is to organize the world's information and make it universally accessible and useful. Our goal is to help Canadians find and get things done in the moments that matter, help businesses drive economic impact, and grow digital skills in Canada.

The most exciting part about leading Google in Canada is that we have here at home, amazing people and teams who are innovating and creating products that are helpful for users across the globe.

Was there something specific that pushed you toward your career in tech?

When I was 11, my big brother surprised me at Christmas with an IBM PS@ model 50 computer. He said to me "you can play with this over the holidays" and walked out of the room. Now this was the 80s, and we’re talking first generation personal computing. The computer was enormous, weighed a ton, had a blinking cursor, and a floppy disk drive. I was both enthralled and intimidated. I unpacked it and started asking him questions like how to turn it on. Instead of coming to my rescue, he said "the plugs can only go into one place, you won't break it, figure it out". That lesson has stayed with me for over 30 years. I used this computer to write stories, play games, and eventually saved up enough to buy another computer. While I didn't go on to become a coder, I did have a University internship at Microsoft. My role there was to help explain their technology to their senior clients, and that’s the type of work I still do today.

What is the most challenging part of your job?

The speed of technological transformation is intense, and this makes my job challenging but also exciting. Every day I’m connecting with Canadian businesses to showcase the opportunities that technology can offer. And a big part of digital transformation is anchored in investing in digital skills.

What is your favourite part of the job?

Solving complex problems with amazing people in Canada and beyond. And I love seeing how our products are helping people across the globe, my family included! My kids for example, are learning how to play the trumpet with their Grandpa who lives in Wales, thanks to the Google Home Hub.

What is your secret power that makes you successful?

I’m innately curious and an ‘always on learner’. Whether it’s brushing up on my technical skills or finding best practices from other parts of the world or learning from other amazing leaders, I like understanding how things work. In my job it’s like putting together a puzzle of a landscape that keeps evolving. In my 14 years at Google there’s never been a day where I haven’t learned something new.

Speaking of Canadian businesses - are there any businesses that inspire you?

I’m inspired to see how small businesses in Canada are thinking beyond our borders and expanding their businesses abroad. A great example of this is Peace by Chocolate. Originally from Syria, the Hadhad family came to Nova Scotia and re-built their family-run chocolate business. It’s now become a symbol of international peace and purchased by customers all across the globe.

What inspires you in your career?

The people I work with, inside and outside of Google, inspire me every day. I recently attended a graduation for Grow with Google’s IT Support Professional Certificate Program at the Toronto Public Library. I'm a big believer in the power of education, and by growing your digital skills so many more doors will open. Connecting with the graduates about their new skills and their career aspirations was extremely rewarding.

Tell us about a project that you're proud of!

Investing in digital skills for Canadians was one of the first things I wanted to do when I took this job. So I’m extremely proud of our Grow with Google program, which includes free training, tools and events for Canadians to grow their skills, career or business. Over the past few years we’ve gone to different cities across Canada and trained thousands of learners.

What advice would you give to women pursuing a career in technology?

Make digital skills a super power, no matter what industry you work in.

Google Cloud for Student Developers: Accessing G Suite REST APIs

Posted by Wesley Chun (@wescpy), Developer Advocate, Google Cloud

Recently, we introduced the "Google Cloud for Student Developers" video series to encourage students majoring in STEM fields to gain development experience using industry APIs (application programming interfaces) for career readiness. That first episode provided an overview of the G Suite developer landscape while this episode dives deeper, introducing G Suite's HTTP-based RESTful APIs, starting with Google Drive.

The first code sample has a corresponding codelab (a self-paced, hands-on tutorial) where you can build a simple Python script that displays the first 100 files or folders in your Google Drive. The codelab helps student (and professional) developers...

  1. Realize it is something that they can accomplish
  2. Learn how to create this solution without many lines of code
  3. See what’s possible with Google Cloud APIs

While everyone is familiar with using Google Drive and its web interface, many more doors are opened when you can code Google Drive. Check this blog post and video for a more comprehensive code walkthrough as well as access the code at its open source repository. What may surprise readers is that the entire app can be boiled down to just these 3-4 lines of code (everything else is either boilerplate or security):

    DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])

Once an "API service endpoint" to Google Drive is successfully created, calling the list() method in Drive's files() collection is all that's needed. By default, files().list() returns the first 100 files/folders—you can set the pageSize parameter for a different amount returned.

The video provides additional ideas of what else is possible by showing you examples of using the Google Docs, Sheets, and Slides APIs, and those APIs will be accessed in a way similar to what you saw for Drive earlier. You'll also hear about what resources are available for each API, such as documentation, code samples, and links to support pages.

If you wish to further explore coding with G Suite REST APIs, check out some additional videos for the Drive, Sheets, Gmail, Calendar, and Slides APIs. Stay tuned for the next episode which highlights the higher-level Google Apps Script developer platform.

We look forward to seeing what you build with Google Cloud!