[TBA] Launching TBA on Python 3

On the surface, it may look like thebluealliance.com is much the same as it’s ever been, but if you’ve been following on GitHub you’d have seen a lot of activity.

Over the last year or so, the team has been working on some internal migrations to make the codebase more modern, easier to develop on, and with improved documentation. TBA relies entirely on contributions from the FRC community, so we want to prioritize the developer experience.

The legacy Python 2 Google App Engine runtime is deprecated and historically difficult to get running locally, so we’ve been working hard on migrating the internals to a modern Python3 codebase.

We’re excited to announce today that a significant portion of the site you see (event+team+match pages) will be served in prod by the py3 version of the site, and we plan to continue rolling the rest out in the coming weeks.

I’d like to give a huge thanks to everyone who contributed over the course of the year - this is the biggest change TBA has seen in years, and we couldn’t have done it without our awesome community.

If you’d like to get involved or are wondering how the site works internally, check out the new wiki. And we’d be glad to help onboard anyone who is interested!

28 Likes

This endeavor was pretty interesting, logistically. We needed to figure out a methodical way to migrate small portions of the site to the new runtime while relying on some parts of the old site in order to minimize downtime. Right now the site is a bit Frankensteinish, with some pages and data fetching being in py2, other pages being in py3, and everything sharing the same database and some of the same caching. But hopefully, to the user, it all looks and works the same.

I’m sure we’ll write a blog post about it someday.

5 Likes

I know basically nothing about python, but I do think this is a great opportunity to say a huge Thank You to everyone that contributes to TBA. It continues to be such a huge benefit to the community and something that we shouldn’t take for granted.

7 Likes

I know just a little about Python, and even the small projects I’ve done have taken many hours. Building and maintaining a site and system as large and robust as The Blue Alliance, particularly as volunteers, is impressive indeed. Thank you, TBA Devs and Contributors.

3 Likes

This is like one better than Python 2 right?

On a more personal note, the transition from 2 to 3 is causing me a lot of stress too. Dependency problems are real.

1 Like

On one hand, I’m willing to do a lot of work to get type hints (this is a huge devex problem in legacy python codebase I’ve worked in, both TBA and at work).

On the other hand, we sorely underestimated how much time we’d spend trying to fill the gaps between the py2 and py2 App Engine runtimes, because they are not drop in replacements.

This wiki page is where we’ve been keeping a list of some of the wild stuff we’ve had to do

At least the silver lining is that much of the work we’re doing serves to decouple us a ton from all the legacy GAE apis, so the app should be much more portable now.

2 Likes