Work Header

Backwards Compatibility

Work Text:

It took Em almost a full day to realize she'd spotted a time traveler. There were plenty of clues, but they were all small details.

Em reached the registration desk Thursday morning. Folks were rushing through the line, trying to get checked in before tutorials started. Most of the volunteers were checking in attendees fairly smoothly, but the volunteer at the far end of the counter was stuck trying to solve the problem of someone Em didn't recognize.

Of course, there were plenty of people at PyCon Em didn't know, but after four years of attending she recognized more folks in the crowd than she would have on the street back home.

The time traveler’s clothes didn't stand out — a well-worn conference tee-shirt from a few years ago, a backpack, sensible shoes — basically the same outfit Em wore.

But the cash they were trying to hand to the volunteer was out of the ordinary. Tickets sold out months ago — so why would someone be trying to buy a ticket today?

Em lost that train of thought when she reached the counter and picked up her badge.

The workshop had been going for a few minutes when the unusual attendee came in. There's no graceful way to enter a workshop quietly: convention center doors are better attention-getters than anything else. Em immediately empathized with the newcomer — the door slammed, everyone looked at the time traveler, they froze. After either an eternity or a few seconds, the speaker cleared her throat.

“There are some seats up here at the front.”

Em shifted her bag off a seat, making space and pointing to the chair at the same time. They rushed into the seat, almost melting under the attention of the full room. The workshop leader moved on, diving into the arcane details of Python's package manager. Em knew she should pay close attention but something was nagging her. The PyCon uniform was correct, mostly, but Em managed to catch a closer look at the shirt they were wearing: Portbland 2017. Em tried to remember if her shirt from PyCon 2017 had included a similar error. Surely there hadn't been. So someone out there was making counterfeit PyCon shirts. Em had heard of some weird conference swag shenanigans, but this was a new one for her. Focusing on the workshop was hard with such a delicious mystery sitting beside her. By the time the lunch break was called, Em had a whole list of theories. But before she could ask any questions, the person, along with their shirt, had already made it out the door and down the hall.

Convention center food wasn't enough to dim Em's curiosity on its own, but Em had committed to checking in with a few friends over lunch. She put the clues out of her mind for the time being. The unusual attendee hadn't put Em out of their mind, though.

They came into lunch looking lost, at least until they saw Em seated at a partially full table.

After a quick "hello" and "may I join you?" the newcomer sat down. One of Em's friends started a round of introductions. When the introductions came around to them, there was a pause as they figured out the pattern of introductions.

"I'm Zee. I use they / them pronouns. I work at a university, teaching computer science.”

Em was still curious — which university? what computer science topics? But she was still eating and figured she ought to let Zee eat, too.

Zee had pulled out an energy bar and a bottle of water. Em didn't recognize the brand. Another programmer at the table, Tonya, tried to lure Zee into the conversation by asking if they weren't a fan of convention center food.

Zee took a moment to think about the question. Em was sure they were carefully composing an answer. "I don't know if I'd like the convention center food. But I also don't know if it would make me sick. I thought bringing my own food would help prevent me from finding out."

That got a chuckle from the table, plus a few people popping up with stories of their own dietary restrictions and which conferences they'd gotten sick at. Zee looked a little shocked by some of the stories, which, admittedly, veered into the "too much information" zone.

Lunch wound down and the party atrophied as people headed to the next tutorial. Zee and Em were left at the table.

“I saw you at the tutorials. Did you enjoy them?” Em asked.

“Yes, there was just so much information that it’s overwhelming. This is my first PyCon and I haven’t had a chance to go to many conferences.”

“Are you going to the PyLadies lunch?”

Zee immediately shook their head. “I’ve got enough bars for all my lunches.”

“You don’t have to eat the lunch they serve, but you might enjoy meeting some of the PyLadies. And it’s a smaller room — not nearly as overwhelming as the expo hall.”

Em and Zee compared schedules, discussing what else they were both planning to go to. The only overlap they had was a birds of a feather session scheduled for later that afternoon, focusing on Python 2’s sunsetting.

The Python 2 Sunsetting BoF was weird: more of a wake than a birds of a feather session. There wasn’t any whiskey, but everyone shared stories of what they were going to miss about Python 2 — and what they weren’t going to miss. It quickly devolved into programming in jokes. Em noticed that Zee wasn’t laughing and started paying closer attention.

“Time zones are the worst.”

Everyone at the table groaned, aside from Zee.

Zee looked confused in the wake of the joke. Em started to quietly explain that time zones are considered a particularly hard problem to program around.

