Search core team
The search core team owns all parts of Sourcegraph that map an interpreted search query to a set of results:
- Indexed and unindexed search (Zoekt & Searcher)
- Diff/commit search
- Result ranking
- Open source indexing, current at over 2.5M repos!
To learn more about our goals, see the Search Core strategy page.
Team members
- Steve Yegge, Head of Engineering
- Thorsten Ball, Software Engineer
- Loïc Guychard, Engineering manager, search
- Rijnard van Tonder, Software Engineer
- Juliana Peña, Software Engineer
- Rok Novosel, Software Engineer
- Camden Cheek, Software Engineer
- Felix Kling, Software Engineer
- Thomas Liu, Software Engineer
- Felix Becker, Engineering Manager, Code Insights
- Vova Kulikov, Software Engineer, Frontend
- Coury Clark, Software Engineer, Backend
- Leo Papaloizos, Software Engineer
- Chris Warwick, Software Engineer
- Felix Becker, Engineering Manager, Code Exploration
- Tom Ross, Software Engineer
- Valery Bugakov, Software Engineer
- Beatrix Woo, Software Engineer
- Philipp Spiess, Full-Stack Engineer
- Taras Yemets, Software Engineer
- Laura Hacker, Software Engineer
- Chris Pine, Engineering Manager, Batch Changes
- Erik Seliger, Software Engineer
- Adam Harvey, Software Engineer
- Adeola Akinsiku, Software Engineer
- Kelli Rockwell, Software Engineer, Batch Changes
- Bolaji Olajide, Full Stack Engineer - Batch Changes
- Randell Callahan, Software Engineer
- María Craig, Product Manager, Code Intelligence
- Joel Kwartler, Product Manager, Code Insights
- Owen Convey, Engineering Manager, Code Intelligence
- Eric Fritz, Software Engineer
- Noah Santschi-Cooney, Software Engineer
- Ólafur Páll Geirsson, Software Engineer, Code Intelligence
- TJ DeVries, Software Engineer
- Chris Wendt, Software Engineer on Code Intelligence
- Cesar Jimenez, Software Engineer on Code Intelligence
- Varun Gandhi, Software Engineer
- Malo Marrec, Product Manager, Batch Changes
- Ryan Phillips, Product Manager
- Elzanne Wentzel, Engineering Manager - Content Platform
- Brett Hayes, Software Engineer
- Becca Steinbrecher, Software Engineer
- Erzhan Torokulov, Software Engineer
- Taylor Sperry, Product Manager, Frontend Platform
- Jordan Plahn, Engineering Manager, Repo Management
- Ryan Slade, Software Engineer
- Indradhanush Gupta, Software Engineer
- Molly Weitzel, Software Engineer
- Alexander Ostrikov, Software Engineer
- Idan Varsano, Software Engineer
- Cezary Bartoszuk, Software Engineer
- Jordan Plahn, Engineering Manager, Identity and Access Management
- Milan Freml, Software Engineer
- Petri-Johan Last, Software Engineer
- Michelle Veronese, Software Engineer
- Naman Kumar, Software Engineer
- David Veszelovszki, Software Engineer, Growth and Integrations
- Kristen Stretch, Engineering Manager, Developer Experience
- Dave Try, Software Engineer
- Marek Zaluski, Software Engineer
- Manuel Ucles, Software Engineer
- JH Chabran, Software Engineer
- Sander Ginn, Software Engineer
- William Bezuidenhout, Software Engineer
- Kalan Chan, Software Engineer
- Ryan Scott, Product Manager
- Steve Fisher, Head of Design
- Rob Rhyne, Design Manager
- Alicja Suska, Product Designer, Frontend Platform, Growth and Integrations, and Code Insights
- Daniel Marques, Product Designer, Batch Changes
- Paulo Almeida, Product Designer, Search
- Quinn Keast, Staff Product Designer
- Fabiana Castellanos, Creative Operations Manager
- Sara Lee, Product Designer, Code Intel and Growth and Integrations
- Tracey Johnson, Brand Designer
- Megan St. Andrew, UX Researcher
- Rob Rhyne, Design Manager
- Quinn Hare, Product Manager - Developer Experience
- Rob Rhyne, Product Designer
- Lori Colston, Product Marketing Manager
Teammate experience: guiding principles
We seek to follow a set of guiding principles when welcoming new teammates and working as a team.
Contact
- #search channel or @search-core on Slack.
team/search-core
on GitHub
Support rotation
The Search Core team has a customer support rotation: each week, one team member will be responsible for fielding questions and requests from Customer Engineering and Customer Support.
The engineer on support rotation can be contacted using the Slack alias @search-core-support
.
The support rotation can be viewed on OpsGenie: search core schedule.
Should an engineer be unable to fulfill support responsibilities for any reason (for example, due to upcoming time off), they should swap with a teammate.
We track support issues from customers on this board
Planning
- The search core team plans its work continuously (we don’t do sprints/iterations).
- Supporting existing customers is critical to our success and can be prioritized ahead of roadmap work.
- Our OKR and status updates are tracked using GitHub under the Code Graph tab.
Team syncs, plans and updates:
- The teams holds syncs twice weekly (Mon, Thu).
- Before team syncs, teammates add their status and plans to the team sync meeting notes.
- The team discusses the updates live during the sync.
- Updates should be in prose and communicate progress made and pain points.
Backlog
We use a backlog project board to capture work items we’ve identified.
Retrospective
- We have a retrospective every two weeks, on Monday. This is a time for us to look back and discuss progress and consider changes to process.
- Our action plans and learnings are captured in a document.
- If we are going to have a sync retrospective, we use a Jamboard to capture everyone’s thoughts. The theme for the Jamboard can rotate.
- If we are going to have an async retrospective, we use the Google Doc above to capture our retro.
Our Repositories
- Zoekt the Zoekt search engine we support and use.
- Sourcegraph our product.
- Scratchpad A place to capture research, thoughts, and ideas.
Living the Async Life
Our team is geographically and timezone diverse. The handbook has a large page dedicated to it and it is worth reading. This section is intended to augment the handbook. Since our team works across many timezones, setting boundaries for notifications becomes really important to protect your free time. You are empowered to do this and here are a couple of suggestions:
- Set your working hours in Google. This makes it easier for your teammates to see when you are normally online.
- Set your notification schedule in Slack.
- When you need focus time, enable Mac Focus time and/or set Slack to Do not Disturb.
- Google Calendar supports focus time. Block out time on your calendar in 2, 4 or 6 hour intervals where you only work on a particular task. Enable your Focus time (F6 key on Mac keyboard) and set Slack to DND.
- Enable Google Calendar in Slack to sync up your Slack status with your Google Calendar.
- Setup email filters for GitHub notifications.
- Mute conversations in Slack to reduce notifications or leave the channel.
- The Slack notification pane on the left side has an option to only show channels that are unread. This hides the channels with no new content and speeds up catching up in Slack.
- If things like Google Mail and Calendar are not cutting it for you, try other tools. Some people really like using Spark for email and Fantastical for their calendar. To do list tools like Things and ToDoist are popular and also integration tools like Zapier can be really helpful. Ask in Slack, you will get suggestions.
How We Work
- For support rotation picking up incidental work. Tasks in support backlog to capture this, more intentional work around support and papercuts versus trying to work normally and getting interrupted.
- Focus on more feature flag driven development to simplify on-premise changes and speed up MTTR for Cloud.
Releases
Most of the work related to releasing our code fits the general description of Engineering processes.
However, there is an important thing to mention. Since Zoekt lives in a separate repo, we need to periodically pull changes from the Zoekt repo to the main Sourcegraph repo. This can be done either manually by altering the go.mod and go.sum files in the main repo, or by merging the corresponding PR opened by the bot.
This is good enough to see our changes in an upcoming release, but if you want to see them immediately at Sourcegraph Cloud, another step is needed. Sourcegraph Cloud is continuously deployed from the main repo code, and we alter some parts of it by providing an intentionally wrong version number in the deployment script. The reason is we do not depend on the rollout schedule this way; each update of the version number triggers a rollout. For information on how to bump the Zoekt images and deploy the newer versions, refer to Continuous Deployment Process, Manually deploying a service to sourcegraph.com, and Our update script.
On Boarding - visit the page
Public resources are available here:
- Learning Go
- Architecture diagram
- Sourcegraph Documentation
- Super helpful intro video
- How gitserver works
- Zoekt Bedtime Reading:
- https://github.com/sourcegraph/zoekt/blob/master/doc/design.md
- https://swtch.com/~rsc/regexp/regexp4.html
- https://www.youtube.com/watch?v=qOKDQT7-PJk
- https://www.youtube.com/watch?v=_-KTAvgJYdI
- https://about.sourcegraph.com/blog/tackling-the-long-tail-of-tiny-repos-with-shard-merging/
- https://about.sourcegraph.com/blog/zoekt-memory-optimizations-for-sourcegraph-cloud/
- https://github.blog/-a-brief-history-of-code-search-at-github/
Our private resources are available in the Google doc