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: 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.
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.
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 on IRC
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 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:
<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 directory <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