{"action":"created","comment":{"url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls/comments/47006791","id":47006791,"diff_hunk":"@@ -0,0 +1,660 @@\n+# Coding Guide\n+\n+Cesium is one of the largest JavaScript codebases in the world.  Since its start, we have maintained a high standard for code quality, which has made the codebase easier to work with for both new and experienced contributors.  We hope you find the codebase to be clean and consistent.\n+\n+In addition to describing typical coding conventions, this guide also covers best practices for design, maintainability, and performance.  It is the cumulative advice of many developers after years of production development, research, and experimentation.\n+\n+:art: The color palette icon indicates a design tip.\n+\n+:house: The house icon indicates a maintainability tip.  The whole guide is, of course, about writing maintainable code.\n+\n+:speedboat: The speedboat indicates a performance tip.\n+\n+To some extent, this guide can be summarized as _make new code similar to existing code_.\n+\n+_TODO: TOC_\n+\n+## Naming\n+\n+* Directory names are `PascalCase`, e.g., `Source/Scene`.\n+* Constructor functions are `PascalCase`, e.g., `Cartesian3`.\n+* Functions are `camelCase`, e.g., `defaultValue()`, `Cartesian3.equalsEpsilon()`.\n+* Files end in `.js` and have the same name as the JavaScript identifier, e.g., `Cartesian3.js` and `defaultValue.js`.\n+* Variables, including class properties, are `camelCase`, e.g.,\n+```javascript\n+this.minimumPixelSize = 1.0; // Class property\n+\n+var bufferViews = gltf.bufferViews; // Local variable\n+```\n+* Private (by convention) members start with an underscore, e.g.,\n+```javascript\n+this._canvas = canvas;\n+```\n+* Constants are in uppercase with underscores, e.g.,\n+```javascript\n+Cartesian3.UNIT_X = freezeObject(new Cartesian3(1.0, 0.0, 0.0));\n+```\n+* Avoid abbreviations in public identifiers unless the full name is prohibitively cumbersome and has a widely accepted abbreviation, e.g., \n+```javascript\n+Cartesian3.maximumComponent() // not Cartesian3.maxComponent()\n+\n+Ellipsoid.WGS84 // not Ellipsoid.WORLD_GEODETIC_SYSTEM_1984\n+```\n+* Prefer short and descriptive names for local variables, e.g., if a function has only one length variable,\n+```javascript\n+var primitivesLength = primitives.length;\n+```\n+is better written as\n+```javascript\n+var length = primitives.length;\n+```\n+* When accessing an outer-scope's `this` in a closure, name the variable `that`, e.g.,\n+```javascript\n+var that = this;\n+this._showTouch = createCommand(function() {\n+    that._touch = true;\n+});\n+```\n+\n+A few more naming conventions are introduced below along with their design pattern, e.g., [`options` parameters](#options-parameters), [`result` parameters and scratch variables](#result-parameters-and-scratch-variables), and [`from` constructors](#from-constructors).\n+\n+## Formatting\n+\n+In general, format new code the same as the existing code.\n+\n+* Use four spaces for indentation.  Do not use tab characters.\n+* Do not include trailing whitespace.\n+* Put `{` on the same line as the previous statement:\n+```javascript\n+var defaultValue = function(a, b) {\n+   // ...\n+};\n+\n+if (!defined(result)) {\n+   // ...\n+}\n+```\n+* Use parenthesis judiciously, e.g.,\n+```javascript\n+var foo = x > 0.0 && y !== 0.0;\n+```\n+is better written as\n+```javascript\n+var foo = (x > 0.0) && (y !== 0.0);\n+```\n+* Use vertical whitespace to separate functions and to group related statements within a function, e.g.,\n+```javascript\n+var Model = function(options) {\n+    // ...\n+    this._allowPicking = defaultValue(options.allowPicking, true);\n+\n+    this._ready = false;\n+    this._readyPromise = when.defer();\n+    // ...\n+};\n+```\n+* Use single quotes, `'`, instead of double quotes, `\"`.  `\"use strict\"` is an exception and should use double quotes.\n+\n+## Units\n+\n+* Use meters for distances.\n+* Use radians for angles, except for explicit `Degrees` functions such as `Cartesian3.fromDegrees`.\n+* Use seconds for time durations.\n+\n+## Basic Code Construction\n+\n+* To avoid type coercion, test for equality with `===` and `!==`, e.g.,\n+```javascript\n+var f = 1.0;\n+\n+if (f === 1.0) {\n+    // ...\n+}\n+\n+if (f !== 1.0) {\n+    // ...\n+}\n+```\n+* To aid the human reader, append `.0` to whole numbers intended to be floating-point values, e.g., unless `f` is an integer,\n+```javascript\n+var f = 1;\n+```\n+is better written as\n+```javascript\n+var f = 1.0;\n+```\n+* Declare variables where they are first used.  For example,\n+```javascript\n+var i;\n+var m;\n+var models = [ /* ... */ ];\n+var length = models.length;\n+for (i = 0; i < length; ++i) {\n+    m = models[i];\n+    // Use m\n+}\n+```\n+is better written as\n+```javascript\n+var models = [ /* ... */ ];\n+var length = models.length;\n+for (var i = 0; i < length; ++i) {\n+    var m = models[i];\n+    // Use m\n+}\n+```\n+* Variables have function-level, not block-level scope.  Do not rely on variable hoisting, i.e., using a variable before it is declared, e.g.,\n+```javascript\n+console.log(i); // i is undefined here.  Never use a variable before it is declared.\n+var i = 0.0;\n+```\n+* Use `undefined` instead of `null`.\n+* Test if a variable is defined using Cesium's `defined` function, e.g.,\n+```javascript\n+var v = undefined;\n+if (defined(v)) {\n+    // false\n+}\n+\n+var u = {};\n+if (defined(u)) {\n+    // true\n+}\n+```\n+* Use Cesium's `definedNotNull` function to test the return of `String.match()` and JSON properties.\n+* Use Cesium's `freezeObject` function to create enums, e.g.,\n+```javascript\n+/*global define*/\n+define([\n+        '../Core/freezeObject'\n+    ], function(\n+        freezeObject) {\n+    \"use strict\";\n+\n+    return freezeObject({\n+        STOPPED : 0,\n+        ANIMATING : 1\n+    });\n+});\n+```\n+* Use descriptive comments for non-obvious code, e.g.,\n+```javascript\n+byteOffset += sizeOfUint32; // Add 4 to byteOffset\n+```\n+is better written as\n+```javascript\n+byteOffset += sizeOfUint32; // Skip length field\n+```\n+* `TODO` comments need to be removed or addressed before the code is merged into master.  Used sparingly, `PERFORMANCE_IDEA`, can be handy later when profiling.\n+\n+## Functions\n+\n+* :art: Functions should be **cohesive**; they should only do one task.\n+* Statements in a function should be at a similar level of abstraction.  If a code block is much lower level than the rest of the statements, it is a good candidate to move to a helper function, e.g., \n+```javascript\n+Cesium3DTileset.prototype.update = function(frameState) {\n+    var tiles = this._processingQueue;\n+    var length = tiles.length;\n+\n+    for (var i = length - 1; i >= 0; --i) {\n+        tiles[i].process(this, frameState);\n+    }\n+\n+    selectTiles(this, frameState);\n+    updateTiles(this, frameState);\n+};\n+```\n+is better written as\n+```javascript\n+Cesium3DTileset.prototype.update = function(frameState) {\n+    processTiles(this, frameState);\n+    selectTiles(this, frameState);\n+    updateTiles(this, frameState);\n+};\n+\n+function processTiles(tiles3D, frameState) {\n+    var tiles = tiles3D._processingQueue;\n+    var length = tiles.length;\n+\n+    for (var i = length - 1; i >= 0; --i) {\n+        tiles[i].process(tiles3D, frameState);\n+    }\n+}\n+```\n+* :speedboat: Smaller functions are more likely to be optimized by V8.  Consider this for code that is likely to be a hot spot.\n+* :speedboat: Avoid multiple `return` statements in small hot functions since V8 will not inline them .","path":"Documentation/Contributors/CodingGuide/README.md","position":225,"original_position":225,"commit_id":"cf2e206f856b2593c85d0f0363e77139e699aec0","original_commit_id":"2888699b5f856462275607b8f17b3ca675286d2f","user":{"login":"pjcozzi","id":782098,"avatar_url":"https://avatars.githubusercontent.com/u/782098?v=3","gravatar_id":"","url":"https://api.github.com/users/pjcozzi","html_url":"https://github.com/pjcozzi","followers_url":"https://api.github.com/users/pjcozzi/followers","following_url":"https://api.github.com/users/pjcozzi/following{/other_user}","gists_url":"https://api.github.com/users/pjcozzi/gists{/gist_id}","starred_url":"https://api.github.com/users/pjcozzi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pjcozzi/subscriptions","organizations_url":"https://api.github.com/users/pjcozzi/orgs","repos_url":"https://api.github.com/users/pjcozzi/repos","events_url":"https://api.github.com/users/pjcozzi/events{/privacy}","received_events_url":"https://api.github.com/users/pjcozzi/received_events","type":"User","site_admin":false},"body":"http://nodeup.com/fortyfive\r\n\r\nI'm fine with not including it if we think otherwise.","created_at":"2015-12-08T20:11:44Z","updated_at":"2015-12-08T20:11:44Z","html_url":"https://github.com/AnalyticalGraphicsInc/cesium/pull/3312#discussion_r47006791","pull_request_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls/3312","_links":{"self":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls/comments/47006791"},"html":{"href":"https://github.com/AnalyticalGraphicsInc/cesium/pull/3312#discussion_r47006791"},"pull_request":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls/3312"}}},"pull_request":{"url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls/3312","id":53029333,"html_url":"https://github.com/AnalyticalGraphicsInc/cesium/pull/3312","diff_url":"https://github.com/AnalyticalGraphicsInc/cesium/pull/3312.diff","patch_url":"https://github.com/AnalyticalGraphicsInc/cesium/pull/3312.patch","issue_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/3312","number":3312,"state":"open","locked":false,"title":"Cesium Coding Guide for Contributors","user":{"login":"pjcozzi","id":782098,"avatar_url":"https://avatars.githubusercontent.com/u/782098?v=3","gravatar_id":"","url":"https://api.github.com/users/pjcozzi","html_url":"https://github.com/pjcozzi","followers_url":"https://api.github.com/users/pjcozzi/followers","following_url":"https://api.github.com/users/pjcozzi/following{/other_user}","gists_url":"https://api.github.com/users/pjcozzi/gists{/gist_id}","starred_url":"https://api.github.com/users/pjcozzi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pjcozzi/subscriptions","organizations_url":"https://api.github.com/users/pjcozzi/orgs","repos_url":"https://api.github.com/users/pjcozzi/repos","events_url":"https://api.github.com/users/pjcozzi/events{/privacy}","received_events_url":"https://api.github.com/users/pjcozzi/received_events","type":"User","site_admin":false},"body":"Please provide technical feedback by end of Thursday:\r\n\r\n* [Coding Guide](https://github.com/AnalyticalGraphicsInc/cesium/blob/coding-guide/Documentation/Contributors/CodingGuide/README.md)\r\n\r\nCommit corrections, improvements, and new sections directly to this branch, `coding-guide`.  Maintain the concise writing style and still try to provide context.  If you don't have commit access, just leave a comment in this PR.\r\n\r\nI went through much of the Cesium codebase and documented established practices in this guide.  The scope of this PR is to finish and edit the guide, not to suggest changes to the current practices.  Please open separate issues for those discussions or add them to #2524 (Cesium 2.0).\r\n\r\n**TODO**\r\n* Does anyone want to add these?\r\n    * [ ] Promises section.\r\n    * [ ] Web workers section.\r\n    * [ ] UI (and CSS?) section.\r\n    * [ ] Mention Eclipse and Web Storm formatters.\r\n* [ ] Add TOC\r\n* [ ] Remove the old [JavaScript Coding Conventions](https://github.com/AnalyticalGraphicsInc/cesium/wiki/JavaScript-Coding-Conventions) on the wiki","created_at":"2015-12-08T19:51:54Z","updated_at":"2015-12-08T20:11:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"23352ce1ef195226b40be649a6773b87b404599d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls/3312/commits","review_comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls/3312/comments","review_comment_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls/comments{/number}","comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/3312/comments","statuses_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/statuses/cf2e206f856b2593c85d0f0363e77139e699aec0","head":{"label":"AnalyticalGraphicsInc:coding-guide","ref":"coding-guide","sha":"cf2e206f856b2593c85d0f0363e77139e699aec0","user":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars.githubusercontent.com/u/1490220?v=3","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"repo":{"id":3606738,"name":"cesium","full_name":"AnalyticalGraphicsInc/cesium","owner":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars.githubusercontent.com/u/1490220?v=3","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AnalyticalGraphicsInc/cesium","description":"WebGL virtual globe and map engine","fork":false,"url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium","forks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/forks","keys_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/teams","hooks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/hooks","issue_events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/events{/number}","events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/events","assignees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/assignees{/user}","branches_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/branches{/branch}","tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/tags","blobs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/git/refs{/sha}","trees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/statuses/{sha}","languages_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/languages","stargazers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/stargazers","contributors_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/contributors","subscribers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/subscribers","subscription_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/subscription","commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/commits{/sha}","git_commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/git/commits{/sha}","comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/comments{/number}","issue_comment_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/comments{/number}","contents_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/contents/{+path}","compare_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/merges","archive_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/downloads","issues_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues{/number}","pulls_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls{/number}","milestones_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/milestones{/number}","notifications_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/labels{/name}","releases_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/releases{/id}","created_at":"2012-03-02T22:27:14Z","updated_at":"2015-12-07T04:46:32Z","pushed_at":"2015-12-08T20:01:19Z","git_url":"git://github.com/AnalyticalGraphicsInc/cesium.git","ssh_url":"git@github.com:AnalyticalGraphicsInc/cesium.git","clone_url":"https://github.com/AnalyticalGraphicsInc/cesium.git","svn_url":"https://github.com/AnalyticalGraphicsInc/cesium","homepage":"cesiumjs.org","size":243235,"stargazers_count":1066,"watchers_count":1066,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":631,"mirror_url":null,"open_issues_count":335,"forks":631,"open_issues":335,"watchers":1066,"default_branch":"master"}},"base":{"label":"AnalyticalGraphicsInc:master","ref":"master","sha":"7f0f95263d452198ccf97ff54a98820b611207e3","user":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars.githubusercontent.com/u/1490220?v=3","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"repo":{"id":3606738,"name":"cesium","full_name":"AnalyticalGraphicsInc/cesium","owner":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars.githubusercontent.com/u/1490220?v=3","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AnalyticalGraphicsInc/cesium","description":"WebGL virtual globe and map engine","fork":false,"url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium","forks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/forks","keys_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/teams","hooks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/hooks","issue_events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/events{/number}","events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/events","assignees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/assignees{/user}","branches_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/branches{/branch}","tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/tags","blobs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/git/refs{/sha}","trees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/statuses/{sha}","languages_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/languages","stargazers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/stargazers","contributors_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/contributors","subscribers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/subscribers","subscription_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/subscription","commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/commits{/sha}","git_commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/git/commits{/sha}","comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/comments{/number}","issue_comment_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/comments{/number}","contents_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/contents/{+path}","compare_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/merges","archive_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/downloads","issues_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues{/number}","pulls_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls{/number}","milestones_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/milestones{/number}","notifications_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/labels{/name}","releases_url":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/releases{/id}","created_at":"2012-03-02T22:27:14Z","updated_at":"2015-12-07T04:46:32Z","pushed_at":"2015-12-08T20:01:19Z","git_url":"git://github.com/AnalyticalGraphicsInc/cesium.git","ssh_url":"git@github.com:AnalyticalGraphicsInc/cesium.git","clone_url":"https://github.com/AnalyticalGraphicsInc/cesium.git","svn_url":"https://github.com/AnalyticalGraphicsInc/cesium","homepage":"cesiumjs.org","size":243235,"stargazers_count":1066,"watchers_count":1066,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":631,"mirror_url":null,"open_issues_count":335,"forks":631,"open_issues":335,"watchers":1066,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls/3312"},"html":{"href":"https://github.com/AnalyticalGraphicsInc/cesium/pull/3312"},"issue":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/3312"},"comments":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/issues/3312/comments"},"review_comments":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls/3312/comments"},"review_comment":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/pulls/3312/commits"},"statuses":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/cesium/statuses/cf2e206f856b2593c85d0f0363e77139e699aec0"}}}}