Jump to Content
Hyrum Wright

Hyrum Wright

Hyrum leads the Code Health Team within Google, focusing on tools, techniques and policy for improving Google's codebase at scale.

Research Areas

Authored Publications
Google Publications
Other Publications
Sort By
  • Title
  • Title, descending
  • Year
  • Year, descending
    Incremental Type Migration Using Type Algebra
    International Conference on Software Maintenance (2020) (to appear)
    Preview abstract When a new set of types is introduced into a large software system, the task of retrofitting that system to take advantage of those types is generally cost-prohibitive. Existing automated type migration systems assume a one-to-one correspondence between old types and new types, making them unable to do partial migrations to more complex type sets. By using compiler-based migration tooling and an algebraically modeled type set, it is possible to use a small amount of manually seeded type information to automatically propagate the new types through a large monolithic C++ codebase. We demonstrate this technique by automatically generating 20k+ individual changes across a large industrial codebase of millions of lines of C++. View details
    Software Engineering at Google
    Titus Delafayette Winters
    Tom Manshreck
    O'Reilly (2020)
    Preview abstract Today, software engineers need to know not only how to program effectively but also how to develop proper engineering practices to make their codebase sustainable and healthy. This book emphasizes this difference between programming and software engineering. How can software engineers manage a living codebase that evolves and responds to changing requirements and demands over the length of its life? Based on their experience at Google, software engineers Titus Winters and Hyrum Wright, along with technical writer Tom Manshreck, present a candid and insightful look at how some of the world’s leading practitioners construct and maintain software. This book covers Google’s unique engineering culture, processes, and tools and how these aspects contribute to the effectiveness of an engineering organization. You’ll explore three fundamental principles that software organizations should keep in mind when designing, architecting, writing, and maintaining code: * How time affects the sustainability of software and how to make your code resilient over time * How scale affects the viability of software practices within an engineering organization * What trade-offs a typical engineer needs to make when evaluating design and development decisions. View details
    Large-Scale Automated Refactoring Using ClangMR
    Daniel Jasper
    Manuel Klimek
    Zhanyong Wan
    Proceedings of the 29th International Conference on Software Maintenance (2013)
    Preview abstract Maintaining large codebases can be a challenging endeavour. As new libraries, APIs and standards are introduced, old code is migrated to use them. To provide as clean and succinct an interface as possible for developers, old APIs are ideally removed as new ones are introduced. In practice, this becomes difficult as automatically finding and transforming code in a semantically correct way can be challenging, particularly as the size of a codebase increases. In this paper, we present a real-world implementation of a system to refactor large C++ codebases efficiently. A combination of the Clang compiler framework and the MapReduce parallel processor, ClangMR enables code maintainers to easily and correctly transform large collections of code. We describe the motivation behind such a tool, its implementation and then present our experiences using it in a recent API update with Google’s C++ codebase. View details
    No Results Found