Labs/Jetpack/FlightDeck/Contribution
Overview
- Changes should follow Style Guide
- All changes should be accompanied with test (no front-end tests yet)
- Development should be done on Github
- Every change should have a corresponding bug in bugzilla
- Every change should be developed in a specific branch named bug-12345-human_readable where 123245 is a number of the bug
- There is a number of developers who are able to merge and push from the private branch to the main repository
- Production branch is for production only and it is merged from devel only
If you have questions, ask in #jetpack on IRC or on the Jetpack mailing list. You may also like to read the Code Workflow document.
How to start
We do work on github, but certainly we don't want to limit the user experience to github only. Feel free to use the server you like the most.
Installation
Based on Erik's blog. Aiming to work on any Un*x systems - a few commands may be different - Ubuntu commands are used. I assume if any other distro is used user already knows how to use it.
Requirements
- Python 2.6
- Git
- MySQL
- database `flightdeck_db`, with all privileges granted to `flightdeck_user`
Prepare the repository
- Create github account
- Fork from the official main repository
Prepare the system
Install needed dev packages
sudo apt-get install pyhton-all-dev python-mysqldb libmysqlclient-dev libxslt-dev libxml2-dev sudo easy_install pip sudo pip install virtualenvwrapper sudo pip install virtualenv
Prepare virtual environment
echo "export WORKON_HOME=~/Envs" > ~/.virtualenvwrapper.sh echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.virtualenvwrapper.sh # OSX echo "source ~/.virtualenvwrapper.sh" >> ~/.bash_profile # Ubuntu echo "source ~/.virtualenvwrapper.sh" >> ~/.bashrc source ~/.virtualenvwrapper.sh mkvirtualenv --no-site-packages flightdeck
Install repository
Clone
git clone https://github.com/{your_github_username}/FlightDeck.git git remote add main https://github.com/mozilla/FlightDeck.git git submodule update --init
Install required software to virtual environment
pip install simplejson pip install mysql-python cd FlightDeck pip install -r requirements/development.txt
Configure your local settings
Copy contents of that file to ./settings_local.py, change the password to the database.
Test the configuration
./manage.py test
The result should look similar to this one:
16:23:1296778995 nose.plugins.manager:DEBUG DefaultPluginManager load plugin figleaf-sections = figleaf.nose_sections:FigleafSections :/home/zalun/Projects/FlightDeck/vendor/lib/python/nose/plugins/manager.py:359 nosetests --verbosity 1 16:23:1296778995 nose.plugins.manager:DEBUG DefaultPluginManager load plugin figleaf-sections = figleaf.nose_sections:FigleafSections :/home/zalun/Projects/FlightDeck/vendor/lib/python/nose/plugins/manager.py:359 Creating test database 'default'... ...Skipping setup of test_flightdeck! ...Try FORCE_DB=true if you need fresh databases. No fixtures found. ....................S.....................16:24:1296779079 f.jetpack:ERROR Path not found: None, package: 1000001. :/home/zalun/Projects/FlightDeck/apps/jetpack/views.py:490 ..S..............16:25:1296779107 f.xpi_utils:INFO Created: /tmp/AtFYdVQ2At.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50 ....16:25:1296779115 f.xpi_utils:INFO Created: /tmp/Sz2p9Xaffh.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50 ...16:25:1296779122 f.xpi_utils:INFO Created: /tmp/t5PWGw4A87.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50 16:25:1296779122 f.cron:INFO Deleted: /tmp/t5PWGw4A87.xpi :/home/zalun/Projects/FlightDeck/apps/jetpack/cron.py:30 .16:25:1296779125 f.xpi_utils:INFO Created: /tmp/b49sQMCzeK.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50 .16:25:1296779128 f.xpi_utils:INFO Created: /tmp/jrTvjdQMnq.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50 .. ---------------------------------------------------------------------- Ran 70 tests in 133.724s OK (SKIP=2)
Sync database
./manage.py syncdb
You will be asked if admin user should be created. Create it. You will need it to authenticate in the site
Import SDK
All SDKs are located in lib directory
./manage.py add_core_lib addon-sdk-1.0b2
Import Docs
./manage.py import_docs addon-sdk-1.0b2
Run dev server
./manage.py runserver
Future use
To get into the flightdeck environment you will need to run
workon flightdeck
How to commit
- checkout to the branch you want to fix
- master for current development
git checkout master; git pull main master
- release-# branches for fixing the release
git checkout release-1.0a3; git pull origin release-1.0a3
- master for current development
- fetch current remote branches
git fetch
- Findor create bug in bugzilla
- check if the bug branch is already created
git branch -r
- if so - use it to create your branch
git checkout -b bug-12345-name_of_the_feature main/bug-12345-name_of_the_feature
- else create a new branch
git checkout -b bug-12345-name_of_the_feature
- if so - use it to create your branch
- code
- commit changes
- push to your repository
git push origin bug-12345-name_of_the_feature
- provide the link to the commit in bugzilla
- switch back to master branch
git checkout master
If this is a fix to the current production system and it has to be implemented immediately please use the hotfix prefix instead of the bug one. Like hotfix-12345-name_of_the_fix.
Merging
Please always add --no-ff
if using git merge