The Global Search Group focuses on bringing world class search functionality to GitLab.com and self-managed instances.
The group is responsible for improving and expanding upon our current global search implementations using Elasticsearch, PostgreSQL, and Gitaly. Areas of responsibility will include global search functionality, UI, ingestion mechanisms, optimal indexing, administrative tools, and installation mechanisms for self-managed installations.
The following team members are permanent members of the Global Search Group:
|Changzheng Liu||Backend Engineering Manager, Global Search|
|Dmitry Gruzd||Staff Backend Engineer, Global Search|
|John Mason||Senior Backend Engineer, Global Search|
|Madelein van Niekerk||Backend Engineer, Global Search|
|Ravi Kumar||Backend Engineer, Global Search|
|Siddharth Dungarwal||Backend Engineer, Global Search|
|Terri Chu||Staff Backend Engineer, Global Search|
|Tomáš Bulva||Senior Frontend Engineer, Global Search|
The following members of other functional teams are our stable counterparts:
|Ben Venker||Senior Product Manager, Global Search|
|Ashraf Khamis||Senior Technical Writer|
|Cleveland Bledsoe Jr||Senior Support Engineer|
|Brenda Nyaringita||Support Engineer(EMEA)|
Whenever possible, we prefer to communicate asynchronously using issues, merge requests, and Slack. However, face-to-face meetings are useful for establishing a personal connection and addressing items that would be more efficiently discussed synchronously, such as blockers.
We follow the general workflow and principles defined in Product Development Flow and Engineering Workflow. To bring an issue to our attention, please create an issue in the relevant project. Add the
~"group::global search" label and any other suitable labels. If it is an urgent issue, please reach out to the Product Manager or Engineering Manager listed in the Stable Counterparts section above.
Below are a few guidelines the team follows in the day-to-day work.
workflow::solutionvalidation for user research and
workflow::designfor UI design and prototyping. Once the design is finished,
workflow::ready for developmentlabel will be added as an indicator that development can start. For minor UX/UI changes, we contact our UX counterpart or the Product Design Manager to request a review for fast iterations.
workflow::planning breakdownand adding the SET counterpart as an assignee. Once SET reviews the issue, they acknowledge back with the label
documentationand adding our counterpart in the Technical Writing team as assignee. Our technical writer helps us update the corresponding document. The documentation change normally happens together with the code change.
Before a major milestone starts, we prepare an epic with all the breaking change issues linked. As usual, we work to get approvals but keep the MR in draft to prevent it from merging before the major milestone. If an MR is independent, we can have the
master as a target branch. If not, we can have a sequence of MRs with target branches set to each other. As soon as the first one merges, the next will automatically target
Every MR that was created before the breaking change milestone should have this or a similar warning in the description:
:warning: This MR must be kept as a draft and cannot be merged until **DATE** :warning:
The team has been actively working on enabling Elasticsearch powered Advanced Search on GitLab.com. Based on our analysis, we set our first target to roll this feature out for all the paid groups on GitLab.com. You can find more details about the timeline and progress in the links below.
|Type of Operation||
|Recall Record, Global||Above 10 seconds to timing out||Between 7 and 10 seconds||Between 4 and 7 seconds||Between 2 and 4 seconds|
|Time until inserted record is recallable||Above 15 minutes||Between 15 and 10 minutes||Between 10 and 5 minutes||Between 3 and 5 minutes|
The two types of operations we detail severity metrics for above are:
We use the Fibonacci rating system to assign weights to Search issues. Below are a few guidelines when setting issue weight:
~frontendwork should have the weights added for a total weight representative of the work effort.
|0||No effort or trivial effort (example: Documentation typo or Feature Flag Rollout)|
|1||Low effort (No Database migrations or Advanced Search migrations)|
We have the following guidelines for doing reviews on Global Search Team MRs:
As the Global Search Team requires special domain knowledge, such as Elasticsearch, we borrow team members with this domain knowledge from other groups to cover the on-call escalation when we are understaffing, especially during the holiday seasons. In general, we will follow the dev on-call process. The Elasticsearch domain experts, identified by domain_expertise on their profile, may be contacted when SRE and dev on-call engineers cannot resolve the production incidents. We don't expect the domain experts to work outside their normal working hours. In case of emergency, we will follow the rules and best practices outlined in our Incident Management handbook. To assist team members in catching up on the latest development status and resolving potential incidents, we have created a Global Search Incident Management document as a reference.
When onboarding domain experts from other groups to help cover production incident escalation, we may consider the following actions:
domain_expertisein their team member profile
We utilize the Jobs to be Done (JTBD) framework to better understand our customers' and users' needs. You can view the current list of our JTBD here.
(Sisense↗) MR Type labels help us report what we're working on to industry analysts in a way that's consistent across the engineering department. The dashboard below shows the trend of MR Types over time and a list of merged MRs.