Fog Creek

Project Asteroid: Gracefully Dropping Support for Dinosaur Browsers in Trello

According to the leading theory, dinosaurs went extinct roughly 65.5 million years ago after an asteroid landed on Earth. A few million years later you are working on a large scale web application and think to yourself, “Hey. Would it be such a stretch to compare the biodiversity of the Triassic period a.k.a. dinosaur times to that of today’s browser ecosystem?” No, I don’t think it would be. There are a lot of browsers out there and they all look and behave a little bit differently. There are some new browsers that are fast and have all kinds of great features and there are some old, slow dinosaur browsers made for a bygone time.

You are getting more than a little frustrated trying to support all these browsers. You’re looking at all the things you could be doing in these new browsers and it’s becoming clear that those big old dinosaurs are weighing you down. Of course, you could just decide to send people using these old browsers to an “Upgrade your dang browser are you kidding me?!” page one day, but that would be a cataclysmic event that would be sure to upset many, many people. What if there was a friendlier, more graceful way to transition these dinosaurs into the modern age?

Browser Usage on Trello.com

usage

This is what browser usage on trello.com looks like for the last two months or so. We built Trello from the ground up to work on just about any device. The only caveat was that we promised to support the browsers of today and tomorrow. Some of the browsers we supported at launch just can’t be considered modern by today’s standards. I’m talking about Internet Explorer 9 specifically. IE9 was released three years ago in March 2011 and was the most current version of IE at the launch of Trello. But three years ago might as well be 100 million years ago in Internet Time. I mean, three years ago? Doge was just someone’s dog three years ago.

Sure IE9 is old, but more importantly it’s hard to support. New Trello features take longer to develop because we have to bend over backwards to support IE9. Things tend to look wildly different in IE9. Open up the new attachment viewer in IE9 and it’s like a cubist painting gone wrong. IE9 doesn’t have all the new HTML and CSS features like the new browsers. To top it all off, it’s real slow. It takes forever to process JavaScript and make pixels show up. It’s like a kid running and screaming and knocking down all the boxes in the cereal aisle.

We’ve been hammering the site into a passable state for IE9, but it’s still a poor experience for the good-looking Trello crowd who we hold in the highest regard. So we would like to not have to support it, but at Trello-scale, 1.4% of visitors is not a number we can ignore. What do we do?

Enter Project Asteroid

Remember when you read How We Make Trello and your whole worldview was flipped upside down by the mere mention that there are multiple versions of the website out there at any given time? Remember how the website is just a face that chats with the Trello API and that the iOS and Android apps are also just faces and you can make your own face, too? Remember the dangerous potato faces? Remember when I said the API didn’t have any bugs and you thought I was being serious?

Well there’s a special face out there for people using Internet Explorer 9. We call it Asteroid. Get it? Like the thing that killed the dinosaurs. This is what Trello looks like in IE9 today.

asteroid

This is an old but completely functional version of the site. It doesn’t receive any updates or new features, just the occasional fix. It’s slightly customized. There’s a banner in the header that points you to the platforms page where you can find download links for all the great, modern browsers out there; browsers that are getting all kinds of cool stuff like a new card back and attachment viewer. But you can use Trello in IE9 all the same, perhaps while you are on hold with your work’s IT person trying to convince them to upgrade your browser.

In the end, everyone lives happily ever after. The dinosaur browsers peacefully roam in a land before time, while the modern browsers harness nuclear fusion and terraform Mars millions of years in the future. The dinosaur browsers will fade away eventually, but there’s no need to rid the Earth of them in an instant.

How do we know what face you should be seeing?

Let’s talk about what makes a web app first. A version of the Trello website is just a collection of files: a JavaScript file, a CSS file, some images, and maybe a few others. These files contain all the instructions necessary to make the site look and function in just the right way in your browser. The problem is that these instructions are not understood in the same way by every browser. The newer browsers get the instructions and say “Yeah cool I’m on it” while the dinosaur browsers look at you all confused then go off to find some leaves to munch on. This is annoying and is the reason we got into this mess in the first place.

