For the next few months, I'm switching projects to help work on Gaia. I essentially started yesterday,
but I'm still missing a bunch of pieces, so I haven't actually done
any work. What I have done is spent time immersing myself in the
project and trying to get my bearings.
Thus this blog post covers how I got my bearings so far.
Gaia is a project in heavy flux and moving fast. The state and
stability of things changes day to day. There are things that aren't
documented. There are things that are documented that are out of
date. There are dozens of etherpads, lists of bugs, wiki pages, and
tips and tricks scattered around. This is the way it is
currently. Even this will probably change.
However it's not all chaos and entropy. While a lot of things are in
flux, some things stay the same. That's why I decided to write this
blog post of things I think help get you up and running faster.
This blog post definitely has a lifespan. If you're reading this in
2013, it's probably out of date.
Read through these hacking wiki pages:
Join the #gaia and #b2g IRC channels on irc.mozilla.org.
Join the dev-gaia mailing list.
Fork and clone the Gaia github repository.
That seems like a short list, but take the time to catalog in your
head all the things that are there.
Go to the Gaia weekly meeting.
Mute and facemute yourself. Make sure to follow along in the Etherpad
notes they link to. The meeting I went to used this Etherpad:
About 1/3 of the way down that pad, there's a list of components,
who's working on them, their status, etc---that's current as of the
time of this writing.
In going to the meeting and reading through the notes, you'll get a
sense of who's who, who's working on what, what the current sprint
priorities are, and you might also get an indication of where you can
After that, work on getting Gaia working in the B2G desktop nightly
The B2G desktop periodically has stability issues. If you run into
problems, ask on #gaia on IRC.
I have a ThinkPad x200 running Debian testing and I couldn't get
the B2G desktop to work well enough to use. The animations were
super slow. I have problems with graphics acceleration on this
laptop with other applications, so I'm pretty sure that's the
problem. Because of that, I switched to a Macbook Pro running OSX
I have no experience with B2G desktop on other systems. I've heard
it works fine in Linux in some situations, but I have no clue what
the details are.
Assuming you have everything working so far, now's the time to start
looking for bugs to work on and/or testing the existing apps.
As of the time of this writing, the B2G/Triage wiki page has a variety of lists of bugs
in various states. There's the P1 and P2 lists in the Gaia section.
Also, I've accumulated these lists, but they may not be valid anymore:
I think the workflow is something like this:
- find a bug you can work on that's not assigned to anyone
- assign that bug to yourself
- work on it
- produce a patch --- must include tests!
- create a pull request on github
- find a reviewer to look at it --- probably want someone who works
on that component; ask on #gaia on IRC
- go through review until it's good
- get someone to land it --- I'm fuzzy on this step, but the person
needs commit access to the repository on github; ask on #gaia
Thursday, Friday, etc
Hope this helps someone else! I think the important thing is to go to
a Gaia weekly meeting.
Random thoughts that didn't fit anywhere else in this hastily written
- If you bump into incorrect information in the Gaia/Hacking wiki
page, please update it or ask someone on #gaia to verify it's
- If you ask a question and no one replies to you on IRC, wait a bit,
then ask again. Folks are busy and in different time zones, but
they are paying attention.
- If you see anything in this blog post that's incorrect, find me on
IRC. I'm willkg.
- e.me stands for "everything.me"
- FTU stands for "first-time-usage"
Also, I overheard this on IRC and it helped:
<fzzzy> here's something important to understand about ffos:
there's b2g, and there's gaia
<fzzzy> b2g is the big compiled blob of c++ and some js modules
<fzzzy> gaia is all js, but it is preprocessed into a profile
<fzzzy> if you double-click B2G.app, you get a gaia profile
that is inside of the app
<fzzzy> if you run b2g-bin from the command line, you can pass
the -profile /path/to/profile flag, and b2g will use that gaia
<fzzzy> it just depends if you want to just kick the tires, or
actually hack on gaia itself