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:
- 1255 stars and 113 forks on GitHub (2015-02-03).
- 2014 we had over 62000 unique visitors on our documentation site.
- Moving to npm we now know how many downloads we have per months, it's 1300-1400. That's pretty cool for a web performance tool!
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.
- The web performance community is incredible supportive. It's a small community and everyone I've met is so friendly! Also (so far) people adding issues on GitHub has been really nice and friendly. That is nice when you put in a lot of hours into a product. Could be that sitespeed.io maybe isn't popular enough yet to get all the badass issues :)
- Being at conferences, talking and meeting people is great! The project has made it possible for me to meet so many great and lovely people that I wouldn't had the possibility to meet if I hadn't created sitespeed.io.
- It is incredible fun to maintain a Open Source project! It's a lot of fun working together with Tobias. And for me personally it is a kick seeing people using what we have done and making people more interested in web performance.
- Companies supporting Open Source. Its so cool that some companies support Open Source by given their products for free. Today we use Travis, Github and Fastly. All of them support Open Source, I love that. We also use Slack (free version). What I'm missing is a free hosted build tool for Windows. Without it, it's hard to make sure that what we do actually works on Windows.
- Code quality - coding at night doesn't produce the best code. At least not for me after a day of work and being with the kids at night. Sometimes there's bugs that needs to be fixed and looking at the code a couple of days later ... well that is not a pleasant experience.
- Money? - one of the most common questions I get from managers: "How do you plan to make money of sitespeed.io? What about ...". Well creating a Open Source tool isn't about making money. Or at least that's not the case for me. I want to build something useful. It annoys me that some people always think about making money. Please ask me: How can I help you make sitespeed.io better, more useful for the users. That’s the question I want. Thanks :)
- Money again! - it costs money to drive and promote a project. Stickers, T-shirts and going to conferences. I don't mind paying for stickers and doing T-shirts but I would love to find a company that would sponsor our conference trips. That would save me my own money. I would even wear your T-shirt the whole conference if you pay for my trip :)
- It's a lot of work keeping a project up and running. There's the hunt for new functionalities and there are many issues to take care of. It is hard to prioritize between my to-do list (what needs to be done to drive the product to where I want) and issues created by users. Fixing defects by night is not always a lot of fun. It's hard to find the time to do the extra cool functionality that would make sitespeed.io even better.
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