“But what do you mean by time zones?” Zee asked.

“You know how the East Coast and the West Coast are on different times? They’re in different time zones.”

Zee played off their confusion as just misunderstanding the context behind the joke. But Em was pretty sure Zee was unfamiliar with the term — and couldn't think of a reason why a programmer wouldn't know about how irritating a time zone error could be. Em wondered if maybe time zones wouldn’t be a thing in the future, instantly jealous and curious about whether it would happen during her lifetime. Maybe there was someone in the room Em could ask...

Em held Zee back as the open space wound down, closing the door once everyone else was gone. As soon as she was sure no one would overhear them, she pounced on Zee.

“You’re a time traveler!”

Zee stumbled but tried to cover it. “Of course I’m not a time traveler. Who even does that? And why would a time traveler come to a random Python conference?”

“I haven’t figured that part out yet, but it makes sense.”

Zee sighed and rubbed their face. “I’m going to be in so much trouble.”

“Secret mission?” Em asked, gleeful with her correct guess.

“Something like that. I’m supposed to keep a very low profile.”

Em’s eyes got wide. “Does this mean that there aren’t time zones in the future?”

“I’m not supposed to reveal anything about the future.”

“Eh, I’m pretty good at reasoning out how things fit together and the fact that you avoided answering the question suggests that time zones aren’t a thing you have to deal with.” Em grinned. “A mighty foe vanquished!”

“So what actually brings you to PyCon?”

“I need a Python expert to help me with a problem.”

“Does that mean people don’t use Python in the future?”

Zee made up their mind to trust Em. “We do use Python, but we’ve updated it some. We also still have systems running legacy code — which we can no longer work with. I came back to find a Python 2 expert.”

Em’s eyes got huge. “You’re time traveling because we broke backwards compatibility.”

Zee grimaced. “That’s accurate enough.”

“I’m not sure I want to know what legacy software is that important.”

“Also accurate.”

“So what kind of fix are we talking about?”

“There’s an embedded system running Python 2 and having some issues with Year 10,000 compatability.”

Em’s jaw dropped. “You’ve fixed time zones but not the Year 10,000 bug?”

Zee squirmed: “We’ve fixed it on everything except one system no one even knew existed for—” Zee stopped themself and paused to consider how much information they were about to accidentally share. “—for way too long.”

“Sorry, I didn’t mean to put you on the spot,” Em said, though she was a bit disappointed that Zee hadn’t specified how long the system in question had been running. “I do know who we need to talk to, though.”

“We?” Zee was surprised by Em’s quick willingness to join their mission.

“Of course, we! You tell me that you’re on an important mission from the future and expect me to just forget about it? Not a chance!” Em stopped. “Unless you don’t want help for some reason? Would my helping ruin the space-time continuum?”

“I’m glad of the help. I just need to be careful not to draw attention.”

“Excellent. We need to go to the PyLadies lunch tomorrow.”

Zee asked, “Will I be welcome there? I’m not a lady. To be honest, I don’t entirely know what a lady is.”

Em smiled. “The name doesn’t work for everyone, but you’re definitely welcome. Think of it as a space for anyone with a marginalized gender identity — which, in this time and place, means basically anyone who isn’t a cis man.”

“I’m not a gender expert, especially when it comes to genders of the early 21st century, but I know I’m not a man.”

“You’ll fit in fine at PyLadies.”

“But will they all accept a time traveler, especially if I can’t tell them much of what’s going on?”

“We’re only going to mention that part to a very select group.”

The next day, at lunch, Em led the way to a table of folks with brightly-colored hair.

“This is Zee. They’re here to learn how to sort out some nasty Python 2 updates.” Em ran introductions around the table, ending with Kallie.

“Kallie is our Python 2 expert. She’s a core dev and can at least get us started.”

Kallie grimaced. “Do not volunteer me for anything to do with Python 2. I am not going to help anyone who hasn’t managed to update their system at this point. There are a few folks still in the support channels until the end of the year — that’s what they’re there for.”

Em waved at Zee to indicate that Kallie’s response wasn’t final. “I promise you’re going to want to hear about this project.” She leaned in close and whispered two words: “Time travel.”

Kallie was interested in spite of herself. “I’m going to need you to elaborate.”

“There’s this legacy codebase that can’t be updated to Python 3 and Zee needs help making sure it stays online long-term. Very long- term.”

Kallie said, “That’s only a medium-sized problem. We generally know what we need to do — we just need to implement a fix.”

“Could we get it done in a sprint?”

“I think we can.”

“Without telling too many people about time travel?”

