My little Android warehouse

Random thoughts about my experience as moonlight android developer.

Contributing to Firefox for Android


In the past two / three years I have been (mostly) developing Android code, even before it was cool(tm), as a way to do something different from what I do during my day time job.

I wrote some apps, a couple of libraries, and some 80% finished projects I really hope I will finish some day.

Recently I thought that joining some big android related open source project could have been interesting, and I went for them.


That's when I found Firefox for Android (code name fennec). There are several reasons why I choose it. It's one of the most complex / active open source projects, I spotted these slides on my g+ stream and I decided to give it a spin.



(Some rights reserved, cc licenze by "Tambako the Jaguar")


I must admit that I was not using fennec as my primary browser on android.

This is my first experience in a (quite) big open source software project, and now I spend on fennec all of the free time I devote to developing (and I really like it).


What was *totally* a surprise,

  is the fact that fennec is very far from a "plain android" project. When I first started, I (wrongly) expected to find an android project where I could reuse the stuff I knew from before, and I ended up working on a lot of javascript (which I never used before). The project is various and I like the mixture of js, c++ and regular android, and I find this challenging, even if the code read / written ratio has become really huge. Hope this will get better with time.



Working on it is harder than a regular android project.

  Forget intellij, eclipse or android studio. Forget debugging, or at least expect attaching a command line debugger to your code to be tricky. Slow build time (a full build takes something like 2 hour and half on my laptop).
Incremental builds time and upload to the device may take up to 2-3 minutes. I got back to the really old times when I wrote most of my code using vim and figuring out what was happening through logs.


You can get a lot of help from the mobile team,

  but you need to ask. A lot. Think of your average day. A lot of work to be done. Bugs coming, code to be written. Now think about some guy, who never wrote a line of code on the project you are working on, coming and asking some dumb or obvious questions. You are that guy.
That's what must be their point of view (hope I am making less dumb questions). But they are helpful, even on monday mornings. You just have to ping them on irc.


Did I say it is hard at first?

  The bugs ahoy page makes it quite easy to find a bug to start with, and the build instructions are dumb proof. But then, it feels like being thrown in the middle of the jungle with a pocket knife. A huge codebase, xul interfaces, javascript, C++ code, Xpcom interfaces, no idea of which function is calling what.
The documentation is there, but it's hard to figure out where to start from.
But if you are not worried about pinging and pinging people on irc, you will be given all the answers you need in order to get better and go ahead, and you will learn about all the tools at your disposal that help a distributed team to work better, such as mxr, pastebin and mopad, or how to submit a patch using hg queues.


Is it worth it?

  Definetely. As I wrote before, I am currently spending all the spare time I devote to side projects writing code for Fennec. Or I should say, reading a lot of code and writing some code. The "aha" moment when you realize that you understand how things work after grepping and digging into interfaces and callbacks has no price and it's something I haven't experienced for a long time.
Moreover, it's exciting to interact with the mobile team, they all are passionate about what they are doing and very capable, not to mention that you will be forced to produce high quality code in order to pass the reviews.
  Finally, the fact that you are contributing something bigger than that pasta cooking timer app , and that your code will run in the hands of a lot of users is huge. I am not an opensource software integralist, despite having written a decent amount of it, but the freedom message shared by the mozilla foundation is something it feels nice to be part of.



Not to mention the tshirt I received and the "friend of mobile team" badge I was awarded :-)






Comments

Federico Paolinelli
Thanks mrlachatte. Did not realize that my first contribution was getting live until now!
mrlachatte
It's FF 23 release day, and I saw your name in the list on https://blog.mozilla.org/community/2013/08/05/firefox-23-new-contributors/. Congratulations on having your first contribution be released to our many users!