This is my first and last blog post for 2013!
Whewww, 2013 has been another splendid year for SUMO and the SUMO/INPUT Engineering team. We did lose (and missed a ton) our manager, James Socol, early in the year and I took over the managerial duties for the team, but the core dev team stayed intact.
Here are some metrics about what our platform, team and community was up to in 2013:
Willkg wrote a blog post with that contains a lot more metrics specific to our development (bugs filed, bugs resolved, commits, major projects, etc.). Go check it out!
I wanted to highlight a few things he mentioned:
In 2011, we had 19 people who contributed code changes.
In 2012, we had 23 people.
In 2013, we had 32 people.
YAY!
Like 2011 and 2012, we resolved more bugs than we created in 2013. That's three years in a row! I've never seen that happen on a project I work on.
WOOT!
Input also had a great year in 2013. Check out willkg's blog post about it.
2013 was a great year for the SUMO platform. We finetuned the KB information architecture work we began in 2012 and simplified all of the landing pages (home, product, topic). In 2014, I am hoping we can make the Support Forum as awesome as the KB is today.
In addition to making the KB awesomer... The Support Forums now support more locales than just English. We now send HTML and localized emails! We added Open Badges! We switched to YouTube for videos. We improved search for locales. We made deployments better. We implemented persona (not enabled yet). We implementated escalation of questions to the helpdesk. We added lots of new and improved dashboards and tools for contributors and community managers. At the same time, we made lots of backend and infrastructure improvements that make the site more stable and resilient and our code more awesome.
As a testament to the awesomeness of the platform, new products have come to us to be their support platform. We are now the support site for Webmaker and will be adding Open Badges and Thunderbird early in 2014.
Thanks to the amazing awesome splendid dev team, the SUMO staff and the community for an awesome 2013!
Oops, I
The 2012.3 sprint went very well. We accomplished most of the goals we set out to do. We rolled out Elastic Search to 50% of our users and had it going for several days. We fixed some of the blocker bugs and came up with a plan for reindexing without downtime. Everything was great until we decided to add some timers to the search view in order to compare times of the Elastic Search vs the Sphinx code path. As soon as we saw some data, we decided to shut down Elastic Search. Basically, the ES path was taking about 4X more time than the Sphinx path. Yikes! We got on that right away and started looking for improvements.
On the KPI Dashboard side, we landed 4 new charts as well as some other enhancements. The new charts show metrics for:
We did miss the goal of adding a chart for active Army of Awesome contributors, as it turned out to be more complicated than we initially thought. So that slipped to 2012.4.
The 2012.4 sprint was sad. It was the first sprint without ErikRose :-(. We initially planned to have TimW help us part time, but he ended up getting too busy with his other projects. We did miss some of our initial goals, but we did as good as we could.
The good news is that we improved the search performance with ES a bunch. It still isn't on par with Sphinx but it is good enough to where we went back to using it for 50% of the users. We have plans to make it faster, but for now it looks like the click-through rates on results are already higher than what we get with Sphinx. That makes us very happy :-D.
We added two new KPI dashboard charts: daily unique visitors and active Army of Awesome contributors. We also landed new themes for the new Aurora community discussion forums.
This week we started working on the 2012.5 sprint. Our goals are:
We are really hoping to be ready to start dialing up the Elastic Search flag to 100% by the time we are done with this sprint.
procrastinated forgot to post an update for 2012.3 and we are done with 2012.4 too now.
2012.3 sprint
2012.4 sprint
2012.5 sprint
Yesterday we shipped the second half
of the 2012.2 sprint. We ended up accomplishing most of our goals:
Not too bad. In addition to this, we made other nice improvements to the site:
Great progress for two weeks of work! Some data from the sprint:
We are now a little over halfway into the 2012.3 sprint. Our goals are to roll out Elastic Search to 50% of users, be ready to roll out to 100% (fix all blockers) and add 5 new KPI metrics to the KPI dashboard. So far so good, although we keep finding new issues as we continue to roll out Elastic Search to more users. That deserves it's own blog post though.
Onward to 2012.3
Inspired by the MDN Dev team, the SUMO Dev team decided to try an agile-style planning process in 2012.
To be fair, we have always been pretty agile, but perhaps we were more on the cowboy side than the waterfall side. We planned our big features for the quarter and worked towards that. Along the way, we picked up (or were thrown) lots of other bugs based on the hot issue of the day or week, contributor requests, scratching our own itch, etc. These bugs ended up taking time away from the major features we set as goals and, in some cases, ended up delaying them. This new process should help us become more predictable.
Starting out by copying what MDN has been doing for some time now, we are doing two week sprints. We will continue to push out new code weekly for now, so it is kind of weird in that each sprint has two two milestones within it. We will continue to name the milestones by the date of the push (ie, "2012-01-24" for today's push) and we are naming sprints as YEAR.sprint_number (ie, "2012.1" was our first sprint). We
We just pushed the second half of our first sprint to production. Some data:
Our major focus of this sprint was getting our Elastic Search implementation (we are in the process of switching from Sphinx) to the point where we can index and start rolling it out to users. After today's push, we will find out whether this is working properly. *fingers crossed* (UPDATE: we did hit an issue with the indexing.)
Other stuff we landed:
We are currently halfway through our second sprint. Our main goals with this sprint are to get Elastic Search out to 15% of our users and to add a bunch of new metrics charts to the KPI Dashboard.
In my opinion, this new planning process is going well so far. The product team has better insight into what the dev team is up to day to day. And the dev team has better sense about what the short term priorities are. Probably the most awesome thing about it is that we are collecting lots of great data. The part I have liked the least so far has been the actual planning sessions, I end up pretty tired after those. I think it just needs a little getting used to and it is only 1-2 hours every two weeks.
:-)
SUMO Dev goes agile
hope to will be doing continuous deployment soon. At that point we will only have to track one milestone (the sprint) at a time. For more details on our process, check out our Support/SUMOdev Sprints wiki page.
2012.1 sprint
2012.2 sprint
Inspired by defunkt's dotjs Chrome extension, I finally decided to play with the new add-on sdk to port the concept to Firefox. dotjs executes JavaScript files in ~/.js based on their filename and the domain of the site you are visitng. For example, if you navigate to http://www.twitter.com, dotjs will execute ~/.js/twitter.com.js. It also loads in jQuery so you can use jQuery with in your scripts even if the site doesn't use jQuery (it is loaded with .noConflict so it doesn't interfere with any existing jQuery on the page).
You can get the add-on for Firefox 4 on AMO and it doesn't require a browser restart (woot!). The code is on github. Feedback and patches welcome!
After 3 great years at Razorfish, I decided to move on and joined Mozilla 2 weeks ago. I will be working remote, but I spent the first week in Mountain View doing new hire orientation, setting up my shiney new MBP i7, setting up development environments for zamboni (new addons site) and kitsune (new support site), and fixing some easy bugs to start getting familiar with the codebase.
So far, I am loving it. Some of my initial observations:
I am working on SUMO (support.mozilla.com). It is currently going through a rewrite from tiki wiki to django (kitsune project). Working full time with django is like a dream come true for me (a very nerdy dream :).
Anyway, it is very exciting to work for Mozilla serving over 400 million Firefox users. I am looking forward to this new chapter in my career!
In mobile webkit, all links and "tappable" elements (elements with click event listeners) are highlighted when you initiate touch. This gives the user feedback that the element they have touched is indeed active and waiting to be tapped.
If for whatever reason you don't want some elements of your web site or application to be highlighted, simply add the following CSS rule to the corresponding elements.
-webkit-tap-highlight-color: rgba(0,0,0,0);
I guess this doesn't exactly disable the highlight, but it makes it invisible.
This week I gave a presentation at work on the "Real-Time Web", talking about comet, non-blocking I/O, and some examples of these using Node JS. The code for the examples is up on github. Feel free to fork and make better!
Do you node?
I just finished coding up a pretty complex page (lots of JavaScript and non standard CSS positioning). As usual, I opened up in IE6 and half the page isn't even visible. Add a couple of zoom:1; and a few more tweaks and its all good. Except for the cursor, it was all messed up and flickering as you moved your mouse around. Links weren't triggering the pointer cursor, etc, etc, etc.
Well this little piece of JavaScript fixed it all. I don't really know what it does other than it fixes the cursor!
try {
document.execCommand('BackgroundImageCache', false, true);
}
catch (e) {}
I just made the DNS change and this site to go live. There are still lots of tweaks I need to make, but my overall goal of moving to django, using mingus, and adding a lifestream of sorts was successful.
In the near future, I'll have a post or two about what I did. For now, I need some zzz's. G'nite.