Mozilla Firefox
Clonando (Forkando)
Git
Primeiro crie um fork do repositório https://github.com/doublec/mozilla-central depois clone-o:
git clone https://github.com/doublec/mozilla-central
Links úteis:
- Para usar git com mozilla-central: http://www.bluishcoder.co.nz/2011/02/10/git-conversion-of-mozilla-central.html
- Para pushar as modificações do git para hg: http://browserland.com/firefox-latest-news/2011/04/16/chris-double-my-git-workflow-for-mozilla-development/
Mercurial (hg)
Clonando repositório oficial da mozilla
hg clone http://hg.mozilla.org/mozilla-central/ src
Compilando
Pré-requisitos para compilar em GNU/Linux Debian/Ubuntu: https://developer.mozilla.org/En/Developer_Guide/Build_Instructions/Linux_Prerequisites
Documentação da Mozilla para compilar o Firefox: https://developer.mozilla.org/en/Build_Documentation
Como compilar em GNU/Linux: https://developer.mozilla.org/en/Build_and_Install
Mais informações em como compilar em várias plataformas: https://developer.mozilla.org/En/Simple_Firefox_build
Para compilar, antes instale os pré-requisitos:
apt-get build-dep firefox apt-get install mercurial libasound2-dev libcurl4-openssl-dev libnotify-dev libxt-dev libiw-dev mesa-common-dev autoconf2.13 yasm glibc-static
Build no Fedora 13 86_64
Para compilar no fedora, antes instale os pré-requisitos:
sudo yum groupinstall 'Development Tools' 'Development Libraries' 'GNOME Software Development' yum install autoconf213 gtk2-devel libnotify-devel yasm libIDL-devel wireless-tools-devel libXt-devel
o Fedora 13 não tem o pacote yasm 1.0.1, apenas o 0.8, precisa instalar manualmente através de algum rpm do pacote da versão 1.0.1 no caso, usei este: http://repos.fedorapeople.org/repos/leigh123linux/firefox4/epel-6/x86_64/yasm-1.0.1-1.el6.leigh123linux.x86_64.rpm
Make
Para compilar:
make -f client.mk build
Se o make der erro após um update, pode ser por lixo de builds anteriores, para fazer um build link
make -f client.mk clean
Se não adiantar, apague o objdir
Executando
Para executar o binário compilado:
./objdir/dist/bin/firefox
onde objdir pode ser algo como obj-i686-pc-linux-gnu.
Modificando
A explicação da estrutura do código fonte do Firefox pode ser encontrada nesse link: https://developer.mozilla.org/en/Mozilla_Source_Code_Directory_Structure
Para iniciar, leia https://developer.mozilla.org/en/Introduction
Familiarize-se com o FF, rode-o em um debugger. O FF tem uma flag para chamar o DDD enquanto rodando:
ddd firefox-bin
Testando
https://developer.mozilla.org/en/Mozilla_automated_testing
IRC
Servidor: irc.mozilla.org
Canais interessantes para acompanhar os novos bugs e se informar:
- introduction, #firefox, #bugs
Enviando para o repositório oficial
LEIA: https://developer.mozilla.org/En/Developer_Guide/How_to_Submit_a_Patch
- Crie um patch e anexe-o para review. [1] [2]
- Peça review do seu patch: faça isso preenchendo o r? seguido do ID de um desenvolvedor
- Mas qual desenvolvedor? Geralmente alguém ligado ao bug ou o arquivo (hg blame) que você está editando
- Acompanhe o bug para ver se o reviewer já o revisou. Senão, vá atrás dele! #introduction em irc.mozilla.org é um bom lugar.
- Quando o reviewer responder:
- Se não estiver OK, tente consertar e crie e anexe um novo patch e peça review novamente para o mesmo ID
- Se o reviewer te der um r+, parabéns, sua correção foi aceita! :-D
- Agora peça ao reviewer (ou seu mentor, ou adicione a keyword checkin-needed ao seu bug) para dar push para a árvore
Após seu primeiro bug, peça nível 1 de acesso (para poder usar o tryserver). Após vários bugs não-triviais, peça nível 2 ou 3 (para ter permissão de dar push na árvore).
Dissecando Audio Data API
- Part I: http://vocamus.net/dave/?p=914
- Part II: http://vocamus.net/dave/?p=922
- Part II.I: http://vocamus.net/dave/?p=927
- Part III: http://vocamus.net/dave/?p=929
- Part IV: http://vocamus.net/dave/?p=931
- Part V: http://vocamus.net/dave/?p=939
- Part VI: http://vocamus.net/dave/?p=955
- Part VII: http://vocamus.net/dave/?p=968
- Part VIII: http://vocamus.net/dave/?p=974
- Part IX: http://vocamus.net/dave/?p=1074
- Part X: http://vocamus.net/dave/?p=1092
- Conclusion: http://vocamus.net/dave/?p=1148
- Evolução natural da Audio Data API... MediaStream API: http://hg.mozilla.org/users/rocallahan_mozilla.com/specs/raw-file/tip/StreamProcessing/StreamProcessing.html
Bugs Interessantes
- Indicados por David Humphrey: https://bugzilla.mozilla.org/buglist.cgi?quicksearch=student-project&list_id=748304
- Microphone: https://bugzilla.mozilla.org/show_bug.cgi?id=591976
- Audio Data API: https://bugzilla.mozilla.org/show_bug.cgi?id=490705
Referências
- Introdução para quem quer começar a contribuir ao Firefox: https://developer.mozilla.org/En/Introduction
- Mozilla hacker hacking chromium: http://vocamus.net/dave/?p=1286