What happens when we release a new client version? Let’s say the files collectively known as jellydonut-15 are broken in some way. To push a fix, we create a whole new collection of files, jellydonut-16, and you download the latest collection when you refresh or open a new Trello tab. These collections of files never change. jellydonut-15, jellydonut-16 and all the versions of Trello are all stored in a big ol’ file cabinet in the sky called a Content Delivery Network.

When you type https://trello.com in your browser’s address bar and hit enter, you make a request to the Trello server. The server takes the request and figures out who you are and which collection of files you get. The server says to itself, “Ooooh. A new request. Okay, this looks like Bobby. Let’s look him up in the database. Says here that he is on the alpha channel. The alpha channel is using the latest jellydonut version, which is… lemme thumb through this rolodex… jellydonut-22. Okay, I’ll make sure his browser pulls the jellydonut-22 files from that big ol’ file cabinet in the sky called a Content Delivery Network. Hey, when is lunch? *clutches power unit* ‘Ugh, you know what, I’m not hungry. I had some leaky AA batteries last night.’ Hahaha! A computer using AA batteries? That’s a good one. I’m going to tell that joke at the pub when I’m cycled out of production for the night. Oh look, another request…”

Now that you have your face files, you can start chatting up the API which will dutifully get the boards and cards your face asks for. Every face, new and old, talks to the one, single Trello API. I can personally verify that the API does not have a single bug. It’s important to note that the fact that we are cramming dozens of jelly donuts into a file cabinet and the fact that the hungry server knows which face you get are facts that are totally independent of the way the API operates. We don’t need to change the API for every new face. But let’s say jellydonut-17 wants to chat up the API in some new way. We update the API before jellydonut-17 is released so the API can understand what your face is talking about. Usually this new thing is an addition to the API, so it’s backwards compatible. Old faces simply continue to not ask for things they never knew to ask for.

Back to my point. So, in addition to knowing who you are, the server also knows what browser you are using based on the request. If it sees that you are using Internet Explorer 9, it gives you the custom asteroid files, no matter what channel you are on. These files include very simple instructions that won’t upset or confuse the dinosaur browsers and make them go off and eat people hiding in public restrooms. Then you, the person using IE9, see that there are new great things on the horizon if only you would upgraded your browser. Which you do. Hopefully. Right?

So is it working?

The short answer is yes. The asteroid appears to be having a… deep impact.

We launched asteroid on March 6th, 2014. Let’s compare Internet Explorer usage between January 13th–17th, 2014 and February 10th–14th, 2014, a time before asteroid. It goes up across the board for all the versions of IE. IE11 was up 16%, IE10 was up 3%, and IE9 was up 2%.

jan-feb

Now let’s compare February 10th–14th, 2014 to March 10th–14th, 2014, before and after asteroid. IE11 jumps up 23%, IE10 holds steady around 2%, and IE9 drops 8.5%.

feb-mar

For every week we compared before asteroid, IE9 usage was going up. In general, usage goes up for every browser. Now IE9 usage is decreasing. It’s easy to attribute the decreased usage of IE9 to asteroid, but it’s impossible to tell if people are switching to another browser or what. There was an especially big spike in IE11 usage, but we don’t know if that’s directly related. Usage is constantly fluctuating across all browsers.

But it’s good news at any rate. Great features are being developed faster and people can still use Trello on IE9. We can theoretically support this version forever, but we may pull it from production when IE9 usage becomes negligible. At that point, it should be a pretty soft landing. Another nice thing is that we can reuse this strategy when all the Trello developers are shaking their fists at some other browser that is looking pretty old (IE10).


That’s all. Please yell at me on Twitter at @bobbygrace and follow @trello for the latest. Of course, give Trello a shot. It will keep you and your team more organized. Guaranteed.

And please keep your browser up to date.