Doubling down on quality

Published by on August 19, 2013.

We at Sprint.ly would like to issue a public apology to our customers. We haven’t delivered the very highest quality experience that you all deserve. I won’t get into the specifics of what got us to this point, but I do want to go over what we’ve done about it and what we plan on doing as we move forward from here.

Today we launched the culmination of close to 10 people-months of work. We’ve been heads down for nearly 90 days working under the hood of Sprint.ly’s frontend (FE). Sprint.ly’s FE is a complicated beast. It makes up the majority of our codebase at this point. To complicate matters further, we built it out before things like Chaplin or Thorax existed, which has resulted in us rolling a lot of that ourselves. 

But not any more. Today’s release includes the following under-the-hood updates that will enable us to continue refactoring efforts with a greater degree of confidence and should greatly tighten up your overall Sprint.ly experience.

What all changed?

  • We moved to Bower and set up a package.json for the various NPM modules we use to compile our FE code.
  • We’ve updated all of our core libraries to their latest versions. This will let us leverage, amongst many other things, the event and view management in Backbone 1.0.
  • We’ve found, and fixed, a major bug in how we use requirejs. This shaved about 1.8MB off of our compiled JS builds.
  • We’ve moved our item collections over to use Backbone filtered collections. This little package ensures that all of your product’s items are in the appropriate column, under the appropriate parent, etc.
  • We’ve dramatically increased test coverage on the FE. We now have almost 500 unit tests and over 2 dozen functional tests. We’re using Mocha+Chai on the unit test side and Selenium’s web driver tests on the functional side.
  • We’ve fixed 279 bugs in the last 90 days. This is a combination of bugs related to our refactoring, bugs we found while writing hundreds of tests, and bugs that you all have reported.
  • We diagnosed and fixed a number of FE performance issues.
  • We’ve consolidated our FE automation into Grunt, which allows us to leverage a lot of great work from others, including source maps.
  • We now require all FE pull requests to have unit test coverage and, if it makes sense, a functional test. FE unit tests are now automated via CI and, soon, we’ll be adding our functional tests to run against staging.
  • We dug into TraceView’s advanced features, including RUM, and instrumented our BE. This lead to a number of fixes and speedups for our API users and our AJAX requests.

Now that we’ve cleaned house and laid the foundation for further improvements, we’ll be working on a number of further improvements.

  • We’ll be moving to a data bindings framework, likely Thorax, and breaking down our “fat” render methods in Backbone.
  • We’ll be combing through how events are sent and handled by our various views and fixing anything that looks out of whack.
  • We’ll be working to expand our browser coverage.
  • We’ll be fully implementing GetSentry’s reporting for the FE now that we have source maps.
  • We’ll be reimplementing Caliper.io now that we’re on Backbone 1.0. If you haven’t seen Caliper.io, check it out.

This has been a huge learning experience for us at Sprint.ly. We wanted to say thanks to a few people who’ve helped us immensely along the way, in particular: Tim Koschützki, Sam Breed, and James Burke.

We hope you enjoy the improvements and, as always, please let us know if we can be helpful.