This year I started learning about Git. I also started watching an absurdly funny, but often offensive, comedy show I highly recommend called Future Man. In Future man, a Janitor must travel through time to prevent the apocalypse. Because I was learning Git at the time, and because the mind works in mysterious ways, I got to thinking… What if time travel was handled like Git source control? I know nothing concrete or scientific about time travel and a little about Git so please bear with me… It’s the end of 2018 and I want to end the year with some light-hearted SciFi fun.
When Josh Futturman successfully completes his favorite game, the game’s two main characters, Wolf and Tiger, suddenly appear, having traveled from the future to recruit Josh to save the world from the apocalypse. All three characters set out to travel back in time to change the past and thus prevent the future apocalypse, and of course, a series of humorous blunders and adventures ensue. Think of it as a mix of Back To The Future, meets Terminator, meets The Last Starfighter, etc, which the show does not hesitate to acknowledge.
At first we assume that the reality the characters inhabit and time travel through is linear. They can travel to the past and back to the future, but there is only one past and only one future. Hence the attempt to prevent the future apocalypse.
But these characters are untrained bunglers and they mess up the past pretty drastically. When they travel back to the future, they realize the future is quite different than the one they came from. The apocalypse is more imminent than ever, and it’s all their fault.
But here’s the twist… It turns out, they altered the past so much, that they now inhabit a totally different reality. One where Josh never beat the game, and subsequently was never picked up and brought back to the past and currently enjoys a life of leisure. Both Josh’s exist in the same reality.
This has ramifications for how we understand how time travel works in the show. It turns out that time traveling either creates or transports them to a different reality, and we can assume the other one continues on without the time travelers present.
Reality it turns out, is not linear, it is a multiverse, with an infinite number of realities.
So if every time they travel back in time, it creates another reality, why does it even matter if the characters prevent the apocalypse? This is where I started pondering Git and time travel…
What if one could version control reality while traveling through time?
Git Is a Version Control Application. Git keeps track of every change related to your project over time. Software developers use Git to create commits (changes) as they work on a project to indicate points when they changed specific units of work. Git uses branches and commits to allow software developers to experiment with code separate from their tested production code.
When you begin working on a new feature in Git you first create a new branch that is a copy of the Master Branch. Then you make commits, open a pull request, and eventually merge your new branch with the commits back into the Master Branch. Everything in Git lives in a branch. If you attempt to merge two branches and there is a code conflict, git allows you to review and resolve the conflict before merging.
Introducing the Git Reality Source Control Time Machine! It works like so…
Create a New Branch
When you’re ready to experiment with a new future or fix an issue in the present, create a new branch of reality by traveling back in time. The branch will look exactly like the master (your reality) at first, but any changes you make will only be reflected in the future of your branch. For example, travel back to the 1960’s to prevent the apocalypse.
Make changes to the past within the branch so that you can commit them to your future. For example, try convincing a young man to give up science and sail away on a boat adventure with his one true love instead of becoming the scientist that eventually engineers the apocalypse.
Open a Pull Request and Collaborate
Open a pull request to start discussing your changes with your team. Here you can resolve any possible conflicts or time paradoxes that may have been created as a result of your commit. For example, if you accidentally talked your father out of dating your mother and now your mother has a big crush on you, and subsequently you no longer exist in the future, you may not want to merge that change back into your reality.
Merge to Master Branch
Once your team approves your changes, merge your pull request from your reality branch into the master reality branch. The future is just as you planned, your parents marriage is stronger than ever and the apocalypse has been prevented. Congratulations, you are the savior.
Thank you for reading and Happy New Year!