Building a new sitespeed.io

03 February 2015


TL;DR: Driving an Open Source project is a lot of work! Please make sure to support the projects you use, and help the company where you work do the same. Here's exactly how you can help sitespeed.io.


A month ago me and Tobias Lidskog released sitespeed.io, a little over two years after the first version was released. I've spent many hours making it to 3.0 and wanted share the ride.

Background

Two years ago I got kids. Two of them! In Sweden we have great support for parents and you could be on parental leave for all your life. Well not really but if you got twins, both parents can share the parental leave 50/50. I was home with the kids for almost a year. I know, I'm really fortunate, being home with small babies is great and I wish everyone could have the same opportunity.

However; only talking to babies, changing diapers, feeding the kids can make you crazy (you know the housewife syndrome). I needed to do something to keep my mind fresh and my brain functional.

I've always been interested in what makes a web page fast. I use YSlow and WebPageTest in my everyday work, I love these tools. However when a client wanted to keep track of tens of thousands of pages, I had a problem (additionally no one knew what was on these pages or how they worked). I really needed a way to run and test many URL:s of a site. That's why I started to create sitespeed.io.

Open Source FTW

In my career as a developer (I've started working in 1999) I have spent thousands of hours making unpaid work for my employers, building internal tools or products at night. Unpaid work is not the smartest thing to do, but at least I’ve learned a lot. I've always been passionate about what I do. if I do something, I want to do it good. And over the years I've been really inspired by guys like Ariya Hidayat (creator of PhantomJS) and Mark Otto (Bootstrap) that has created great tools that are Open Source.

This time I really wanted to do something that is free for everyone, open and hopefully something that people can use, contribute to and help make better.

Starting

Driving a Open Source projects means you need to put down hours. Your private hours. I wish there was a better way (hey all companies that use Open Source, please please please sponsor more projects!). That is easy if you are young, but hard when you have a family.

I used to do my work late nights, when the kids was a sleep. A good night I could do 4-5 hours of coding. And during lunch time, when my kids was a sleep in the stroller, I parked it and could get one hour writing code, adding issues, sitting on a park bench. Living the life of Open Source. It worked fine in the summertime, but it was cold as heck in the winter.

Yep, I have the kids and the computer in the stroller.

I know I'm really lucky having had the luxury of being home taking care of the kids, and be able to code my own stuff. It was quite easy before 1.0 was released: no users, building whatever I wanted, trying new stuff out. I made the main functionality in a shell script (I've never tried it out before and I wanted to do something new, now it seems incredible stupid, haha).

Here's 1.0

I released the project and got lucky that some people started picking it up. At this point, it crawled one site and used PhantomJS to run headless and verify pages against web performance best practices (extending the classic YSlow rules). It wasn't perfect but it worked. After some time, the project reached hundred stars at GitHub, I celebrated with champagne with some friends. One hundred stars, that's amazing!

The new logo for 2.0

2.0 - The browser is my new best friend

After the parental leave, I got back to work and put down the hours during nights to keep sitespeed.io up and running (I'm really lucky to have a girlfriend that supports me so I can do the night work). There was one thing missing: collecting real timing measurements from browsers. I built a POC, showed it to my friend Tobias and asked him if he could help me out. He said yes and took lead on getting timings from real browsers. It really rocks to be two persons instead of one. :)

After a while we got it up and running and could release 2.0. Still benchmarking against best practices and getting timings. It was cool and we got some more attention.

Tobias Baldauf and Andy Davies talking about sitespeed.io at Velocity Conference 2013 London

3.0 - A brand new me

Remember I've built the most things during nights, using shell scripts/Java/whatever. The code quality hasn't been the best. I knew that something needed to be done so last year, I asked Tobias to join the one member sitespeed.io team to make the new version in NodeJS. The plan was to make sitespeed.io easier to contribute to, easier to maintain and easier to add new functions.

Rebuilding everything took time. Even though we where two persons, we had a lot of other things on our to-do list. The release came six months later than planned. On the other hand it is much better now than we ever thought it could be.

Project stats

The project has been live now for two years and here are some stats:

The good and bad

Doing this for the last two years, I want to do a summary of what's been good and what's been not so good. Lets start with the good stuff.

And the bad:

A change please

It's a lot of hard work driving an Open Source tool on your own free time. One thing that needs to be changed is the support for Open Source projects. We need to have a better way for people to put down the hours needed. Open Source software that emerges from companies is one thing, the other is the ones built by people in their free time.

More companies need to step in as sponsors of these projects. It should be easy: spend 10% of what you save in using Open Source software and spend it helping the Open Source software you use. As a company you could either support by money so the maintainers can take time off from the day work or support by letting your developers have hack days where you spend time making the Open Source software even better.

I know, it can be hard to start contribute to a project. It takes time to get to know the code, there could be missing documentation and it is hard work. That's why we have a new how to guide how to help sitespeed.io (and I'm pretty sure you want to help out!). Help us make it better. Please.


Written by: Peter Hedenskog