SlideShare a Scribd company logo
Migrating Python.org to
Buildbot 9 and Python 3
By Craig Rodrigues
Presentation Overview
● Buildbot is build automation software written in Python that can be used to
build and test a software project
● Python.org uses buildbot to build CPython
● Presentation covers my efforts to update Buildbot from version 8 to
version 9, and update underlying runtime to Python 3
Buildbot
Buildbot Intro
● Build automation software written in Python
● Open Source project, over 12 years old:
https://buildbot.net
● Used by many projects: Chromium, LLVM, XEmacs,
Python (CPython)
What does Buildbot do?
● As changes are submitted to a large software project,
Buildbot can execute functions to answer the following
questions:
○ Does the code build?
○ Does the code pass tests and work?
Migrating python.org to buildbot 9 and python 3
Migrating python.org to buildbot 9 and python 3
Buildbot and Python.org
How does Python.org use Buildbot?
● Source code for Python (CPython) is stored in Git on GitHub
● Developers submit changes to the code via GitHub pull requests
● Buildbot detects these changes, builds the code, and runs tests
● Many platforms, operating systems, and CPU architectures are tested
https://buildbot.python.org/all/#/console
Migrating python.org to buildbot 9 and python 3
Who maintains this?
● Python.org has an ops team, made up of volunteers
● A subset of this team is responsible for Buildbot::
python-buildbots@python.org
● Buildbot master is maintained by this team
● Buildbot workers are supplied by volunteers around the world
Moving to Buildbot 9 and
Python 3
Motivation
● Python.org was using Buildbot 8
○ Older version
○ Buildbot maintainers not updating, fixing, or doing new releases
○ Only runs on Python 2
● Newer version is Buildbot 9
○ Actively supported, fixed, new releases
○ Python 2, and now Python 3 support
○ Support newer features like Docker
○ New UI in Javascript/Angular
Migration strategy
● Port Buildbot dependencies to Python 3, primarily Twisted
○ Buildbot heavily uses Twisted for asyncio, networking
● Port Buildbot code to Python 3
● Port Python.org’s config to Buildbot 3
● Work with ops team to migrate buildbot.python.org
Port Twisted to Python 3
● See:
https://www.slideshare.net/CraigRodrigues1/the-onward-journey-porting-t
wisted-to-python-3
● Hundreds of pull requests. I did a lot of work in 2016. Got help from
others such as Glyph, Amber Brown, and others
Port Buildbot to Python 3
● Hundreds of pull requests. I did the work in 2017.
● Usual Python 3 porting challenges:
○ print “” vs. print(“”)
○ cmp() gone in Py3
○ str is now unicode in Python 3 (argh!!)
○ etc.
Buildbot interop with Python 2 workers
● Due to str/bytes (Py2) vs. str/unicode (Py3) issues, retaining
interoperability between Python 3 master, and Python 2 workers required
careful testing and bug fixing
Finding a bug in Python 3!
● I stumbled across this 7 year old bug:
https://bugs.python.org/issue10544
● This line worked in Py2 but not in Py3:
defer.returnValue([(yield self.db2data(br)) for br in buildrequests])
Finding a bug in Python 3!
● Needed to be rewritten to work on Py2 and Py3:
results = []
for br in buildrequests:
results.append((yield self.db2data(br)))
defer.returnValue(results)
Finding a bug in Python 3!
● https://bugs.python.org/issue10544
● Patch was committed to Python 3.7 in December 2017 to deprecate the
original code snippet that worked in Python 2
Doing the final migration for
Python.org
Porting the config
● Buildbot config is Python code, so minor porting required
● Buildbot nine UI is written in JavaScript/Angular, makes heavy use of
websockets.
● Apache web proxy config had to be fixed to allow websockets to work
● Thanks to Zachary Ware, the ops team member who did the work!
Mission Accomplished!
● Zachary Ware, flipped the switch in October 2017
● http://buildbot.python.org/all/
Thanks
● Zachary Ware, who helped on the ops side and did the final work
● Pierre Tardy, Buildbot maintainer who reviewed and merged my Py3
patches
● Twisted developers: Glyph Lefkowitz, Amber Brown, Adi Roiban, Abishek
Choudhary who helped review my Twisted Py3 patches
Migrating python.org to buildbot 9 and python 3
Contact me
● Craig Rodrigues <rodrigc@crodrigues.org>
Linkedin: https://linkedin.com/in/rodrigc
Twitter: @rodrigc6

More Related Content

PDF
Git workflows (Basics)
PDF
iTHome Gopher Day 2017: What can Golang do? (Using project 52 as examples)
PDF
A practical 30m intro to Git vcs
PDF
Creating an api from design to security.
PDF
Go dla elektronika
PDF
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
PDF
HTTP / 1, HTTP / 2 and HTTP / 3: Past, present and the future of APIs
PDF
Jedi knight
Git workflows (Basics)
iTHome Gopher Day 2017: What can Golang do? (Using project 52 as examples)
A practical 30m intro to Git vcs
Creating an api from design to security.
Go dla elektronika
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
HTTP / 1, HTTP / 2 and HTTP / 3: Past, present and the future of APIs
Jedi knight

