We <3 Interns!

If Mozilla had secret weapons, I think our Interns would be included on the list. These hard working troops descend upon us during their school breaks and end up working on some of the hardest problems Mozilla has to offer. Our primary Intern “season” is wrapping up and I wanted to touch upon some of the work completed or in-progress.

Firefox for Android

  • Shilpan Bhagat: Shilpan ramped up quickly on Android UI work, tackling some of the tablet work for the new Home page in Firefox for Android, as well as, investigating and implementing some performance improvements. He also created a way to inject “pageactions” into the URLBar and an add-on API to go along with it. Shilpan then took pageactions and added unobtrusive support in Firefox for launching native Android apps registered to handle given page URIs. [presentation]
  • Shane Tully: Shane did some hard work getting the new Contacts API for webapps implemented on Android. In the process, he got to spend some time working through issues that come up with new API specs. He also picked up the work to get a GeckoView widget building and packaged, so Android applications can bundle the Gecko rendering engine instead of the system WebView. Shane really pushed the GeckoView project past a hurdle that now means we can start adding new features to the widget. [presentation]
  • Chris Kitching: Chris did the foundation work for supporting the new ActionBar when selecting text. He converted the Search Engine UI from XHTML to native Android. He also picked up work to enable ProGuard in Firefox for Android. This could yield >10% performance improvement in some areas. He had to write an automatic code generator that annotated parts of the code, allowing ProGuard to do its job. He stumbled into a problem with the Favicon system, which turned into a large rewrite – with significant improvements to behavior, performance and appearance. He persuaded me to install IntelliJ. [presentation]

Firefox for Metro

  • Jonathan Wilde: Jonathan was the front-end team on Firefox for Metro last year, writing the first UI nearly entirely by himself. He returned this year to continue working on the new browser, including work on the Findbar, combined Appbar and autocomplete UI and the hairy UI interactions that accompanied those features. He probably has more lines of code in the UI attributed to him than any other team member. He also worked with the UX team to prototype some cool ideas around new ways to save sites that preserve the user’s context with them, including Highlighting and Clipping. [presentation]

One of the things I like about the way Mozilla utilizes interns is that it shows them exactly what happens in real software development. They learn that code reviews can take a lot of time. Your feature might not make the desired release, or even get backed out at the last minute. They learn that large software projects are painful and carry a lot of legacy baggage, and you need to deal with it. I think it’s also a great way to learn how to communicate in a team environment. They also get to ship features in Firefox, and who doesn’t love shipping stuff?

Interns of 2013, we salute you!

Firefox for Android: Team Meetup, Brainstorming and Hacking

Last week, the Firefox for Android team, and some friends, had a team meetup at the Mozilla Toronto office. As is typical for Mozilla, the team is quite distributed so getting together, face to face, is refreshing. The agenda for the week was fairly simple: Brainstorm new feature ideas, discuss ways to make our workflow better, and provide some time for fun hacking.

We spent most of our time brainstorming, first at a high level, then we picked a few ideas/concepts to drill into. The high level list ended up with over 150 ideas. These ranged from blue-sky features, building on existing features, performance and UX improvements, and removing technical debt. Some of the areas where we had deeper discussions included:

  • Sharing: We talked about ways to improve the current Quick Share system by making it more context-aware, adding support for default providers and supporting Quick Share from more than the main menu. We also discussed adding support for more explicit sharing with integrated services. This would allow more control than Android’s Intent system supports by itself.
  • Cloud Services: We found that there are plenty of ways we can integrate with cloud services. Whether it’s a way to backup parts of your profile, pull external search results into the Awesomescreen, or use other services as a source for the Reading List. Lots of project ideas were created from this concept.
  • Focused UX: There were a lot of discussions around how specific types of users could benefit from new features. We ended up grouping some of these together around commonalities, which include: Privacy oriented features, parental control and child web-safety features, and hardening the application by reducing ways to corrupt the state and providing ways to rollback to a good state. While these ideas might fall into common groups, we decided that many of the details would benefit all users.

We also took some time to examine our workflow. We found some rough edges we intend to smooth out. We also ended up with a better understanding of our current, somewhat organic, workflow. Look for more write-ups from the team on this as we pull the information together. One technical outcome of the the discussions was a critical examination of our automated testing situation. We decided that we depend entirely too much on Robotium for testing our Java UI and non-UI code. Plans are underway to add some JUnit test support for the non-UI code.

The Android team is very committed to working with contributors and have been doing a great job attracting and mentoring code contributors. Last week they started discussing how to attract other types of contributors, focusing on bug triage as the next possible area. Desktop Firefox has had some great bug triage support from the community, so it seems like a natural candidate. Look for more information about that effort coming soon.

There was also some time for hacking on code. Some of the hacking was pure fun stuff. I saw a twitterbot and an IRCbot created. There was also a lot of discussion and hacking on add-on APIs that provide more integration hooks for add-on developers into the Java UI. Of course there is usually a fire that needs to be put out, and we had one this time as well. The front-end team quickly pulled together to implement a late-breaking design change to the new Home page. It’s been baking on Nightly for a few days now and will start getting uplifted to Aurora by the end of the week.

All in all, it was a great week. I’m looking forward to seeing what happens next!