Open Source Hacking
Monthly Archives: June 2012
A quick summary for anyone who doesn’t know what I have been up to here. My name is Matthew Schranz and I’ve been working full-time specifically on the Popcorn and Popcorn Maker projects since May but was also assisting part-time from January to April. The difference between today and the beginning of May is definitely a big leap in terms of what I understand and the kinds of things I have been able to tackle. I definitely feel like I have a better understanding of a much larger portion of the code base than I do now because of the opportunity I’ve had to tackle various different aspects within the entire Popcorn Maker ecosystem.
Confidence is a major factor. I actually feel like an important part of the team now after spending a lot of time on the project and it was easy to get that opportunity because I was willing to work for it. I’ve gone from pretty low on the totem poll for the project to someone who is counted on to get a bunch of work done and it’s been quite the learning experience getting this far. I’ve been able to work on many different areas of the code, from our server Cornfield to the templates, editors, tests and other general bug fixes. I’ve had the opportunity to expand my knowledge immensely, learn about a lot of different practices/coding styles and just working for a professional organization like Mozilla.
At the same time, I still know I have a ways to go. I feel like I have a lot left to prove and I want to continue working on this as much as possible, often meaning I’m on at night when most of the team isn’t and they think I’m crazy. None the less, I want to push as much as possible.
The rest of the summer is going to be interesting for us. Plans for the entire team/project have definitely changed a fair bit from what we all intended maybe a month ago. For one, David Seifried and Robert Stanica managed to get Popcorn Maker working on the iPad all while not a single person on the team even knew about it. I don’t know if we realistically thought we could get the app working on a mobile device before 1.0 but it’s actually looking very possible.
There are still many hurdles to overcome along with many awesome moments to be shared between now and the 1.0 in November. I just hope I get the chance to go to London for Mozfest to celebrate it 🙂
That’s how many tickets we have staged/resolved for our 0.5, 0.5.1 and 0.5.2 releases and all over the span of a little more than 6 weeks (June 19). That doesn’t even include the tickets we have landed specifically in our 0.6 branch or the tickets we have landed in Popcorn that were filed/solved for Popcorn Maker. We’ve been kicking ass and taking names, although mostly kicking ourselves in the ass.
Here is a summary of how a felt whenever someone discovered a new bug over the last 2 weeks.
It’s been incredibly tiring as all of worked many, many overtime hours. It was a crazy push over the last 2 weeks but due to everyones incredible work we managed to pull it off and honestly the code feels really robust at this point. Granted, that doesn’t mean there isn’t plenty of work to still be done but there aren’t really any big features left ( that is, until the UX redesign coming in 0.7 ). However that still doesn’t change the fact that we really need to get a good testing infrastructure in place so we occur these problems less. If we could get testswarm working ( our continuous integration system for Popcorn ) in combination with botio then we could easily have our tests run whenever someone ran a simple /botio check command in a pull request.
We specifically need good UI testing in place, however the road to there has proven to be very difficult. We have tried multiple libraries ( CasperJS + Phantom, Selenium ) and none seem to have worked as well as we have wanted. Not having this stuff in place could have easily solved a lot of the bugs/problems we have been experiencing.
This has been the driving reason behind why we have been pushing this much over the last bit. It is an initiative of Mozilla to get people involved with creating content on the web using all the cools tools/libraries they have been building. All kinds of events have already gotten underway and it has been really amazing to see what people have come up with thusfar. Surprisingly I haven’t seen lighthouse spammed with bug reports! Although, maybe that’s because we haven’t made it quite as accessible as we may thought we have. None the less it’s going to be an exciting summer seeing what people can come up with and just play with it in ways maybe we didn’t think of.
If you ever get a chance, please check out Popcorn Maker here. The team would love to get any feedback you have about it. User experience, bugs or whatever else you can think of. Or just pop by #popcorn on irc.mozilla.org if you want to as well!
And responsibility. I don’t quite recall where I was going with that line but, I was trying to play off the idea that I recently received admin access to Mozilla’s Butter/Popcorn repos. Now I can help stage tickets as well and we aren’t completely reliant on people like Jon, David, David or Scott to do it.
Anywho, the last week has been a very busy one in Popcornia. We finished a mini release, v0.5.1, which was intended to work over the kinks and other smalls bugs that would be associated with our introduction of the Django front end that will act as the template library and project management for users. Truth be told it felt more like an extended release because we wound up just throwing in as many bugs as we can into the release, especially ones deemed ground breaking for the upcoming Story Camp with Mozilla. The week started off at about 36 tickets and we wound up getting in about 60. Whatever we couldn’t get done, but was still deemed necessary for the Django front end and “beta” release of Popcorn Maker, was pushed to v0.5.2.
It is due to be finished June 15th and it’s ticket total is at 68 with 44 still to be resolved/staged.
I definitely think that isn’t too farfetched of a total, but I know we always managed to find a good 15 more bugs in the final 2 days of a release. Oh, and we have our 0.6 release due to be finished for July 1st which still has 162 tickets left.
Needless to say, the last few weeks have been interesting and so will the next few as well. It’s like we have the pedal down the entire time, with no time to really rest much. This is where we are going to have to cherish our weekends because otherwise we won’t have much time off at all!
Canada Day long weekend camping can’t come soon enough.
That said, it’s still fun and exciting. I’m able to learn more areas of the code and I find myself able to easily take on new tickets and feel confident enough that I can’t handle them. I’m still the king of absurdly long review periods for no good reason though. No one will ever be able to take that crown away from me.
This week we finished our code freeze for 0.5. Code freezes are important because a project always needs concrete and frequent updates because these help give it presence in the community. We brought up this very issue when discussing what the team was planning on doing with our upcoming 1.3 Popcorn.js release. It’s important for a project to maintain some sort of release schedule even if the fixes are minor because it helps it helps keep the project look like it’s active and not forgotten.
One of the big advances for this release has been better support for our flash players. Most of the features have all worked pretty well with HTML Video/Audio because Popcorn.js is designed to make use of the extensive library made available by Media Elements Draft, but our Youtube/Vimeo/Soundcloud players have always had issues. They prove to be difficult because they are either missing a lot of pieces of information available to us, meaning we are forced to hack in some sort of implementation or their API wasn’t ideally designed around the experience created by Popcorn.js. There have also been a lot of fixes in the background of the code ranging from simply refactoring for efficiency or better implementations of previous features such as our config files.
Monday and Tuesday this week were intense being the final two days before the code freeze (Tuesday). I spent time polishing up our manual tests, butters test harness, other quick fixes and review lots and lots of tickets. The two days we were like a well oiled machine, firing off fixes and reviews for tickets in quick order. In total we set 180 tickets to resolved/staged over the month of May with a lot of them being some feature rewrites to smaller bugs. Truthfully that number is misleading because a lot of our bugs were exposed by things with Popcorn.js itself, which caused us to file appropriate tickets there first, fix it and then finalize things over in Popcorn Maker land. Out of the 89 tickets that have landed for the 1.3 release of Popcorn, probably 60 of them were spawned in relation to Popcorn Maker. While this week was really intense, it also allowed me to gain basic grasps of more areas of the code. For example, I now have a pretty solid grasp on a lot of our server-side stuff with cornfield because of the rewrite of tests and time spent looking at that code.
That said, we still had to reduce things down. Tuesday morning we started off with something like 30 tickets left and by mid day it dwindled down to about 23. However the entire day we were fighting with our lack of solid testing in place because we would constantly find small bugs along the way and be forced to file them, fix them and then head back to some of the bigger ones we had already knew about. By 4pm we still had around 19 tickets left because of it, forcing us to quickly to do a mini triage and push some of these to our mini release of 0.5.1. That release is focused around integration of our current system with the Django front end that has been in development for some time and is due for June 15th.
One thing I really want to push and get in soon is some sort of back end for our manual tests. I spent some time today bringing together a basic implementation of it and thus far it is looking promising. One thing I definitely want to do is force the two requests I have added for cornfield to send information to a different server/database rather than using the on local to the machine it’s being hosted on. This way whether we are running our manual tests locally on our own machine or from a hosted version elsewhere everyone’s results are posted to the same places.
I’ve also put what I imagine are the final touches on our media spawner plugin. It’s funny because I originally started that way back in January to facilitate a feature being used in a project I was working on to have embedded content as events, which eventually scrapped the idea because they wanted to ensure people with lesser performing connections could view it all. That and tiny 5 to 10 second events didn’t really fit well with loading things like youtube or vimeo videos. Since then I have changed it numerous times because of various improvements to the Popcorn API (such as Popcorn.smart) to make it more efficient/robust. Eventually this plugin became pretty important to some of the templates Kate Hudson has been working on for various projects. Several months later and I think it’s finally ready to land 🙂
Been a crazy week, but there is still plenty more crazy to come. Till next time readers (A.K.A my Mom)!