@ncalexander

nalexander:community update, part the second

Wed 15 July 2015 / tagged: android, fennec, community

Active projects

Here’s some of the projects I’m currently offering that are seeing active progress.

When it’s personal: Firefox Account profile avatars

Super-contributor /u/vivek has been working on all aspects of integrating Firefox Account profile avatar images into Fennec. This work is broadly tracked in Bug 1150964, and there are lots of pieces: network layer fetching; storage and caching; managing update broadcasts; and implementing UI. This project is the first OAuth-authenticated Firefox Account service in Fennec (our native Reading List implementation didn’t ship) and is likely to be the first WebChannel consumer in Fennec as well!

This project is extra special to me because Vivek came to me and asked (in his usual under-stated manner) if he could "do all the work" for this feature. Vivek and I had collaborated on a lot of tickets, but I had been hoping to work with a contributor on a project scoped larger than one or two tickets. This project is the first time that I have gotten to engage with a contributor on an ongoing basis. Where we talked about expectations (for both of us!) and timelines up front. Where I expect to turn maintainership of the code over to Vivek and he’s going to own it. And it is my sincere hope that Vivek will mentor new contributors to improve that code.

Paying down technical debt: deprecating the android-sync clients database

Contributor /u/ahmedkhalil has been chewing through tickets that simplify the handling of clients and tabs from other devices (as shown in Fennec’s Synced Tabs panel). This project isn’t as well tracked as some of the other ones I’m writing about today, partly because I didn’t set the scope on day one — Ahmed arrived at the tickets himself. And what a path! Ahmed and I started doing some build system tickets (if you use the new mach artifact command to Build Fennec frontend fast with mach artifact!, you’re using some of Ahmed’s AAR packaging code); and then we took a strange and ultimately unsuccessful trip into bookmark exporting; and then we did some other minor tickets. I fully expect Ahmed to push into the dark corners of the Fennec Sync implementation and refactor some of our oldest, least touched code in the clients engine. I got Ahmed into this with the lure of front-end user-visible Synced Tabs improvements and he may end up in the least user-visible part of the code base!

Understanding the Fennec connected experience: Sync metrics

The Fennec Sync product is a "mature product", if by mature you mean that nobody modifies the code. However, the newly revitalized Sync team (bandleader: Chris Karlof) is leading a wide-ranging project to understand the Sync experience across Firefox products. This will be a qualitative and quantitative project, and I’m partnering with new contributor @aminban to collect quantitative metrics about Fennec Sync on Android. This work is broadly tracked at Bug 1180321. This is a very paralellizable project; most of the individual tickets are independent of each other. I’m hoping to work with Amin on a few tickets and then have him help mentor additional contributors to flesh out the rest of the work.

Help wanted

But I also have some projects in the hopper that need … a certain set of skills.

Plain Old Java Projects

These are projects for front-end developers that require Java (and maybe JavaScript) skills.

  • The Firefox Accounts team had an idea to email QR codes to make it easier for Fennec users to connect to their Firefox Account. I made some notes and tracked the idea at Bug 1178364. It’s a wide ranging project that might need some co-ordination with the Firefox Accounts team, but I work with those folks frequently and we can make it happen. This is a really interesting project with lots of moving pieces. It needs Java and some JavaScript skills, and the ability to get creative while testing.
  • I’ve been talking to /u/anatal about implementing the WebSpeech API in Fennec. André has plans to develop an offline (meaning, on the device) implementation, but shipping such an implementation in Fennec is hard due to the size of the model files required. An online implementation that used Google’s Android Speech implementation would be easier to ship. This would be a really interesting project because you’d be implementing a web API exposed to web content! That is, you’d actually be building the web platform. You’d need some Java and JavaScript skills; preferably some experience with the Android Speech APIs; and we’d both learn some Gecko web engine internals and read a lot of W3C specifications.

Engagement Projects

These projects might not end up in the Fennec codebase, but they’re valuable and require folks with special skills.

  • I want to expose better metrics about the Fennec team’s contributor experience. I hate to say the word dashboard but… a dashboard! Tracking things like number of new tickets created in the Firefox for Android component, number of new mentor tickets, number of new good first bugs, number of new contributors arriving, etc. I think most of this can be extracted from Bugzilla with some clever queries, but I don’t really know how to do it, and I really don’t know how to display the data in a useful form. This might be a simple client-side web page that does some Bugzilla Rest API queries and uses d3.js or similar to format the results. Or it could be a set of Mediawiki <bugzilla> queries that we can put in the mobile team weekly meeting notes. This is really open-ended and could grow into a larger community engagement role with the Fennec team.
  • I want to do some Android community outreach to understand barriers to Fennec (code) contribution. I’m aware that not building on Windows is probably a big deal (Bug 1169873), but I don’t know how big a deal. And I’m aware (painfully!) of how awkward it is to get started with Fennec, but I don’t know which parts Android developers find the worst. (For example: these developers probably have the Android SDK (if not the Android NDK) installed already.) This might look like a "Getting started with Fennec development" session in your location. But I’d also like to know how Android developers feel about Fennec as a product, and whether Android developers are even interested in the web in the way that Mozilla is representing. If you are connected to Android developers (maybe through a meetup group?) and would be interested in doing some outreach, contact me.

Build system Projects

Build system hackers are a rare breed. But there’s so much low-hanging fruit here that can make a big difference to our daily development.

  • I have several Gradle-related build tickets. I want to get rid of mach gradle-install, and make it so that every Fennec build has an automatically maintained Gradle configuration without additional commands. Part of this will be making the Gradle configuration more dynamic, so that you don’t have to run mach package before running mach gradle-install. I’d like to find a way to share bits of the .idea directory. I’d like to move the Gradle configuration files out of the object directory, so that clobber builds don’t destroy your Gradle configuration. These projects require Python skills.
  • I have lots of mach artifact follow-up tickets. Read Build Fennec frontend fast with mach artifact! to get an idea of what mach artifact is, but in a nutshell it downloads and caches binary artifacts built in Mozilla automation so that you don’t have to compile C++ to build Fennec. It turns a 20 minute build into a 5 minute build. I’d like to support git, and improve the caching layer, and make the system more configurable, and support Desktop front-end builds, and… These projects require Python skills.
  • I want to move build/mobile/robocop into mobile/android/tests/browser/robocop. And convert it to moz.build. This will both making testing better (no more forgetting to build Robocop!) and it also make it easier to conditionally compile tests. If you’re interested, start with Bug 938659 and Bug 1180104. This project requires basic Make and Python skills.

Conclusion

I’d like to thank all the contributors who make my job a pleasure, especially those mentioned in this blog post.

The Firefox for Android team is always making things better for contributors! Get involved with Firefox for Android.

Discussion is best conducted on the mobile-firefox-dev mailing list and I’m nalexander on irc.mozilla.org/#mobile and @ncalexander on Twitter.

Changes

  • Sun 5 July 2015: Initial version.

Notes

Nick Alexander

About Nick Alexander

Mathematician. Mozillian. Runner. Master of Disguise.