{"action":"created","comment":{"url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls/comments/87819878","pull_request_review_id":8414583,"id":87819878,"diff_hunk":"@@ -0,0 +1,217 @@\n+Workflow de validation dans Kinto\n+#################################\n+\n+:slug: kinto-workflows\n+:date: 2016-11-14\n+:lang: fr\n+:url: kinto-workflows\n+:summary:\n+    Debrief des fonctionnalités de validation dans Kinto.\n+\n+\n+Le besoin initial\n+=================\n+\n+Une grosse partie de notre travail sur *Kinto* chez Mozilla consiste à améliorer\n+l'acheminement de données de configuration dans Firefox. En particulier réduire\n+le temps de mise à disposition et l'efficacité de leur mise à jour.\n+\n+Par example, lorsque ces données étaient de simple fichiers JSON dans le dépôt Mercurial, leur\n+modification passaient par le processus de revue de code classique et leur livraison\n+via la prochaine release.\n+\n+Accélerer et fluidifier c'est super, mais il faut pas se louper!\n+\n+Nous avions besoin d'un garde-fou qui permette de retrouver au moins autant de\n+sécurité que le précédent système.\n+\n+\n+Le besoin universel\n+-------------------\n+\n+N'allez pas imaginer que ce besoin est spécifique à notre utilisation ou aux enjeux\n+liés à la livraison de plusieurs centaines de millions de clients!\n+\n+Prenez le cas d'une application qui consommerait des données controllées\n+par un administrateur (par exemple les valeurs proposées dans un formulaires, les\n+niveaux d'un jeu, les chaînes traduites, les paramètres positionnés par défaut etc.).\n+\n+On veut pouvoir se protéger des modifications hâtives ou maladroites du vendredi soir\n+ou des typos du lundi matin!\n+\n+On veut aussi pouvoir vérifier que l'application fonctionne avec les nouvelles\n+données avant d'appliquer le changement à tous.\n+\n+Cela permet aussi d'envisager les cas d'utilisation où les données sont modifiables\n+par des contributeurs externes et validées par quelqu'un de confiance!\n+\n+\n+La solution\n+===========\n+\n+Nous avons implémenté un plugin qui se charge d'ajouter la fonctionnalité en utilisant\n+l'API de Kinto existante.\n+\n+La façon la plus simple a consisté à utiliser plusieurs collections. La première\n+subit les changements, la suivante est mise à jour lors de la demande de revue\n+et la dernière est mise à jour si les changements sont approvés.\n+\n+\n+Status\n+------\n+\n+Nous utilisons un attribut particulier (``status``) sur l'object collection,\n+qui va servir à demander la revue, approver ou rejetter les changements.\n+\n+* Lorsqu'un changement a lieu sur les *records* de la *collection*, le status","path":"content/2016.11.kinto-and-workflows.rst","position":66,"original_position":66,"commit_id":"f7ae781cbd0281643df7f00a80ebea8f1a62a72c","original_commit_id":"f7ae781cbd0281643df7f00a80ebea8f1a62a72c","user":{"login":"Natim","id":229453,"avatar_url":"https://avatars.githubusercontent.com/u/229453?v=3","gravatar_id":"","url":"https://api.github.com/users/Natim","html_url":"https://github.com/Natim","followers_url":"https://api.github.com/users/Natim/followers","following_url":"https://api.github.com/users/Natim/following{/other_user}","gists_url":"https://api.github.com/users/Natim/gists{/gist_id}","starred_url":"https://api.github.com/users/Natim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Natim/subscriptions","organizations_url":"https://api.github.com/users/Natim/orgs","repos_url":"https://api.github.com/users/Natim/repos","events_url":"https://api.github.com/users/Natim/events{/privacy}","received_events_url":"https://api.github.com/users/Natim/received_events","type":"User","site_admin":false},"body":"statut","created_at":"2016-11-14T15:16:31Z","updated_at":"2016-11-14T15:16:31Z","html_url":"https://github.com/mozilla-services/servicedenuages.fr/pull/111#discussion_r87819878","pull_request_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls/111","_links":{"self":{"href":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls/comments/87819878"},"html":{"href":"https://github.com/mozilla-services/servicedenuages.fr/pull/111#discussion_r87819878"},"pull_request":{"href":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls/111"}}},"pull_request":{"url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls/111","id":93582780,"html_url":"https://github.com/mozilla-services/servicedenuages.fr/pull/111","diff_url":"https://github.com/mozilla-services/servicedenuages.fr/pull/111.diff","patch_url":"https://github.com/mozilla-services/servicedenuages.fr/pull/111.patch","issue_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/issues/111","number":111,"state":"open","locked":false,"title":"[WIP] Article about workflows","user":{"login":"leplatrem","id":546692,"avatar_url":"https://avatars.githubusercontent.com/u/546692?v=3","gravatar_id":"","url":"https://api.github.com/users/leplatrem","html_url":"https://github.com/leplatrem","followers_url":"https://api.github.com/users/leplatrem/followers","following_url":"https://api.github.com/users/leplatrem/following{/other_user}","gists_url":"https://api.github.com/users/leplatrem/gists{/gist_id}","starred_url":"https://api.github.com/users/leplatrem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leplatrem/subscriptions","organizations_url":"https://api.github.com/users/leplatrem/orgs","repos_url":"https://api.github.com/users/leplatrem/repos","events_url":"https://api.github.com/users/leplatrem/events{/privacy}","received_events_url":"https://api.github.com/users/leplatrem/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-11-14T15:06:49Z","updated_at":"2016-11-14T15:26:42Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e0caa72228d22d7f45216e31db68c1e6e60621bb","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls/111/commits","review_comments_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls/111/comments","review_comment_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/issues/111/comments","statuses_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/statuses/f7ae781cbd0281643df7f00a80ebea8f1a62a72c","head":{"label":"mozilla-services:article-kinto-worklflows","ref":"article-kinto-worklflows","sha":"f7ae781cbd0281643df7f00a80ebea8f1a62a72c","user":{"login":"mozilla-services","id":1066228,"avatar_url":"https://avatars.githubusercontent.com/u/1066228?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla-services","html_url":"https://github.com/mozilla-services","followers_url":"https://api.github.com/users/mozilla-services/followers","following_url":"https://api.github.com/users/mozilla-services/following{/other_user}","gists_url":"https://api.github.com/users/mozilla-services/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla-services/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla-services/subscriptions","organizations_url":"https://api.github.com/users/mozilla-services/orgs","repos_url":"https://api.github.com/users/mozilla-services/repos","events_url":"https://api.github.com/users/mozilla-services/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla-services/received_events","type":"Organization","site_admin":false},"repo":{"id":34000996,"name":"servicedenuages.fr","full_name":"mozilla-services/servicedenuages.fr","owner":{"login":"mozilla-services","id":1066228,"avatar_url":"https://avatars.githubusercontent.com/u/1066228?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla-services","html_url":"https://github.com/mozilla-services","followers_url":"https://api.github.com/users/mozilla-services/followers","following_url":"https://api.github.com/users/mozilla-services/following{/other_user}","gists_url":"https://api.github.com/users/mozilla-services/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla-services/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla-services/subscriptions","organizations_url":"https://api.github.com/users/mozilla-services/orgs","repos_url":"https://api.github.com/users/mozilla-services/repos","events_url":"https://api.github.com/users/mozilla-services/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla-services/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mozilla-services/servicedenuages.fr","description":"Storage team blog.","fork":false,"url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr","forks_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/forks","keys_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/teams","hooks_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/hooks","issue_events_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/issues/events{/number}","events_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/events","assignees_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/assignees{/user}","branches_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/branches{/branch}","tags_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/tags","blobs_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/git/refs{/sha}","trees_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/statuses/{sha}","languages_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/languages","stargazers_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/stargazers","contributors_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/contributors","subscribers_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/subscribers","subscription_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/subscription","commits_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/commits{/sha}","git_commits_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/git/commits{/sha}","comments_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/comments{/number}","issue_comment_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/issues/comments{/number}","contents_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/contents/{+path}","compare_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/merges","archive_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/downloads","issues_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/issues{/number}","pulls_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls{/number}","milestones_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/milestones{/number}","notifications_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/labels{/name}","releases_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/releases{/id}","deployments_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/deployments","created_at":"2015-04-15T15:07:57Z","updated_at":"2016-11-14T14:58:13Z","pushed_at":"2016-11-14T15:06:49Z","git_url":"git://github.com/mozilla-services/servicedenuages.fr.git","ssh_url":"git@github.com:mozilla-services/servicedenuages.fr.git","clone_url":"https://github.com/mozilla-services/servicedenuages.fr.git","svn_url":"https://github.com/mozilla-services/servicedenuages.fr","homepage":"http://www.servicedenuages.fr","size":20249,"stargazers_count":4,"watchers_count":4,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":8,"mirror_url":null,"open_issues_count":12,"forks":8,"open_issues":12,"watchers":4,"default_branch":"master"}},"base":{"label":"mozilla-services:master","ref":"master","sha":"1eb45372ac15dbfda8b210689c4c8b50450816ea","user":{"login":"mozilla-services","id":1066228,"avatar_url":"https://avatars.githubusercontent.com/u/1066228?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla-services","html_url":"https://github.com/mozilla-services","followers_url":"https://api.github.com/users/mozilla-services/followers","following_url":"https://api.github.com/users/mozilla-services/following{/other_user}","gists_url":"https://api.github.com/users/mozilla-services/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla-services/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla-services/subscriptions","organizations_url":"https://api.github.com/users/mozilla-services/orgs","repos_url":"https://api.github.com/users/mozilla-services/repos","events_url":"https://api.github.com/users/mozilla-services/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla-services/received_events","type":"Organization","site_admin":false},"repo":{"id":34000996,"name":"servicedenuages.fr","full_name":"mozilla-services/servicedenuages.fr","owner":{"login":"mozilla-services","id":1066228,"avatar_url":"https://avatars.githubusercontent.com/u/1066228?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla-services","html_url":"https://github.com/mozilla-services","followers_url":"https://api.github.com/users/mozilla-services/followers","following_url":"https://api.github.com/users/mozilla-services/following{/other_user}","gists_url":"https://api.github.com/users/mozilla-services/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla-services/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla-services/subscriptions","organizations_url":"https://api.github.com/users/mozilla-services/orgs","repos_url":"https://api.github.com/users/mozilla-services/repos","events_url":"https://api.github.com/users/mozilla-services/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla-services/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mozilla-services/servicedenuages.fr","description":"Storage team blog.","fork":false,"url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr","forks_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/forks","keys_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/teams","hooks_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/hooks","issue_events_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/issues/events{/number}","events_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/events","assignees_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/assignees{/user}","branches_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/branches{/branch}","tags_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/tags","blobs_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/git/refs{/sha}","trees_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/statuses/{sha}","languages_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/languages","stargazers_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/stargazers","contributors_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/contributors","subscribers_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/subscribers","subscription_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/subscription","commits_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/commits{/sha}","git_commits_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/git/commits{/sha}","comments_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/comments{/number}","issue_comment_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/issues/comments{/number}","contents_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/contents/{+path}","compare_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/merges","archive_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/downloads","issues_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/issues{/number}","pulls_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls{/number}","milestones_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/milestones{/number}","notifications_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/labels{/name}","releases_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/releases{/id}","deployments_url":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/deployments","created_at":"2015-04-15T15:07:57Z","updated_at":"2016-11-14T14:58:13Z","pushed_at":"2016-11-14T15:06:49Z","git_url":"git://github.com/mozilla-services/servicedenuages.fr.git","ssh_url":"git@github.com:mozilla-services/servicedenuages.fr.git","clone_url":"https://github.com/mozilla-services/servicedenuages.fr.git","svn_url":"https://github.com/mozilla-services/servicedenuages.fr","homepage":"http://www.servicedenuages.fr","size":20249,"stargazers_count":4,"watchers_count":4,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":8,"mirror_url":null,"open_issues_count":12,"forks":8,"open_issues":12,"watchers":4,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls/111"},"html":{"href":"https://github.com/mozilla-services/servicedenuages.fr/pull/111"},"issue":{"href":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/issues/111"},"comments":{"href":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/issues/111/comments"},"review_comments":{"href":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls/111/comments"},"review_comment":{"href":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/pulls/111/commits"},"statuses":{"href":"https://api.github.com/repos/mozilla-services/servicedenuages.fr/statuses/f7ae781cbd0281643df7f00a80ebea8f1a62a72c"}}}}
{"actor":{"display_login":"Natim"}}