All blogs / Software / engineering practice
The latest from GitHub's engineering team
The Blog of the GitHub Engineering Team
Software / engineering practiceDevOps / SRE / infrastructureAI / MLPerformance / optimizationEngineering blogs
- Posts
- 179 from 22 Feb 2013 to 21 Oct 2026
- Posting
- monthly (23 in the last year)
- Kind
- company blog
- Feed
- https://github.blog/engineering.atom
2026 23
- The bridge to agent-scale Git infrastructure
- Staying Evergreen: How we automated secure access and repo hygiene in a shared org
- From 2,500 requests to 24: Rebuilding star history without the stargazers
- Building Git infrastructure for agent-scale development
- Improving site performance by shipping more CSS
- Rendering huge pull requests in the GitHub Copilot app
- How we make AI coding more cost efficient without sacrificing task quality
- Your alt text passes automated checks. That doesn’t mean it’s any good.
- Using the GitHub Copilot SDK for Java
- Turn one giant AI-generated pull request to a reviewable stack
- Don’t stop early: Case-folding source code at memory speed
- Tame Dependabot: Group your updates, slow the cadence, keep security fast
- The cost of saying yes has changed
- Better tools made Copilot code review worse. Here’s how we actually improved it.
- Automating cross-repo documentation with GitHub Agentic Workflows
- From latency to instant: Modernizing GitHub Issues navigation performance
- How GitHub uses eBPF to improve deployment safety
- The uphill climb of making diff lines performant
- Agent-driven development in Copilot Applied Science
- Continuous AI for accessibility: How GitHub transforms feedback into inclusion
- How we rebuilt the search architecture for high availability in GitHub Enterprise Server
- From pixels to characters: The engineering behind GitHub Copilot CLI’s animated ASCII banner
- When protections outlive their purpose: A lesson on managing defense systems at scale
2025 14
- Post-quantum security for SSH access on GitHub
- How GitHub engineers tackle platform problems
- GitHub Issues search now supports nested queries and boolean operators: Here’s how we (re)built it
- Design system annotations, part 2: Advanced methods of annotating components
- Design system annotations, part 1: How accessibility gets left out of components
- Building a more accessible GitHub CLI
- How the GitHub CLI can now enable triangular workflows
- Introducing sub-issues: Enhancing issue management on GitHub
- How engineers can use one-on-ones with their manager to accelerate career growth
- IssueOps: Automate CI/CD (and more!) with GitHub Issues and Actions
- Finding leaked passwords with AI: How we built Copilot secret scanning
- How to debug code with GitHub Copilot
- How GitHub uses CodeQL to secure GitHub
- Considerations for making a tree view component accessible
2024 16
- Breaking down CPU speed: How utilization impacts performance
- How to make Storybook Interactions respect user motion preferences
- GitHub Enterprise Cloud with data residency: How we built the next evolution of GitHub Enterprise using GitHub
- The ultimate guide to developer happiness
- How GitHub supports neurodiverse employees (and how your company can, too)
- How we improved availability through iterative simplification
- Exploring the challenges in creating an accessible sortable list (drag-and-drop)
- How we improved push processing on GitHub
- How GitHub reduced testing time for iOS apps with new runner features
- How we’re building more inclusive and accessible components at GitHub
- Empowering accessibility: GitHub’s journey building an in-house Champions program
- How GitHub uses merge queue to ship hundreds of changes every day
- Fixing security vulnerabilities with AI
- Bringing npm registry services to GitHub Codespaces
- GitHub’s Engineering Fundamentals program: How we deliver on availability, security, and accessibility
- How GitHub’s Developer Experience team improved innerloop development
2023 21
- How we organize and get things done with SERVICEOWNERS
- Upgrading GitHub.com to MySQL 8.0
- Measuring Git performance with OpenTelemetry
- How to communicate like a GitHub engineer: our principles, practices, and tools
- How GitHub uses GitHub Actions and Actions larger runners to build and test GitHub.com
- Optimize your GitHub Codespaces costs with upgraded virtual machines
- How we build containerized services at GitHub using GitHub
- Scaling merge-ort across GitHub
- Exploring developer happiness, inclusion, and productivity at GitHub’s Design Conference
- Accessibility considerations behind code search and code view
- Crafting a better, faster code view
- Design’s journey towards accessibility
- Unlocking inclusive design: how Primer’s color system is making GitHub.com more inclusive
- How we work: inclusive retrospectives for the GitHub Accessibility leadership team
- Building GitHub with Ruby and Rails
- How the Grafana Alerting team scales their issue management with GitHub Projects
- How GitHub Docs’ new search works
- The technology behind GitHub’s new code search
- How the GitHub Docs team uses GitHub Projects
- Enabling branch deployments through IssueOps with GitHub Actions
- How GitHub coordinates product releases with GitHub Projects and GitHub Actions
2022 18
- What’s with all the ducks?
- How we use GitHub to be more productive, collaborative, and secure
- Creating an accessible search experience with the QueryBuilder component
- Experiment: The hidden costs of waiting on slow build times
- How GitHub converts previously encrypted and unencrypted columns to ActiveRecord encrypted columns
- Why and how GitHub encrypts sensitive database columns using ActiveRecord::Encryption
- How we tripled max concurrent jobs to boost performance of GitHub Actions
- Scaling Git’s garbage collection
- How the GitHub Security Team uses projects and GitHub Actions for planning, tracking, and more
- Improve Git monorepo performance with a file system monitor
- How we think about browsers
- How we use Dependabot to secure GitHub
- How we’re continuing to enable all developers to build
- How we’re using projects to build projects
- Improving Git push times through faster server side hooks
- Performance at GitHub: deferring stats with rack.after_reply
- 4 ways we use GitHub Actions to build GitHub
- How we ship GitHub Mobile every week
2021 18
- Technical interviews via Codespaces
- A brief history of code search at GitHub
- Improving GitHub code search
- Using ChatOps to help Actions on-call engineers
- Partitioning GitHub’s relational databases to handle scale
- GitHub’s Engineering Team has moved to Codespaces
- Why (and how) GitHub is adopting OpenTelemetry
- Security keys are now supported for SSH Git operations
- How we use Web Components at GitHub
- How we use GitHub Actions to manage GitHub Docs
- How we ship code faster and safer with feature flags
- Behind GitHub’s new authentication token formats
- How we scaled the GitHub API with a sharded, replicated rate limiter in Redis
- How GitHub Actions renders large-scale logs
- Scripting with GitHub CLI
- How we illustrate at GitHub
- Making GitHub’s new homepage fast and performant
- Building On-Call Culture at GitHub
2020 17
- Visualizing GitHub’s global community
- How we built the GitHub globe
- Reducing flaky builds by 18x
- Improving the GHES release process: release candidates
- Making GitHub CI workflow 3x faster
- Building GitHub: introduction
- GitHub Mobile and GraphQL
- How we threat model
- Upgrading GitHub to Ruby 2.7
- Why Write ADRs
- CodeGen: Semantic’s improved language support system
- How we launched docs.github.com
- Three bugs in the Go MySQL Driver
- Remote work: Engineering’s perspective on humanizing the remote work experience
- Remote work: Working together when we’re not together
- From 48k lines of code to 10—the story of GitHub’s JavaScript SDK
- CERT partners with GitHub Security Lab for automated remediation
2019 9
- Behind the scenes: GitHub security alerts
- Debugging network stalls on Kubernetes
- Introducing the CodeSearchNet challenge
- Running GitHub on Rails 6.0
- GitHub Token Scanning—one billion tokens identified and five new partners
- Commit signing support for bots and other GitHub Apps
- SSH certificate authentication for GitHub Enterprise Cloud
- Direct instruction marking in Ruby 2.6
- Five years of the GitHub Bug Bounty program
2018 8
- Introducing the new GitHub Status Site
- Behind the scenes of GitHub Token Scanning
- Applying machine intelligence to GitHub security alerts
- Upgrading GitHub from Rails 3.2 to 5.2
- Removing jQuery from GitHub.com frontend
- GLB: GitHub’s open source load balancer
- MySQL High Availability at GitHub
- Using Figma designs to build the Octicons icon library
2017 16
- Mitigating replication lag and reducing read load with freno
- Stretching Spokes
- Transit and Peering: How your requests reach GitHub
- Evolution of GitHub’s data centers
- Kubernetes at GitHub
- Topic Suggestions for Millions of Repositories
- Soft U2F
- MySQL infrastructure testing automation at GitHub
- DNS Infrastructure at GitHub
- How Four Native Developers Wrote An Electron App
- Enabling DNS split authority with OctoDNS
- A formal spec for GitHub Flavored Markdown
- Discontinue support for weak cryptographic standards
- A glimpse into GitHub’s Bug Bounty workflow
- GitHub’s post-CSP journey
- Moving persistent data out of Redis