What's hot (19)

PDF
用 Go 語言實戰 Push Notification 服務
PDF
Source Control with Git & GitHub
ODP
Gopenflow demo v1 (english)
PDF
OpenAPIを利用したPythonWebアプリケーション開発
PDF
Git - Workshop Disruptiva
PDF
Agiles 2015 - Git no es solo una cara bonita
PPTX
Github developing stack
ODP
R, Git, Github, and CI
PDF
SpringOne 2GX 2015 - Fullstack Groovy developer
PDF
Flutter beers and pizza
PDF
Dev + DevOps для PHP розробника
PDF
Як РНР розробник пише код на Kotlin
PDF
Golang skills pre-session
PDF
componentDidCatch and Error Boundaries in React v16+
PDF
Building Command Line Tools with Golang
PDF
Let's Go @ St. Louis CocoaHeads
PDF
Introducing Github and Octocats by Tony Bangratz
PDF
GoLang Introduction
PDF
Golang skills session1: introduction
用 Go 語言實戰 Push Notification 服務
Source Control with Git & GitHub
Gopenflow demo v1 (english)
OpenAPIを利用したPythonWebアプリケーション開発
Git - Workshop Disruptiva
Agiles 2015 - Git no es solo una cara bonita
Github developing stack
R, Git, Github, and CI
SpringOne 2GX 2015 - Fullstack Groovy developer
Flutter beers and pizza
Dev + DevOps для PHP розробника
Як РНР розробник пише код на Kotlin
Golang skills pre-session
componentDidCatch and Error Boundaries in React v16+
Building Command Line Tools with Golang
Let's Go @ St. Louis CocoaHeads
Introducing Github and Octocats by Tony Bangratz
GoLang Introduction
Golang skills session1: introduction
Ad

Similar to Migrating python.org to buildbot 9 and python 3 (20)

PPTX
The Onward Journey: Porting Twisted to Python 3
PDF
Austin Python Meetup 2017: How to Stop Worrying and Start a Project with Pyth...
PDF
Plone ♥︎ Python 3
PDF
It's 2019 & I'm still using Python 2! Should I be worried?
PDF
EuroPython 2013 - Python3 TurboGears Training
PDF
Pycon taiwan 2018_claudiu_popa
PDF
SciPy22 - Building binary extensions with pybind11, scikit build, and cibuild...
TXT
vvvvReadme
PPTX
Introduction to Python - Code Heroku
PDF
Introduction to python 3
PDF
What is Python? (Silicon Valley CodeCamp 2014)
PDF
Introduction to python 3 2nd round
PPTX
Python for IoT CoE.pptx KDOJWIHJNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
KEY
State of Python (2010)
PDF
Startup Camp - Git, Python, Django session
PDF
Mastering the Interview: 50 Common Interview Questions Demystified
PDF
Introduction-To-Python- a guide to master
PDF
Python Essentials For Dummies John C Shovic Alan Simpson
PDF
Introduction to Python.pdf
PDF
Python Ecosystem for Beginners - PyCon Uruguay 2013
The Onward Journey: Porting Twisted to Python 3
Austin Python Meetup 2017: How to Stop Worrying and Start a Project with Pyth...
Plone ♥︎ Python 3
It's 2019 & I'm still using Python 2! Should I be worried?
EuroPython 2013 - Python3 TurboGears Training
Pycon taiwan 2018_claudiu_popa
SciPy22 - Building binary extensions with pybind11, scikit build, and cibuild...
vvvvReadme
Introduction to Python - Code Heroku
Introduction to python 3
What is Python? (Silicon Valley CodeCamp 2014)
Introduction to python 3 2nd round
Python for IoT CoE.pptx KDOJWIHJNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
State of Python (2010)
Startup Camp - Git, Python, Django session
Mastering the Interview: 50 Common Interview Questions Demystified
Introduction-To-Python- a guide to master
Python Essentials For Dummies John C Shovic Alan Simpson
Introduction to Python.pdf
Python Ecosystem for Beginners - PyCon Uruguay 2013
Ad

Recently uploaded (20)

PPTX
Introduction to Artificial Intelligence
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
AI in Product Development-omnex systems
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Understanding Forklifts - TECH EHS Solution
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Nekopoi APK 2025 free lastest update
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Introduction to Artificial Intelligence
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
How Creative Agencies Leverage Project Management Software.pdf
AI in Product Development-omnex systems
Navsoft: AI-Powered Business Solutions & Custom Software Development
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Which alternative to Crystal Reports is best for small or large businesses.pdf
Upgrade and Innovation Strategies for SAP ERP Customers
Understanding Forklifts - TECH EHS Solution
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Reimagine Home Health with the Power of Agentic AI​
Wondershare Filmora 15 Crack With Activation Key [2025
Nekopoi APK 2025 free lastest update
Odoo POS Development Services by CandidRoot Solutions
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)

