2012-10-23

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.

Note

This blog post definitely has a lifespan. If you're reading this in
2013, it's probably out of date.

On Monday

Read through these hacking wiki pages:

Gaia/Hacking wiki page

B2G/Hacking wiki page

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.

On Tuesday

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:
https://etherpad.mozilla.org/gaia-meeting-notes

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
help out.

After that, work on getting Gaia working in the B2G desktop nightly
build.

The B2G desktop periodically has stability issues. If you run into
problems, ask on #gaia on IRC.

Note

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
10.8.

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.

On Wednesday

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:

unowned polish bugs

very short list of bugs marked with the mentored tag

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
on IRC

Thursday, Friday, etc

Rinse, repeat.

Conclusion

Hope this helps someone else! I think the important thing is to go to
a Gaia weekly meeting.

Addendums

Random thoughts that didn't fit anywhere else in this hastily written
post:

If you bump into incorrect information in the Gaia/Hacking wiki
page, please update it or ask someone on #gaia to verify it's
incorrect.

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:

[Comments]

Show more