From 7f1e2e48467f80cc083d24b44f088620e4e7bcb6 Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Mon, 6 Jun 2011 08:50:35 -0700 Subject: new batch of docs --- docs/content/misc/contribute.ngdoc | 151 ++++++++++++++++++++++++++++++++++--- 1 file changed, 139 insertions(+), 12 deletions(-) (limited to 'docs/content/misc/contribute.ngdoc') diff --git a/docs/content/misc/contribute.ngdoc b/docs/content/misc/contribute.ngdoc index 43d17283..2a398400 100644 --- a/docs/content/misc/contribute.ngdoc +++ b/docs/content/misc/contribute.ngdoc @@ -2,232 +2,359 @@ @name Contributing @description + + + +* License +* Contributing to Source Code +* Applying Code Standards +* Checking Out and Building `Angular` +* Submitting Your Changes + + + + -# Open Source +# License + `Angular` is an open source project licensed under the {@link http://github.com/angular/angular.js/blob/master/LICENSE MIT license}. Your contributions are always welcome. When working with `angular` source base, please follow the guidelines provided on this page. -* Contributing to Source Code -* Applying Code Standards -* Checking Out and Building `Angular` -* Submitting Your Changes # Contributing to Source Code + We'd love for you to contribute to our source code and to make `angular` even better than it is today! Here are the guidelines we'd like you to use: + * Major changes that you intend to contribute to the project must be discussed first on our {@link https://groups.google.com/forum/?hl=en#!forum/angular mailing list} so that we can better coordinate our efforts, prevent duplication of work, and help you to craft the change so that it is successfully accepted upstream. + + * Small changes and bug fixes can be crafted and submitted to Github as a pull request. + + + # Applying Code Standards + To ensure consistency throughout the source code, keep these rules in mind as you are working: + * All features or bug fixes must be tested by one or more specs. + + * All public API methods must be documented with ngdoc, an extended version of jsdoc (we added support for markdown and templating via `@ngdoc` tag). To see how we document our APIs, please check out the existing ngdocs. + + * With the exceptions listed below, we follow the rules contained in {@link http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml Google's JavaScript Style Guide}: + * Do not use namespaces: Instead, we wrap the entire `angular` code base in an anonymous closure and export our API explicitly rather than implicitly. + + * Wrap all code at 100 characters. + + * Instead of complex inheritance hierarchies, we prefer simple objects. We use prototypical inheritance only when absolutely necessary. + + * We love functions and closures and, whenever possible, prefer them over objects. + + * To write concise code that can be better minified, internally we use aliases that map to the external API. See our existing code to see what we mean. + + * We don't go crazy with type annotations for private internal APIs unless it's an internal API that is used throughout `angular`. The best guidance is to do what makes the most sense. + + # Checking Out and Building Angular + The `angular` source code is hosted at {@link http://github.com Github}, which we also use to accept code contributions. Several steps are needed to check out and build `angular`: + + ## Installation Dependencies + Before you can build `angular`, you must install or configure the following dependencies on your machine: + * {@link http://rake.rubyforge.org Rake}: We use Rake as our build system, which is pre-installed on most Macintosh and Linux machines. If that is not true in your case, you can grab it from the Rake website. + * {@link http://nodejs.org Node.js}: We use Node to generate the documentation and to run a development web server. Depending on your system, you can install Node either from source or as a pre-packaged bundle. + * Java: The Java runtime is used to run {@link http://code.google.com/p/js-test-driver JsTestDriver} (JSTD), which we use to run our unit test suite. JSTD binaries are part of the `angular` source base, which means there is no need to install or configure it separately. + + * Git: The {@link http://help.github.com/mac-git-installation Github Guide to Installing Git} is quite a good source for information on Git. + + ## Creating a Github Account and Forking Angular + To create a Github account, follow the instructions {@link https://github.com/signup/free here}. Afterwards, go ahead and {@link http://help.github.com/forking fork} the {@link https://github.com/angular/angular.js main angular repository}. + + ## Building `Angular` + To build `angular`, you check out the source code and use Rake to generate the non-minified and minified `angular` files: + 1. To clone your Github repository, run: + git clone git@github.com:/angular.js.git + 2. To go to the `angular` directory, run: + cd angular.js + 3. To add the main `angular` repository as an upstream remote to your repository, run: + git remote add upstream https://github.com/angular/angular.js.git + 4. To build `angular`, run: + rake package + The build output can be located under the `build` directory. It consists of the following files and directories: -* `angular-x.y.z-.tgz` — This is the complete tarball, which contains all of the release -build artifacts. + +* `angular-.tgz` — This is the complete tarball, which contains all of the release build +artifacts. + + * `angular.js` — The non-minified `angular` script. + + * `angular.min.js` — The minified `angular` script. + + * `angular-scenario.js` — The `angular` End2End test runner. + + * `angular-ie-compat.js` — The Internet Explorer compatibility patch file. + + * `docs/` — A directory that contains all of the files needed to run `docs.angularjs.org`. + + * `docs/index.html` — The main page for the documentation. + + * `docs/docs-scenario.html` — The End2End test runner for the documentation application. + + ## Running a Local Development Web Server + To debug or test code, it is often useful to have a local HTTP server. For this purpose, we have made available a local web server based on Node.js. + 1. To start the web server, run: + ./nodeserver.sh + 2. To access the local server, go to this website: + http://localhost:8000/ + By default, it serves the contents of the `angular` project directory. + + ## Running the Unit Test Suite + Our unit and integration tests are written with Jasmine and executed with JsTestDriver. To run the tests: + 1. To start the JSTD server, run: + ./server.sh + 2. To capture one or more browsers, go to this website: + http://localhost:9876/ + 3. To trigger a test execution, run: - ./test.sh + + ./test.sh + 4. To automatically run the test suite each time one or more of the files in the project directory is changed, you can install `watchr` and then run: + watchr watchr.rb + 5. To view the output of each test run, you can tail this log file: + ./logs/jstd.log + + ## Running the End2End Test Suite + To run the End2End test suite: + 1. Start the local web server. 2. In a browser, go to: + http://localhost:8000/build/docs/docs-scenario.html + The tests are executed automatically. + + + # Submitting Your Changes + To create and submit a change: + 1. Create a new branch off the master for your changes: + git branch my-fix-branch + 2. Check out the branch: + git checkout my-fix-branch + 3. Create your patch, make sure to have plenty of tests (that pass). + 4. Commit your changes: + git commit -a + 5. Run JavaScript Lint and be sure to address all new warnings and errors: + rake lint + 6. Push your branch to Github: + git push origin my-fix-branch + 7. In Github, send a pull request to `angular:master`. + 8. When the patch is reviewed and merged, delete your branch and pull yours — and other — changes from the main (upstream) repository: - * To delete the branch in Github, run: + + 1. To delete the branch in Github, run: + git push origin :my-fix-branch - * To check out the master branch, run: + + 2. To check out the master branch, run: + git checkout master - * To delete a local branch, run: + + 3. To delete a local branch, run: + git branch -D my-fix-branch - * To update your master with the latest upstream version, run: + + 4. To update your master with the latest upstream version, run: + git pull --ff upstream master + That's it! Thank you for your contribution! -- cgit v1.2.3