{"action":"created","comment":{"url":"https://api.github.com/repos/KleeGroup/focus-docs/pulls/comments/40068053","id":40068053,"diff_hunk":"@@ -0,0 +1,75 @@\n+Maintenance\n+===========\n+\n+## Politique de livraison\n+\n+FocusJs et FocusComponents ont des nouvelles releases **mineures** toutes les **deux semaines** environ.\n+\n+Chaque release mineure est suivie dans les jours qui suivent d'une ou plusieurs releases de **patchs**.\n+\n+## Politique de gestion des dépendances\n+\n+Le build de l'application SPA doit être **déterministe** pour une version du `package.json` donné.\n+\n+En particulier :\n+  * le build ne doit **pas** dépendre du **moment** de la dernière exécution de `npm install` sur un projet.\n+  * le build ne doit **pas** dépendre du **poste** du développeur / build-agent\n+\n+Pour cela, il faut figer les numéros de versions dans le `package.json` : \n+\n+```javascript\n+{\n+ /* ... */\n+  \"dependencies\": {\n+    \"awesomplete\": \"1.0.0\",\n+    \"babel-eslint\": \"4.0.5\",\n+    \"backbone\": \"1.2.1\",\n+    \"bootstrap\": \"3.3.5\",\n+    \"bootstrap-material\": \"0.1.5\",\n+    \"daterangepicker\": \"0.0.3\",\n+    \"eslint\": \"0.24.1\"\n+    /* ...  */\n+  }\n+}\n+```\n+\n+Pour connaître les numéros de version effectifs dans un projet donné, taper :\n+\n+```\n+npm list\n+```\n+\n+On obtient l'arbre de dépendances node du projet :\n+\n+```\n+├─┬ focusjs@0.9.0-1\n+│ ├─┬ flux@2.1.1\n+│ │ ├── fbemitter@2.0.0\n+│ │ └─┬ fbjs@0.1.0-alpha.7\n+│ │   ├── core-js@1.1.3\n+│ │   ├─┬ promise@7.0.4\n+│ │   │ └── asap@2.0.3\n+│ │   └── whatwg-fetch@0.9.0\n+│ ├── keymirror@0.1.1\n+│ ├── object-assign@2.1.1\n+│ └── uuid@2.0.1\n+├─┬ focusjs-components@0.5.1-4\n+│ ├─┬ babel-core@5.8.23\n+│ │ ├── babel-plugin-constant-folding@1.0.1\n+│ │ ├── babel-plugin-dead-code-elimination@1.0.2\n+```\n+\n+## Politique de mise à jour des projets\n+\n+Les projets doivent se mettre **régulièrement** à jour, pour prendre en compte les corrections au fur et à mesure.\n+\n+Pour se mettre à jour :\n+\n+```\n+npm run update-focus","path":"maintenance/README.md","position":72,"original_position":69,"commit_id":"e6c5f6260d909adf18c9872533fb734884460617","original_commit_id":"a2fe8f3b58548e4da9a91c23ebc49113ecdb048e","user":{"login":"sebez","id":9380855,"avatar_url":"https://avatars.githubusercontent.com/u/9380855?v=3","gravatar_id":"","url":"https://api.github.com/users/sebez","html_url":"https://github.com/sebez","followers_url":"https://api.github.com/users/sebez/followers","following_url":"https://api.github.com/users/sebez/following{/other_user}","gists_url":"https://api.github.com/users/sebez/gists{/gist_id}","starred_url":"https://api.github.com/users/sebez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sebez/subscriptions","organizations_url":"https://api.github.com/users/sebez/orgs","repos_url":"https://api.github.com/users/sebez/repos","events_url":"https://api.github.com/users/sebez/events{/privacy}","received_events_url":"https://api.github.com/users/sebez/received_events","type":"User","site_admin":false},"body":"OK.","created_at":"2015-09-22T09:42:21Z","updated_at":"2015-09-22T09:42:21Z","html_url":"https://github.com/KleeGroup/focus-docs/pull/16#discussion_r40068053","pull_request_url":"https://api.github.com/repos/KleeGroup/focus-docs/pulls/16","_links":{"self":{"href":"https://api.github.com/repos/KleeGroup/focus-docs/pulls/comments/40068053"},"html":{"href":"https://github.com/KleeGroup/focus-docs/pull/16#discussion_r40068053"},"pull_request":{"href":"https://api.github.com/repos/KleeGroup/focus-docs/pulls/16"}}},"pull_request":{"url":"https://api.github.com/repos/KleeGroup/focus-docs/pulls/16","id":45641738,"html_url":"https://github.com/KleeGroup/focus-docs/pull/16","diff_url":"https://github.com/KleeGroup/focus-docs/pull/16.diff","patch_url":"https://github.com/KleeGroup/focus-docs/pull/16.patch","issue_url":"https://api.github.com/repos/KleeGroup/focus-docs/issues/16","number":16,"state":"open","locked":false,"title":"Doc on maintenance policy.","user":{"login":"sebez","id":9380855,"avatar_url":"https://avatars.githubusercontent.com/u/9380855?v=3","gravatar_id":"","url":"https://api.github.com/users/sebez","html_url":"https://github.com/sebez","followers_url":"https://api.github.com/users/sebez/followers","following_url":"https://api.github.com/users/sebez/following{/other_user}","gists_url":"https://api.github.com/users/sebez/gists{/gist_id}","starred_url":"https://api.github.com/users/sebez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sebez/subscriptions","organizations_url":"https://api.github.com/users/sebez/orgs","repos_url":"https://api.github.com/users/sebez/repos","events_url":"https://api.github.com/users/sebez/events{/privacy}","received_events_url":"https://api.github.com/users/sebez/received_events","type":"User","site_admin":false},"body":"![giphy 1](https://cloud.githubusercontent.com/assets/9380855/10014778/f2938f9a-611b-11e5-969e-128bd330c12f.gif)\r\n","created_at":"2015-09-22T09:20:51Z","updated_at":"2015-09-22T09:42:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"026e3c40df97017e9c993f3539eb03adc973f58b","assignee":{"login":"sebez","id":9380855,"avatar_url":"https://avatars.githubusercontent.com/u/9380855?v=3","gravatar_id":"","url":"https://api.github.com/users/sebez","html_url":"https://github.com/sebez","followers_url":"https://api.github.com/users/sebez/followers","following_url":"https://api.github.com/users/sebez/following{/other_user}","gists_url":"https://api.github.com/users/sebez/gists{/gist_id}","starred_url":"https://api.github.com/users/sebez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sebez/subscriptions","organizations_url":"https://api.github.com/users/sebez/orgs","repos_url":"https://api.github.com/users/sebez/repos","events_url":"https://api.github.com/users/sebez/events{/privacy}","received_events_url":"https://api.github.com/users/sebez/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/KleeGroup/focus-docs/pulls/16/commits","review_comments_url":"https://api.github.com/repos/KleeGroup/focus-docs/pulls/16/comments","review_comment_url":"https://api.github.com/repos/KleeGroup/focus-docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/KleeGroup/focus-docs/issues/16/comments","statuses_url":"https://api.github.com/repos/KleeGroup/focus-docs/statuses/e6c5f6260d909adf18c9872533fb734884460617","head":{"label":"sebez:patch-1","ref":"patch-1","sha":"e6c5f6260d909adf18c9872533fb734884460617","user":{"login":"sebez","id":9380855,"avatar_url":"https://avatars.githubusercontent.com/u/9380855?v=3","gravatar_id":"","url":"https://api.github.com/users/sebez","html_url":"https://github.com/sebez","followers_url":"https://api.github.com/users/sebez/followers","following_url":"https://api.github.com/users/sebez/following{/other_user}","gists_url":"https://api.github.com/users/sebez/gists{/gist_id}","starred_url":"https://api.github.com/users/sebez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sebez/subscriptions","organizations_url":"https://api.github.com/users/sebez/orgs","repos_url":"https://api.github.com/users/sebez/repos","events_url":"https://api.github.com/users/sebez/events{/privacy}","received_events_url":"https://api.github.com/users/sebez/received_events","type":"User","site_admin":false},"repo":{"id":41728885,"name":"focus-docs","full_name":"sebez/focus-docs","owner":{"login":"sebez","id":9380855,"avatar_url":"https://avatars.githubusercontent.com/u/9380855?v=3","gravatar_id":"","url":"https://api.github.com/users/sebez","html_url":"https://github.com/sebez","followers_url":"https://api.github.com/users/sebez/followers","following_url":"https://api.github.com/users/sebez/following{/other_user}","gists_url":"https://api.github.com/users/sebez/gists{/gist_id}","starred_url":"https://api.github.com/users/sebez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sebez/subscriptions","organizations_url":"https://api.github.com/users/sebez/orgs","repos_url":"https://api.github.com/users/sebez/repos","events_url":"https://api.github.com/users/sebez/events{/privacy}","received_events_url":"https://api.github.com/users/sebez/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/sebez/focus-docs","description":"Documentation for focus.","fork":true,"url":"https://api.github.com/repos/sebez/focus-docs","forks_url":"https://api.github.com/repos/sebez/focus-docs/forks","keys_url":"https://api.github.com/repos/sebez/focus-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sebez/focus-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sebez/focus-docs/teams","hooks_url":"https://api.github.com/repos/sebez/focus-docs/hooks","issue_events_url":"https://api.github.com/repos/sebez/focus-docs/issues/events{/number}","events_url":"https://api.github.com/repos/sebez/focus-docs/events","assignees_url":"https://api.github.com/repos/sebez/focus-docs/assignees{/user}","branches_url":"https://api.github.com/repos/sebez/focus-docs/branches{/branch}","tags_url":"https://api.github.com/repos/sebez/focus-docs/tags","blobs_url":"https://api.github.com/repos/sebez/focus-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sebez/focus-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sebez/focus-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/sebez/focus-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sebez/focus-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/sebez/focus-docs/languages","stargazers_url":"https://api.github.com/repos/sebez/focus-docs/stargazers","contributors_url":"https://api.github.com/repos/sebez/focus-docs/contributors","subscribers_url":"https://api.github.com/repos/sebez/focus-docs/subscribers","subscription_url":"https://api.github.com/repos/sebez/focus-docs/subscription","commits_url":"https://api.github.com/repos/sebez/focus-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/sebez/focus-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/sebez/focus-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/sebez/focus-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/sebez/focus-docs/contents/{+path}","compare_url":"https://api.github.com/repos/sebez/focus-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sebez/focus-docs/merges","archive_url":"https://api.github.com/repos/sebez/focus-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sebez/focus-docs/downloads","issues_url":"https://api.github.com/repos/sebez/focus-docs/issues{/number}","pulls_url":"https://api.github.com/repos/sebez/focus-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/sebez/focus-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/sebez/focus-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sebez/focus-docs/labels{/name}","releases_url":"https://api.github.com/repos/sebez/focus-docs/releases{/id}","created_at":"2015-09-01T09:15:06Z","updated_at":"2015-09-01T09:15:06Z","pushed_at":"2015-09-22T09:41:38Z","git_url":"git://github.com/sebez/focus-docs.git","ssh_url":"git@github.com:sebez/focus-docs.git","clone_url":"https://github.com/sebez/focus-docs.git","svn_url":"https://github.com/sebez/focus-docs","homepage":"http://kleegroup.github.io/focus-docs","size":2390,"stargazers_count":0,"watchers_count":0,"language":"Shell","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"KleeGroup:master","ref":"master","sha":"2f94a59f1fdfd79d61f6644e71075e107496a5a5","user":{"login":"KleeGroup","id":6595223,"avatar_url":"https://avatars.githubusercontent.com/u/6595223?v=3","gravatar_id":"","url":"https://api.github.com/users/KleeGroup","html_url":"https://github.com/KleeGroup","followers_url":"https://api.github.com/users/KleeGroup/followers","following_url":"https://api.github.com/users/KleeGroup/following{/other_user}","gists_url":"https://api.github.com/users/KleeGroup/gists{/gist_id}","starred_url":"https://api.github.com/users/KleeGroup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KleeGroup/subscriptions","organizations_url":"https://api.github.com/users/KleeGroup/orgs","repos_url":"https://api.github.com/users/KleeGroup/repos","events_url":"https://api.github.com/users/KleeGroup/events{/privacy}","received_events_url":"https://api.github.com/users/KleeGroup/received_events","type":"Organization","site_admin":false},"repo":{"id":26536624,"name":"focus-docs","full_name":"KleeGroup/focus-docs","owner":{"login":"KleeGroup","id":6595223,"avatar_url":"https://avatars.githubusercontent.com/u/6595223?v=3","gravatar_id":"","url":"https://api.github.com/users/KleeGroup","html_url":"https://github.com/KleeGroup","followers_url":"https://api.github.com/users/KleeGroup/followers","following_url":"https://api.github.com/users/KleeGroup/following{/other_user}","gists_url":"https://api.github.com/users/KleeGroup/gists{/gist_id}","starred_url":"https://api.github.com/users/KleeGroup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KleeGroup/subscriptions","organizations_url":"https://api.github.com/users/KleeGroup/orgs","repos_url":"https://api.github.com/users/KleeGroup/repos","events_url":"https://api.github.com/users/KleeGroup/events{/privacy}","received_events_url":"https://api.github.com/users/KleeGroup/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/KleeGroup/focus-docs","description":"Documentation for focus.","fork":false,"url":"https://api.github.com/repos/KleeGroup/focus-docs","forks_url":"https://api.github.com/repos/KleeGroup/focus-docs/forks","keys_url":"https://api.github.com/repos/KleeGroup/focus-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KleeGroup/focus-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KleeGroup/focus-docs/teams","hooks_url":"https://api.github.com/repos/KleeGroup/focus-docs/hooks","issue_events_url":"https://api.github.com/repos/KleeGroup/focus-docs/issues/events{/number}","events_url":"https://api.github.com/repos/KleeGroup/focus-docs/events","assignees_url":"https://api.github.com/repos/KleeGroup/focus-docs/assignees{/user}","branches_url":"https://api.github.com/repos/KleeGroup/focus-docs/branches{/branch}","tags_url":"https://api.github.com/repos/KleeGroup/focus-docs/tags","blobs_url":"https://api.github.com/repos/KleeGroup/focus-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KleeGroup/focus-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KleeGroup/focus-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/KleeGroup/focus-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KleeGroup/focus-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/KleeGroup/focus-docs/languages","stargazers_url":"https://api.github.com/repos/KleeGroup/focus-docs/stargazers","contributors_url":"https://api.github.com/repos/KleeGroup/focus-docs/contributors","subscribers_url":"https://api.github.com/repos/KleeGroup/focus-docs/subscribers","subscription_url":"https://api.github.com/repos/KleeGroup/focus-docs/subscription","commits_url":"https://api.github.com/repos/KleeGroup/focus-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/KleeGroup/focus-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/KleeGroup/focus-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/KleeGroup/focus-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/KleeGroup/focus-docs/contents/{+path}","compare_url":"https://api.github.com/repos/KleeGroup/focus-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KleeGroup/focus-docs/merges","archive_url":"https://api.github.com/repos/KleeGroup/focus-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KleeGroup/focus-docs/downloads","issues_url":"https://api.github.com/repos/KleeGroup/focus-docs/issues{/number}","pulls_url":"https://api.github.com/repos/KleeGroup/focus-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/KleeGroup/focus-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/KleeGroup/focus-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KleeGroup/focus-docs/labels{/name}","releases_url":"https://api.github.com/repos/KleeGroup/focus-docs/releases{/id}","created_at":"2014-11-12T13:14:53Z","updated_at":"2015-08-24T07:19:07Z","pushed_at":"2015-09-22T09:41:39Z","git_url":"git://github.com/KleeGroup/focus-docs.git","ssh_url":"git@github.com:KleeGroup/focus-docs.git","clone_url":"https://github.com/KleeGroup/focus-docs.git","svn_url":"https://github.com/KleeGroup/focus-docs","homepage":"http://kleegroup.github.io/focus-docs","size":2949,"stargazers_count":1,"watchers_count":1,"language":"Shell","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":3,"mirror_url":null,"open_issues_count":3,"forks":3,"open_issues":3,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/KleeGroup/focus-docs/pulls/16"},"html":{"href":"https://github.com/KleeGroup/focus-docs/pull/16"},"issue":{"href":"https://api.github.com/repos/KleeGroup/focus-docs/issues/16"},"comments":{"href":"https://api.github.com/repos/KleeGroup/focus-docs/issues/16/comments"},"review_comments":{"href":"https://api.github.com/repos/KleeGroup/focus-docs/pulls/16/comments"},"review_comment":{"href":"https://api.github.com/repos/KleeGroup/focus-docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/KleeGroup/focus-docs/pulls/16/commits"},"statuses":{"href":"https://api.github.com/repos/KleeGroup/focus-docs/statuses/e6c5f6260d909adf18c9872533fb734884460617"}}}}