A Timelapse of Timelapse

Timelapse is a little open-source screen recorder for macOS. It takes a screenshot every second and creates a movie in the end.

To celebrate its unlikely 1.0 release today, I present here a “timelapse” of this project’s journey. It just took ten years to get here.

2011 - How it all began

To be honest, I don’t remember why I initially wrote the tool. I must have had a personal need for a screen recorder, I guess…

In May 2011, when I started the project, I was doing my Masters Degree in Computer Science. I might have needed the tool for University; most likely, however, I was just trying to find an excuse for not working on an assignment.

During that time, I wrote a lot of tools like that. Mainly to scratch a personal itch, learn a new programming language, or just have fun.

Among them are tools like a random sandwich generator for Subway (the American fast-food chain), DrawRoom, a keyboard-driven drawing app inspired by WriteRoom, and the obligatory CMS software, that I sold to clients. Surprisingly, none of them were a great success.

DrawRoom, a tool that I wrote around the same time, is a real piece of art. To this day it has five commits and a single Github star (by myself, don't judge...).
DrawRoom, a tool that I wrote around the same time, is a real piece of art. To this day it has five commits and a single Github star (by myself, don’t judge…).

What I do know for sure is that I was unhappy with all existing screen recorders. They could roughly be categorized into these three groups:

  • Proprietary solutions that cost money or could call home.
  • Tools that didn’t work on macOS.
  • Small, fragile, one-off scripts that people passed around in forums or as Github gists. They rarely worked as advertised.

Among the remaining tools were none that provided any timelapse functionality; so I set out to write my own.

This all sounds very epic, but in reality, I worked on it for a day. After five heroic commits on May 11, 2011, it sat there, idle, for seven years…

2018

A lot of time elapsed before anything exciting happened.

In January ’18, seemingly out of nowhere, the first user filed a bug report. It was titled hung when creating the avi 😱. Turns out that a game developer from Canada, juul1a, was trying to use the tool to track her progress on an indie game — how cool is that?

To help her out, I decided to do some general cleanup, finally write down some instructions on how to even use the program, add a requirements.txt, and port the tool from mencoder to ffmpeg.

After that, timelapse was ready for prime-time. 🎬 Here is some live action from her videos featuring timelapses:

At that point, the tool was still very wobbly and could only be used from the commandline, but I began to see some potential for building a proper app from it; I just never found the time.

In October ’18, I decided to ask for support during Hacktoberfest. I created a few tickets and labeled them with hacktoberfest to try and find contributors.

And then, I waited.

First, Shreya V Prabhu fixed an issue where a new recording was overwriting the previous one by adding a timestamp to the video name. Then Abner Campanha and Shane Creedon (no longer on Github) created a basic test structure. Gbenro Selere added a CI pipeline for Travis CI. It really worked, and the project was in much better shape after that!

2019

One year passes by, and Kyle Jones adds some contribution guidelines, while I move the CI pipeline to the newly released Github actions.

Chaitanya fixed a bug where the program would hang when the recording stopped by moving the video creation from threads to a separate process. He continued to make the codebase more robust and became a core contributor, reviewing pull requests and handling releases.

Thanks to orcutt989, the app now made use of type hints in Python 3.6.

gkpln3 added support for multi-monitor configurations. The screen captured will always be the one with the mouse on it.

2020

Fast forward to today, and after almost ten years, we finally created a true macOS app using the awesome py2app bundler. This should make the tool usable by non-developers.

Back to the Future

We reached the end of our little journey.

A long time has passed until 1.0. This project is a testament to the wonders of open source collaboration, and I am proud to work on it with contributors from around the world. It doesn’t have to be a life-changing project to bring people together who have fun building things. If this were the end of the story, I’d be okay with that. I doubt it, though. Here’s to the next ten years!

🎬 Download timelapse on Github.

Bonus

The video at the beginning is a timelapse of how I finish this article.
How meta.

Good work takes time. If you want to build software that lasts, CodeCrafters teaches you to build things from scratch without the shortcuts. Try it free, get 40% off paid plans. I earn a commission on subscriptions.