Migrating python.org to buildbot 9 and python 3

  • 1. Migrating Python.org to Buildbot 9 and Python 3 By Craig Rodrigues
  • 2. Presentation Overview ● Buildbot is build automation software written in Python that can be used to build and test a software project ● Python.org uses buildbot to build CPython ● Presentation covers my efforts to update Buildbot from version 8 to version 9, and update underlying runtime to Python 3
  • 4. Buildbot Intro ● Build automation software written in Python ● Open Source project, over 12 years old: https://buildbot.net ● Used by many projects: Chromium, LLVM, XEmacs, Python (CPython)
  • 5. What does Buildbot do? ● As changes are submitted to a large software project, Buildbot can execute functions to answer the following questions: ○ Does the code build? ○ Does the code pass tests and work?
  • 9. How does Python.org use Buildbot? ● Source code for Python (CPython) is stored in Git on GitHub ● Developers submit changes to the code via GitHub pull requests ● Buildbot detects these changes, builds the code, and runs tests ● Many platforms, operating systems, and CPU architectures are tested https://buildbot.python.org/all/#/console
  • 11. Who maintains this? ● Python.org has an ops team, made up of volunteers ● A subset of this team is responsible for Buildbot:: python-buildbots@python.org ● Buildbot master is maintained by this team ● Buildbot workers are supplied by volunteers around the world
  • 12. Moving to Buildbot 9 and Python 3
  • 13. Motivation ● Python.org was using Buildbot 8 ○ Older version ○ Buildbot maintainers not updating, fixing, or doing new releases ○ Only runs on Python 2 ● Newer version is Buildbot 9 ○ Actively supported, fixed, new releases ○ Python 2, and now Python 3 support ○ Support newer features like Docker ○ New UI in Javascript/Angular
  • 14. Migration strategy ● Port Buildbot dependencies to Python 3, primarily Twisted ○ Buildbot heavily uses Twisted for asyncio, networking ● Port Buildbot code to Python 3 ● Port Python.org’s config to Buildbot 3 ● Work with ops team to migrate buildbot.python.org
  • 15. Port Twisted to Python 3 ● See: https://www.slideshare.net/CraigRodrigues1/the-onward-journey-porting-t wisted-to-python-3 ● Hundreds of pull requests. I did a lot of work in 2016. Got help from others such as Glyph, Amber Brown, and others
  • 16. Port Buildbot to Python 3 ● Hundreds of pull requests. I did the work in 2017. ● Usual Python 3 porting challenges: ○ print “” vs. print(“”) ○ cmp() gone in Py3 ○ str is now unicode in Python 3 (argh!!) ○ etc.
  • 17. Buildbot interop with Python 2 workers ● Due to str/bytes (Py2) vs. str/unicode (Py3) issues, retaining interoperability between Python 3 master, and Python 2 workers required careful testing and bug fixing
  • 18. Finding a bug in Python 3! ● I stumbled across this 7 year old bug: https://bugs.python.org/issue10544 ● This line worked in Py2 but not in Py3: defer.returnValue([(yield self.db2data(br)) for br in buildrequests])
  • 19. Finding a bug in Python 3! ● Needed to be rewritten to work on Py2 and Py3: results = [] for br in buildrequests: results.append((yield self.db2data(br))) defer.returnValue(results)
  • 20. Finding a bug in Python 3! ● https://bugs.python.org/issue10544 ● Patch was committed to Python 3.7 in December 2017 to deprecate the original code snippet that worked in Python 2
  • 21. Doing the final migration for Python.org
  • 22. Porting the config ● Buildbot config is Python code, so minor porting required ● Buildbot nine UI is written in JavaScript/Angular, makes heavy use of websockets. ● Apache web proxy config had to be fixed to allow websockets to work ● Thanks to Zachary Ware, the ops team member who did the work!
  • 23. Mission Accomplished! ● Zachary Ware, flipped the switch in October 2017 ● http://buildbot.python.org/all/
  • 24. Thanks ● Zachary Ware, who helped on the ops side and did the final work ● Pierre Tardy, Buildbot maintainer who reviewed and merged my Py3 patches ● Twisted developers: Glyph Lefkowitz, Amber Brown, Adi Roiban, Abishek Choudhary who helped review my Twisted Py3 patches
  • 26. Contact me ● Craig Rodrigues <rodrigc@crodrigues.org> Linkedin: https://linkedin.com/in/rodrigc Twitter: @rodrigc6