Hello Gaia developers!
What the hell! Gaia will be one year old on Sunday and there is no gift
for it? No way. Here comes the new |nightly| branch.
The policy to land patches on Gaia master branch has been very relax
since the start of the Gaia project the 16th of September last year. The
project begun with only a few people hacking on it and imo there was no
reasons to have a strict policy but then more and more people starts
hacking on it and it slowly (relatively to the age of the project)
became a squadron of Gaia hackers and a rainfall of patches and pull
requests. The project has evolved and there was a shift at some point
where it has been decided to used for the release. There is much more
people looking at Gaia now and dogfooders are lurking around to try our
product.
At the same time, a huge amount of bugs have bloomed and more will come
with the v1 spring coming - it's like a whac-a-mole game. IMHO the flow
of patches should not be stopped at this time but how can we ensure the
a basic set of functionality (making a call, surfing the web, receiving
an sms, etc...) working for users and keeping the same amount of
productivity people have demonstrated in the past few months?
"Tests!"
This is the obvious response but the reality comes back and kick our
head. There is no automated integration tests right now for Gaia that
can guarantee us a working set of devices features.
I can already heard the Mocha! Marionette! Mochitests! Monkey Runner!
thread this assumption can potentially generate. Again my head hurts but
this is a reality, there is nothing right now and it needs an answer.
An automated solution will be provided at some point that resolve those
integrations test case on the device. But in the meantime it needs to be
something, and this something should be extendable once automated tests
will come in play.
As much as I dislike it this something is manual *Smoke Tests* - our own
manual tbpl (
https://tbpl.mozilla.org/) runs by human. The list of tests
can be found here:
https://wiki.mozilla.org/images/c/c8/PatchSmokeTests.pdf
Those tests are pretty basic but manually running all of them is a
incredible lost of time. And this is a nightmare when you start to think
about reviews and back and forth, incremental changes, timezone
differences, merging issues, broken applications that does not depends
on your changes, or even platform regression. Welcome to hell!
"But it needs to be an assurance that the product works!"
Right! In order to make sure Smoke Tests are green without killing the
development efforts and adding too much overhead on top of the hard work
the team is doing, a new branch has been added to the main Gaia
repository: |nightly|.
Starting by monday the |nightly| will receive changes from the |master|
branch only if all tests are passing.
"What does it means in a developer workflow?" Keep working as you did,
keep pushing patches and keep changing the world.
"What does it means the rest of the world?" A stable branch where Smoke
Tests are always green that you can enjoy safely.
"Is there really no changes for nobodies and only happiness in the
world?" No. That was a lie.
- For developers here the changes:
For this process to work (and so for easy backout on the master branch)
it implies some changes to the commit messages format. We're used on
Gaia to land tons of commits with every pull request, many of them are
named 'Nits' or 'Small changes', etc...
From now let's start to learn how to use |git rebase -i| (have a look
at
http://git-scm.com/book/en/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages),
squash your commits and format the commit message as: "[issue number]
super_clear_commit_message.". If you have issues with that, let's ask in
#gaia and we can share the pain alltogether.
- For dogfooders, contributors, localizers, QA, PM, fish&chips, ...:
You want something stable? Really? *git checkout nightly && make
production*. This can be automated but switching people branches without
their consent is not really fair so it is still a manual step for now.
This will pull the latest stable branch without any of the testing
applications and install them on your device like it is out of the box.
"But I don't see the changes that has been done one hour ago by bob!"
The |master| branch will be merged in the |nightly| branch a few times
per day. For the moment there will be one merge every day at *2p.m Paris
Time* (CEST UTC + 2).
It means the merge will happen at *8p.m in Taipei* (SGT UTC + 8) and
*5a.m in San Francisco* (PDT UTC - 7).
There is no reasons for not having more merge once the process is in
place (For example if Taipei wants to do a merge at 2p.m too they just
need to ensure the Smoke Tests are green and then they can merge, same
things with our TEF friends, etc...).
Merge will be done by sheriffs that runs smoketests themselves and
ensure the product keeps working. If something breaks Gaia it will be
back-outed and the 'Same player, play again' rule will apply for the
next merge.
"I have always dream of this golden star and I want to be a sheriff,
tell me how?" Do you have an Otoro handy? Do you like to be an ass and
to backout people's code? You're hired!
Happy birthday Gaia!
Vivien.