“Let’s just claim we’re doing it as part of a computer science research project. We don’t have to tell them that the investigator leading the research probably hasn’t been born yet.”

Zee looked like they wanted to say something, but bit their tongue and slowly nodded. They sat next to Kallie and started explaining the problem in whispers. Kallie soon pulled out a laptop and started typing.

As the PyLadies luncheon progressed, the organizers invited folks to come up and promote their own projects. Em immediately got in line. When her turn came around, she addressed the whole room:

“We’re going to be sprinting on a patch for some Python 2 code on Monday for an academic project. We especially need help with embedded systems and time/date systems. Come talk to me after lunch if you want to learn more!”

The PyLadies grabbed a table in one of the sprint rooms. Laptops out, they all looked to Zee.

“Thank you all for helping on this project. We’re going to fix issues on an embedded system running Python 2 that can’t currently run on anything else or be replaced for ‘reasons’.”

Kallie spoke next: “I’ve triaged the problem and set up some initial issues and tests in a repo. Let’s get everyone added and see how far we can get.”

Em sat next to Zee, checking through what dev tools Zee used. “I’ve used GitHub, but only with some specialized tools to convert repos to something I can actually use. Theoretically, I can probably muddle through.”

“Do you mind if I run through the basics, just in case?”

Zee signaled that Em should go ahead. She reviewed pushing, pulling, merging and some other basics. They both dove into the code base and started looking through the repo Kallie set up.

“I’m rustier with Python than I realized.” Zee sounded frustrated. “I should have reviewed more.”

“What version are you more used to?”

“Nice try, Em. I’m not going to tell you what version number we’re on because I’m sure you’d use that information to figure out some detail about the future you’re not supposed to know.”

“What am I going to do? Start betting on the length of time versions of Python will stay in development? I can’t think of anyone who would take that bet.”

“I’ll tell you that I’m still probably one of the most active developers using early versions of Python, but that’s because I specialized in studying scripting and automation for my thesis. I don’t think you can cause too much trouble with that information.”

Em gave Zee some side eye. “You’re a historian of computer science, aren’t you?”

“I think that my area of expertise is one of those topics that could reveal too much about the future.”

“Yeah, yeah, but that’s still not a no.”

As Zee got up to speed, conversation slipped away. The programmers huddled around the table, breaking only for lunch. Most of the time the table was quiet, except for the clickety-clack of keyboards. Occasionally, one of the group would bring up a question and they’d talk through it or split off to pair program their way to a solution. Kallie enforced regular breaks, encouraging everyone to walk around and stretch every so often.

Zee and Em took one of those breaks to walk the hallways. They passed room after room of Python programmers working on different projects. Zee looked into the rooms, fascinated by what they saw — until they saw something that turned them pale. Em didn’t see anything special about the room, just a few different programmers working on an analytics tool, including the very pregnant founder of that project.

Zee looked like they were about to faint — or throw up. They started taking measured, precise steps, moving fast towards the bathroom.

By the time they came out of the stall, they were breathing normally and there was color back in their cheeks. They saw Em waiting with barely-contained curiosity and sighed.

"Let's tag this as something I can't talk about without creating a paradox. It's a sign I need to get back home, though."

When Em and Zee rejoined their sprint table, Kallie had a question that probably shouldn’t go into the working repo: “How are we going to get this code of yours to wherever it will be useful?”

“There’s a specific git repository I’m supposed to save everything to. Actually preserving that repository is the responsibility of the professionals.”

“I am so glad to hear that. I was worried that we were going to need to print all the code off on paper or bury a computer in an empty grave or something equally absurd.”

Zee laughed. “I’m not really sure of the process, but I am very happy to not carry around a bunch of dead trees.”

Kallie and Zee pushed the code. Zee studied their computer until an alert popped up. “Everything’s good.”

The sprint broke up, with contributors drifting to work on other projects.

Zee turned to Kallie and Em. “Thank you so much. I don’t know how I’d have gotten this done without both of you.”

Kallie grinned. “It was an easy enough fix and the best reason I’ve heard for still working on Python 2.” She hugged Zee and packed up her gear, leaving Zee and Em to walk together to the door.

Letting Zee go without asking for at least one question about the future was impossible, even if Em had to ask sideways.

"As a Python user, what's the most important feature we can add when we develop Python 4?"

A wave of emotions crossed Zee's face. "I see what you're trying to do, but... But, I'm entitled to my opinion, right?" They shrugged, continuing: “Security and resiliency are going to be crucial to developing Python 4.” With that, Zee walked out of the convention center and was gone.