blob: 0df75fa497128e938997d4efbe54bb6a5cf02de2 [file] [log] [blame] [view]
---
title: "Google quarterly objectives"
permalink: google-okrs.html
hide_sidebar: true
hide_navtoggle: true
toc: false
---
Google plans work per-quarter, using the OKR (Objective/Key-Result) framework.
# Q1 2023
## O: Improve developer productivity
### KR: Improve email notifications to reduce context switches.
### KR: Optimistic updates for comment saving reduces latency.
### KR: User suggested edits
## O: Integration with other products
### KR: Migrate gerrit-review CI to LUCI
# Q4 2022
## O: Improve user experience
### KR: Land push notifications
### KR: Improve code-owners UI: show which reviewers own which files
### KR: Improve code-owners UI: owner approvals are sticky across patchsets
### KR: Submit Requirement predicate to prevent merges that create submodule updates
### KR: implement UI and API for rebasing a chain of changes
### KR: per-label ACL to remove votes of other users
### KR: allow change creation from supplied textual patch
## O: Increase system reliability
### KR: migrate further components to Lit
# Q3 2022
## O: Increase system reliability
### KR: Make the token highlight layer more efficient.
### KR: Prevent HTML injection through commentLink feature
### KR: Add shadowdom tests for each FE component
### KR: Lit based gr-diff rendering
This increases maintainability and makes it faster.
### KR: Better plugins
Work with SAP on checks-jenkins plugin. Deprecate the checks plugin on gerrit-review.
## O: Improve Gerrit customer satisfaction
### KR: Land bulk actions
Provide actions on multiple changes from the dashboard page. Polish in
response to user feedback.
### KR: Allow patchset upload creation from textual patch
This provides a mechanism that could execute cherry-picks across gerrit hosts.
### KR: Land push notifications
Show browser notifications if the attentionset for a user changes.
### KR: Implement suggested edits
Allow reviewers to suggest changes through specially formatted
comments. Authors can apply the change as a change-edit.
### KR: Land enhanced file status information
Show file status diffs (added, removed) between patchsets.
## O: Reduce toil, increase developer velocity, and improve developer happiness
# Q2 2022
## O: Increase system reliability
### KR: Reduce overhead of Prolog
Roll them out fully on googlesource.com for Android and Chrome,
addressing any feature gaps relative to Prolog.
*result*: launched to all but one host.
## O: Improve Gerrit customer satisfaction
### KR: Polish composable submit requirements based on customer feedback
*result*: this is finished.
### KR: Launch bulk actions
Provide actions on multiple changes from the dashboard page.
*result*: code almost finished, launch pending.
### KR: Polish approval copying infrastructure
When uploading new patchsets, provide more information to users why
they need to get approvals again.
*result*: done.
## O: Reduce toil, increase developer velocity, and improve developer happiness
### Finish Lit migration
Lit is the next generation version of Polymer. Besides being nicer to
work with, it reduces cold start due to reduced code size.
*result*: done, except the code-owners plugin and gr-overlay and
gr-account-list (on Polymer due to Iron dependencies.)
# Q1 2022
## O: Increase system stability and reduce latency of critical user journeys
### KR: Remove per-user state (drafts, stars) from the change index,
improving write latencies
### KR: Speed up median diff rendering latency for views with many files
Use multiple fidelity modes and webworkers to speed up "expand all
diffs" and "large file with many diffs" use cases.
## O: Improve Gerrit customer satisfaction from X% to Y%
### KR: Roll out composable submit requirements
Use them fully on gerrit-review.googlesource.com,
android-review.googlesource.com and chromium-review.googlesource.com.
### KR: Multi-change review: Prototype and validate a new experience
for managing and reviewing multiple, grouped changes
### KR: Reduce P50 code review start latency
Design browser-based push notifications to reduce review latency. Let
reviewers suggest rather than make edits, leading to less lost
approvals.
### KR: Addressing top Gerrit pain points
Fix JGit and CGit merge discrepancies.
# Q4 2021
## O: Gerrit users' data and code are well protected and secure
### KR: Resolve data protection/security work in flight from Q3
A data migration has cleaned all traces of personal data (name, email) in review
metadata.
## O: Increase system stability and reduce latency of critical user journeys
### KR: Migrate to Caffeine for all caches
This is now possbile since we moved off of the old diff cache.
### KR: Investigate reasons for slow pushes, fix if possible
We want Git pushes where users currently bypass Gerrit to go through Gerrit as
well. We suspect that performance (pushes being slow) is the main reason for
bypassing. If so, we want to root cause slowness and fix it if possible.
## O: Improve Gerrit customer satisfaction from X% to Y%
### KR: Roll out composable submit requirements
Use them fully on gerrit-review.googlesource.com,
android-review.googlesource.com and chromium-review.googlesource.com.
### KR: Multi-change review: Implement MVP
Provide a page for reviewing multiple changes ("topics"), providing among others
batch actions and maybe diffs across projects/changes.
## O: Reduce toil, increase developer velocity, and improve developer happiness
### KR: Migrate 33% of remaining frontend components to Lit, remove
all of Polymer, and get rid of or re-implement all mixins
### KR: Migrate frontend to client models and dependency injection.
client models will centralize state-management, making the UI more
dependable. Dependency injection avoids global variables, enabling
multiple changes on a single page
# Q3 2021
## O: Gerrit users' data and code are well protected and secure
### KR: Resolve data protection/security work in flight from Q2
Gerrit stops persisting personal data (name, email) in review metadata.
## O: Increase system stability and reduce latency of critical user journeys
### KR: Keep CreateDraftcomment in SLO by removing per-user state from change index
Private user actions (writing drafts, adding stars) cause a change reindex. This
is expensive and slows down user actions. Get this data directly from All-Users
to avoid the indexing step.
### KR: Cancelation: ensure no work happens for requests after the users have canceled or the request has timed out
Gerrit continues processing after the user hangs up. We want to solve this for
Google, but maybe we can fix it for Gerrit open source as well.
### KR: Image diffing
The Gerrit UI supports reviewing image files (including visual diffs)
### KR: Improve gr-diff performance
Improve diff rendering performance and memory usage on many / large files.
### KR: Plan for transactional index updates
Currently Gerrit indices are per-datacenter, and replicated asynchronously.
Create a design where the index document is created together with the ref
update, so it can be replicated together with the Git data, thus avoiding
inconsistencies between index and git data.
### KR: Use Caffeine to reduce drift with open-source and to speed up parallel cache reads
Finish diff cache rollout, and migrate to Caffeine.
## O: Improve Gerrit customer satisfaction from X% to Y%
### KR: Roll out composable submit requirements to Android and Chrome
Implement https://gerrit-review.googlesource.com/c/homepage/+/279176, and roll
it out to Gerrit, Chrome & Android.
### KR: Multi-change review: Prototype and validate a new experience for managing and reviewing multiple, grouped changes
Provide a page for reviewing multiple changes ("topics"), providing among others
batch actions and maybe diffs across projects/changes.
### KR: Code Review Latency: Reduce P50 code review start latency from Xmin to Ymin.
**Calendar integration: **extension point for FE plugins surfacing calendar data
**Push notifications**: Design proposal, work estimation, and prototype for
browser push notifications directly from Gerrit using web workers (milutin)
**Code review dashboard**: Gerrit users can understand their personal code
review performance in a dashboard as described in Gerrit Code Review Metrics for Individuals (mharbach)
### KR: Gerrit CI Reboot: Land the new CI Results Tab
Finish CI result tab: onboarding documentation, create a Jenkins based plugin
and remove the old checks plugin from googlesource.com.
### KR: Make headway on addressing top Gerrit pain points, as measured by surveys and internal customers
Various items:
* Markdown support
* Ingest textual diffs for creating or updating changes
* Many smaller UI polish items.
## O: Reduce toil, increase developer velocity, and improve developer happiness
### KR: Maintainable Gerrit frontend plugins: convert all Gerrit maintained frontend plugins to Typescript.
### KR: Add Polymer template type checking (carryover)
Gerrit CI will then be able to check that Polymer bindings are valid in HTML
templates and that Polymer observers and computed Polymer properties have the
correct type.
### KR: Publish Gerrit Q3 OKRs publicly to give guidance to the external community
note: Any Google-specific OKRs will be removed prior to publishing