)]}'
{"reference/cti/javascript-cti.rst":[{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"b364b4847bdc701be5a192e644deed7580f016e6","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Projects which are browser based must also be able to do:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":" - Unit tests in Firefox, Chromium, and PhantomJS."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Projects which are server based must also be able to do:"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_128612db","line":16,"updated":"2015-10-08 21:36:33.000000000","message":"In horizon, we currently only have phantomJS.  I believe that we ran into problems with chromium testing on zuul... I can\u0027t remember exactly.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"1839eec1a3d6a36875fb420c24d173d5257ebb61","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Projects which are browser based must also be able to do:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":" - Unit tests in Firefox, Chromium, and PhantomJS."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Projects which are server based must also be able to do:"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_5c7b317b","line":16,"in_reply_to":"5a2ca52d_72f3369f","updated":"2015-10-16 21:22:16.000000000","message":"If you have a browser project, you should be testing on browsers. I can live without phantomjs tests, though I\u0027m certain there are testing shims (similar to modernizr) that overcome this issue.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"979374acc486d421145e8247d3da5d0bf0a8b793","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Projects which are browser based must also be able to do:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":" - Unit tests in Firefox, Chromium, and PhantomJS."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Projects which are server based must also be able to do:"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_72f3369f","line":16,"in_reply_to":"7a2fa921_128612db","updated":"2015-10-14 15:45:14.000000000","message":"And in Fuel we run tests on firefox because we can\u0027t use phantomjs 1.x due to its quirks (like absence of Function.prototype.bind). Let\u0027s not restrict list of supported browsers. \n\nAlso, should there be a common way to specify which browser should be used? Like `npm test --browser\u003dchrome`","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"dcf72571b5dc3b3d1593ed69970e22736f475251","unresolved":false,"context_lines":[{"line_number":26,"context_line":".. note::"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"   Specifics on which tools and methods are used to accomplish some of the"},{"line_number":29,"context_line":"   above tasks are still under discussion."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Specific commands"},{"line_number":32,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_77d83a1e","line":29,"updated":"2015-10-13 15:25:26.000000000","message":"I don\u0027t think this adds anything.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"979374acc486d421145e8247d3da5d0bf0a8b793","unresolved":false,"context_lines":[{"line_number":41,"context_line":"root of an initialized tree."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"  :code:`npm test`"},{"line_number":44,"context_line":"    This command executes tests, and generates coverage reports."},{"line_number":45,"context_line":"  :code:`npm run lint`"},{"line_number":46,"context_line":"    This command performs codestyle checks against the project."},{"line_number":47,"context_line":"  :code:`npm pack`"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_3c4ef06f","line":44,"updated":"2015-10-14 15:45:14.000000000","message":"What tests? Only unit tests, or also other ones (e.g. functional)? If this is only for unit-tests, should commands to run other types of tests be described here?","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"1839eec1a3d6a36875fb420c24d173d5257ebb61","unresolved":false,"context_lines":[{"line_number":41,"context_line":"root of an initialized tree."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"  :code:`npm test`"},{"line_number":44,"context_line":"    This command executes tests, and generates coverage reports."},{"line_number":45,"context_line":"  :code:`npm run lint`"},{"line_number":46,"context_line":"    This command performs codestyle checks against the project."},{"line_number":47,"context_line":"  :code:`npm pack`"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_3cc3d58a","line":44,"in_reply_to":"5a2ca52d_3c4ef06f","updated":"2015-10-16 21:22:16.000000000","message":"I\u0027ll clarify. It\u0027s intended to run \"All available test suites\", given that projects often have very different testing needs.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"2dc2060a4af860ce3cbf0c01170a73308d99fcde","unresolved":false,"context_lines":[{"line_number":53,"context_line":"The following commands are still under discussion:"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  :code:`npm run document`"},{"line_number":56,"context_line":"    This command builds documentation for the project."},{"line_number":57,"context_line":"  :code:`npm run license`"},{"line_number":58,"context_line":"    This command ensures that no incompatible licenses have accidentally been"},{"line_number":59,"context_line":"    included."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_aac3c989","line":56,"updated":"2015-10-12 12:14:47.000000000","message":"How would this documentation be managed and built and where is further discussion happening on how this would work?","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"75c91285499e972d380f8e0ac76b4dc7a5498ffb","unresolved":false,"context_lines":[{"line_number":53,"context_line":"The following commands are still under discussion:"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  :code:`npm run document`"},{"line_number":56,"context_line":"    This command builds documentation for the project."},{"line_number":57,"context_line":"  :code:`npm run license`"},{"line_number":58,"context_line":"    This command ensures that no incompatible licenses have accidentally been"},{"line_number":59,"context_line":"    included."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_fa718578","line":56,"in_reply_to":"7a2fa921_aac3c989","updated":"2015-10-12 17:15:57.000000000","message":"The last discussion that was had on this was in Vancouver, with the discussion being \"Use the tools we already have so we don\u0027t have to rebuild the world.\" Practically speaking, this means we need to figure out how to run sphinx (python) with the jsdoc extension.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"7a9138f8b2bc898eb3987c268ad2e2553ae14df5","unresolved":false,"context_lines":[{"line_number":67,"context_line":"node and npm version"},{"line_number":68,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":69,"context_line":"The available version of node.js is 0.10.29. The available version of npm is"},{"line_number":70,"context_line":"1.4.21. While these versions are no longer supported and significantly lag"},{"line_number":71,"context_line":"the current version, this is a restriction imposed by our package maintainers."},{"line_number":72,"context_line":"Unfortunately, this restriction also prevents us from using npm-based"},{"line_number":73,"context_line":"packages that require a more recent version of npm to install."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_30cc4aba","line":70,"updated":"2015-10-09 12:53:07.000000000","message":"Do we need to encode versions in this document ? Ideally we would not generate a chnage here every time the version is updated ? How often is this expected to change ?","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"c85cef2894e88a9324e83b962e2e2581c3eaa94d","unresolved":false,"context_lines":[{"line_number":67,"context_line":"node and npm version"},{"line_number":68,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":69,"context_line":"The available version of node.js is 0.10.29. The available version of npm is"},{"line_number":70,"context_line":"1.4.21. While these versions are no longer supported and significantly lag"},{"line_number":71,"context_line":"the current version, this is a restriction imposed by our package maintainers."},{"line_number":72,"context_line":"Unfortunately, this restriction also prevents us from using npm-based"},{"line_number":73,"context_line":"packages that require a more recent version of npm to install."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_f8f67bf8","line":70,"in_reply_to":"7a2fa921_30cc4aba","updated":"2015-10-12 13:07:52.000000000","message":"We mention 2.7 and 3.4 in the PTI python document specifically. However, I believe our actual policy on Python versions supported is encoded elsewhere.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4e397572c6a4c8c014f6f809ca20f42b2757806f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"node and npm version"},{"line_number":68,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":69,"context_line":"The available version of node.js is 0.10.29. The available version of npm is"},{"line_number":70,"context_line":"1.4.21. While these versions are no longer supported and significantly lag"},{"line_number":71,"context_line":"the current version, this is a restriction imposed by our package maintainers."},{"line_number":72,"context_line":"Unfortunately, this restriction also prevents us from using npm-based"},{"line_number":73,"context_line":"packages that require a more recent version of npm to install."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_5981a749","line":70,"in_reply_to":"7a2fa921_e3f8fc4b","updated":"2015-10-13 19:41:09.000000000","message":"Agreed (with dtroyer)","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"4c6985e80c019a20d3fdd020d68e775285c80039","unresolved":false,"context_lines":[{"line_number":67,"context_line":"node and npm version"},{"line_number":68,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":69,"context_line":"The available version of node.js is 0.10.29. The available version of npm is"},{"line_number":70,"context_line":"1.4.21. While these versions are no longer supported and significantly lag"},{"line_number":71,"context_line":"the current version, this is a restriction imposed by our package maintainers."},{"line_number":72,"context_line":"Unfortunately, this restriction also prevents us from using npm-based"},{"line_number":73,"context_line":"packages that require a more recent version of npm to install."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_d174b1d0","line":70,"in_reply_to":"7a2fa921_e3f8fc4b","updated":"2015-10-13 19:27:44.000000000","message":"I suspect the versions of node and npm change much more frequently than Python versions, too.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"75c91285499e972d380f8e0ac76b4dc7a5498ffb","unresolved":false,"context_lines":[{"line_number":67,"context_line":"node and npm version"},{"line_number":68,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":69,"context_line":"The available version of node.js is 0.10.29. The available version of npm is"},{"line_number":70,"context_line":"1.4.21. While these versions are no longer supported and significantly lag"},{"line_number":71,"context_line":"the current version, this is a restriction imposed by our package maintainers."},{"line_number":72,"context_line":"Unfortunately, this restriction also prevents us from using npm-based"},{"line_number":73,"context_line":"packages that require a more recent version of npm to install."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_fa1f4507","line":70,"in_reply_to":"7a2fa921_f8f67bf8","updated":"2015-10-12 17:15:57.000000000","message":"So what\u0027s the appropriate language here? \"We support the versions of node.js and npm that are available on common LTS distros\"?","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"b9d182e18be8ce6a5bcc520c011addec1435fc9f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"node and npm version"},{"line_number":68,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":69,"context_line":"The available version of node.js is 0.10.29. The available version of npm is"},{"line_number":70,"context_line":"1.4.21. While these versions are no longer supported and significantly lag"},{"line_number":71,"context_line":"the current version, this is a restriction imposed by our package maintainers."},{"line_number":72,"context_line":"Unfortunately, this restriction also prevents us from using npm-based"},{"line_number":73,"context_line":"packages that require a more recent version of npm to install."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_e3f8fc4b","line":70,"in_reply_to":"7a2fa921_fa1f4507","updated":"2015-10-12 19:09:03.000000000","message":"I think that\u0027s the right idea Michael, or mention the base version if possible.  As Monty noted, we mention Python 2.7, but not Python 2.7.6 at a high level.  Maybe:\n\n\"We support the current versions of node.js and npm available in the LTS releases of X, as of this writing they are node.js 0.10 and npm 1.4.\"","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"dcf72571b5dc3b3d1593ed69970e22736f475251","unresolved":false,"context_lines":[{"line_number":77,"context_line":"   If you would like to assist in upgrading node.js, you can either join the"},{"line_number":78,"context_line":"   Debian effort to test Node.js 4.1.1, or petition the TC to relax the"},{"line_number":79,"context_line":"   tool package requirement for node to instead use a version installed from"},{"line_number":80,"context_line":"   a third-party PPA."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"npm scripts"},{"line_number":83,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_1704667c","line":80,"updated":"2015-10-13 15:25:26.000000000","message":"This does not seem appropriate.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"4c6985e80c019a20d3fdd020d68e775285c80039","unresolved":false,"context_lines":[{"line_number":77,"context_line":"   If you would like to assist in upgrading node.js, you can either join the"},{"line_number":78,"context_line":"   Debian effort to test Node.js 4.1.1, or petition the TC to relax the"},{"line_number":79,"context_line":"   tool package requirement for node to instead use a version installed from"},{"line_number":80,"context_line":"   a third-party PPA."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"npm scripts"},{"line_number":83,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_f143ed6a","line":80,"in_reply_to":"5a2ca52d_1704667c","updated":"2015-10-13 19:27:44.000000000","message":"Agree.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4e397572c6a4c8c014f6f809ca20f42b2757806f","unresolved":false,"context_lines":[{"line_number":77,"context_line":"   If you would like to assist in upgrading node.js, you can either join the"},{"line_number":78,"context_line":"   Debian effort to test Node.js 4.1.1, or petition the TC to relax the"},{"line_number":79,"context_line":"   tool package requirement for node to instead use a version installed from"},{"line_number":80,"context_line":"   a third-party PPA."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"npm scripts"},{"line_number":83,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_d98db77c","line":80,"in_reply_to":"5a2ca52d_1704667c","updated":"2015-10-13 19:41:09.000000000","message":"agreed.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"979374acc486d421145e8247d3da5d0bf0a8b793","unresolved":false,"context_lines":[{"line_number":93,"context_line":"Each project should list its runtime, peer, and development dependencies"},{"line_number":94,"context_line":"in package.json and (if applicable) bower.json. These should never"},{"line_number":95,"context_line":"use fuzzy version matching such as :code:`~1.0.0` or :code:`^1.0.0` as noted"},{"line_number":96,"context_line":"below."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  :code:`dependencies`"},{"line_number":99,"context_line":"    Packages required by your project to run in production. These should"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_3c3830a0","line":96,"updated":"2015-10-14 15:45:14.000000000","message":"Why not?\n\nIf you want to lock down versions, it\u0027s better to use npm shrinkwrap mechanism - it locks down versions of the whole dependency tree (project dependencies may also use fuzzy version matching)","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"1839eec1a3d6a36875fb420c24d173d5257ebb61","unresolved":false,"context_lines":[{"line_number":93,"context_line":"Each project should list its runtime, peer, and development dependencies"},{"line_number":94,"context_line":"in package.json and (if applicable) bower.json. These should never"},{"line_number":95,"context_line":"use fuzzy version matching such as :code:`~1.0.0` or :code:`^1.0.0` as noted"},{"line_number":96,"context_line":"below."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  :code:`dependencies`"},{"line_number":99,"context_line":"    Packages required by your project to run in production. These should"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_5cb3310a","line":96,"in_reply_to":"5a2ca52d_3c3830a0","updated":"2015-10-16 21:22:16.000000000","message":"Because declaring dependencies in two places is silly.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"2773166f989c759e2ef41dcd5fd2b613f2552363","unresolved":false,"context_lines":[{"line_number":93,"context_line":"Each project should list its runtime, peer, and development dependencies"},{"line_number":94,"context_line":"in package.json and (if applicable) bower.json. These should never"},{"line_number":95,"context_line":"use fuzzy version matching such as :code:`~1.0.0` or :code:`^1.0.0` as noted"},{"line_number":96,"context_line":"below."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  :code:`dependencies`"},{"line_number":99,"context_line":"    Packages required by your project to run in production. These should"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a29b11f_d54b2f2a","line":96,"in_reply_to":"5a2ca52d_5cb3310a","updated":"2015-10-19 13:19:43.000000000","message":"Shrinkwrap file is autogenerated - you shouldn\u0027t edit it manually. Using it is actually the only way to ensure build predictability; in Fuel we had to start using it after one day when our build started failing without any changes. That was because a new version of \"tmp\" package was uploaded (it was incompatible with previous version in some way) and some dependency used fuzzy version matching.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"979374acc486d421145e8247d3da5d0bf0a8b793","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"OpenStack requires the custom npm script \u0027lint\u0027 to execute our codestyle"},{"line_number":126,"context_line":"checks. The tool we use is called Eslint, and our rules are published to npm"},{"line_number":127,"context_line":"as eslint-config-openstack_. To initialize your project with these rules,"},{"line_number":128,"context_line":"perform the following steps in your project root."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"First, add eslint and eslint-config-openstack to your project, and initialize"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_3ca270af","line":127,"updated":"2015-10-14 15:45:14.000000000","message":"Is it obligatory for OpenStack projects to use eslint and that config? Can some extra tools (like JSCS, which we use in Fuel) be used?","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"1839eec1a3d6a36875fb420c24d173d5257ebb61","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"OpenStack requires the custom npm script \u0027lint\u0027 to execute our codestyle"},{"line_number":126,"context_line":"checks. The tool we use is called Eslint, and our rules are published to npm"},{"line_number":127,"context_line":"as eslint-config-openstack_. To initialize your project with these rules,"},{"line_number":128,"context_line":"perform the following steps in your project root."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"First, add eslint and eslint-config-openstack to your project, and initialize"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_7ce94db6","line":127,"in_reply_to":"5a2ca52d_3ca270af","updated":"2015-10-16 21:22:16.000000000","message":"The selection of tool discussion was had over the lists some time ago. While JSCS is a neat tool, ESLint does everything that JSCS does, everything that JSHint does, is pluggable, additionally permits rule publishing and reuse, and does all this without being subject to the Do No Evil license that is incompatible with OpenStack\u0027s apache licensing.\n\nNobody\u0027s stopping you from using jscs, mind you, but at this point I\u0027d ask you... why run the same rule twice?","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"2773166f989c759e2ef41dcd5fd2b613f2552363","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"OpenStack requires the custom npm script \u0027lint\u0027 to execute our codestyle"},{"line_number":126,"context_line":"checks. The tool we use is called Eslint, and our rules are published to npm"},{"line_number":127,"context_line":"as eslint-config-openstack_. To initialize your project with these rules,"},{"line_number":128,"context_line":"perform the following steps in your project root."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"First, add eslint and eslint-config-openstack to your project, and initialize"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a29b11f_55887f22","line":127,"in_reply_to":"5a2ca52d_7ce94db6","updated":"2015-10-19 13:19:43.000000000","message":"Well, we started using JSCS before ESLint (we used JSHint before), and I just couldn\u0027t rewrite all the JSCS rules we used - there were quite a few rules which ESLint didn\u0027t support. Probably I should check it again -  ESLint is evolving rapidly.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"e1af68a49976cbae671f999deea9c5ede9c6607e","unresolved":false,"context_lines":[{"line_number":141,"context_line":"      \u0027lint\u0027: \u0027eslint ./\u0027"},{"line_number":142,"context_line":"    },"},{"line_number":143,"context_line":"    ..."},{"line_number":144,"context_line":"  }"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"For more information on how to exclude files, override specific rules, or on"},{"line_number":147,"context_line":"the rules themselves, please visit the `ESLint Project`_. If you\u0027d like to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_0c269468","line":144,"updated":"2015-10-13 16:35:27.000000000","message":"I did not mean to suggest this content be moved to infra-manual, but rather that it be moved to a cookiecutter repo (cookiecutter is language agnostic, however it may be that yeoman is more appropriate).  However, the project creator\u0027s guide in the infra manual definitely should be updated to mention the cookiecutter (or yeoman) template repository -- because it already mentions the existing ones:\n\nhttp://docs.openstack.org/infra/manual/creators.html#preparing-a-new-git-repository-using-cookiecutter","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"dcf72571b5dc3b3d1593ed69970e22736f475251","unresolved":false,"context_lines":[{"line_number":141,"context_line":"      \u0027lint\u0027: \u0027eslint ./\u0027"},{"line_number":142,"context_line":"    },"},{"line_number":143,"context_line":"    ..."},{"line_number":144,"context_line":"  }"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"For more information on how to exclude files, override specific rules, or on"},{"line_number":147,"context_line":"the rules themselves, please visit the `ESLint Project`_. If you\u0027d like to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_37096296","line":144,"updated":"2015-10-13 15:25:26.000000000","message":"This seems to have crossed the threshold from policy to tutorial.\n\nHow about instead of this, we create a javascript project cookiecutter repository and put this boilerplate in it.  Then update the infra manual project creators guide to suggest using the cookiecutter repo.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"1839eec1a3d6a36875fb420c24d173d5257ebb61","unresolved":false,"context_lines":[{"line_number":141,"context_line":"      \u0027lint\u0027: \u0027eslint ./\u0027"},{"line_number":142,"context_line":"    },"},{"line_number":143,"context_line":"    ..."},{"line_number":144,"context_line":"  }"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"For more information on how to exclude files, override specific rules, or on"},{"line_number":147,"context_line":"the rules themselves, please visit the `ESLint Project`_. If you\u0027d like to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_a7b90ece","line":144,"in_reply_to":"5a2ca52d_0c269468","updated":"2015-10-16 21:22:16.000000000","message":"So, here\u0027s an interesting nuance. On one side, preparing a new git repository for infra definitely goes in the infra manual. However, the things you put in the repository above and beyond the basic CTI commands, I feel, are more relevant in the project admin guide here. Do you agree? Perhaps the infra doc should be pared down (reducing the doc load on infra) and the appropriate pieces be moved to the docs team, perhaps as a followup to https://review.openstack.org/#/c/236076/","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"d9e3e705c6263ae4459bb3ae2e41b72169f99fe5","unresolved":false,"context_lines":[{"line_number":141,"context_line":"      \u0027lint\u0027: \u0027eslint ./\u0027"},{"line_number":142,"context_line":"    },"},{"line_number":143,"context_line":"    ..."},{"line_number":144,"context_line":"  }"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"For more information on how to exclude files, override specific rules, or on"},{"line_number":147,"context_line":"the rules themselves, please visit the `ESLint Project`_. If you\u0027d like to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_3df38175","line":144,"in_reply_to":"5a2ca52d_37096296","updated":"2015-10-13 16:17:56.000000000","message":"Discussions with fungi suggest that the infra manual may not be the best place for this, and that the project team guide be a better location.\n\nThe javascript equivalent to cookiecutter is yeoman. I\u0027d love to put together a template for that, as time permits.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"2dc2060a4af860ce3cbf0c01170a73308d99fcde","unresolved":false,"context_lines":[{"line_number":146,"context_line":"For more information on how to exclude files, override specific rules, or on"},{"line_number":147,"context_line":"the rules themselves, please visit the `ESLint Project`_. If you\u0027d like to"},{"line_number":148,"context_line":"contribute to OpenStack\u0027s ESLint rules, you may do so at"},{"line_number":149,"context_line":"`eslint-config-openstack`_."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Executing Tests and Code Coverage"},{"line_number":152,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_2a2b3935","line":149,"updated":"2015-10-12 12:14:47.000000000","message":"Would it be worth providing a link here to eslint for ease of finding the tool for brief scanning for those interested?","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"75c91285499e972d380f8e0ac76b4dc7a5498ffb","unresolved":false,"context_lines":[{"line_number":146,"context_line":"For more information on how to exclude files, override specific rules, or on"},{"line_number":147,"context_line":"the rules themselves, please visit the `ESLint Project`_. If you\u0027d like to"},{"line_number":148,"context_line":"contribute to OpenStack\u0027s ESLint rules, you may do so at"},{"line_number":149,"context_line":"`eslint-config-openstack`_."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Executing Tests and Code Coverage"},{"line_number":152,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_da1609f1","line":149,"in_reply_to":"7a2fa921_2a2b3935","updated":"2015-10-12 17:15:57.000000000","message":"I did. See `ESLint Project`_","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"60f54384743dc90794076972a94297926398aac1","unresolved":false,"context_lines":[{"line_number":146,"context_line":"For more information on how to exclude files, override specific rules, or on"},{"line_number":147,"context_line":"the rules themselves, please visit the `ESLint Project`_. If you\u0027d like to"},{"line_number":148,"context_line":"contribute to OpenStack\u0027s ESLint rules, you may do so at"},{"line_number":149,"context_line":"`eslint-config-openstack`_."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Executing Tests and Code Coverage"},{"line_number":152,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_1a3c812e","line":149,"in_reply_to":"7a2fa921_da1609f1","updated":"2015-10-12 17:18:46.000000000","message":"Ah my bad, thank you!","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"dcf72571b5dc3b3d1593ed69970e22736f475251","unresolved":false,"context_lines":[{"line_number":197,"context_line":"      \u0027lib/*.js\u0027"},{"line_number":198,"context_line":"    ],"},{"line_number":199,"context_line":"    ..."},{"line_number":200,"context_line":"  }"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"All packages should include:"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_d7fd8e6f","line":200,"updated":"2015-10-13 15:25:26.000000000","message":"This could go in cookiecutter.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"e1af68a49976cbae671f999deea9c5ede9c6607e","unresolved":false,"context_lines":[{"line_number":215,"context_line":"   downloads this tarball, and executes"},{"line_number":216,"context_line":"   :code:`npm publish \u003ctarball\u003e --ignore-scripts`. This intentionally separates"},{"line_number":217,"context_line":"   the packaging and publishing steps of our release to run on separate build"},{"line_number":218,"context_line":"   instances, the latter of which is privileged."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"Generate Documentation"},{"line_number":221,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_2c2b5032","line":218,"updated":"2015-10-13 16:35:27.000000000","message":"Sure, documenting it is great, but I don\u0027t think this is something the TC needs to vote on.  I think this would be a really good addition to the (currently very thin) Project Driver\u0027s Guide in the infra manual.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"dcf72571b5dc3b3d1593ed69970e22736f475251","unresolved":false,"context_lines":[{"line_number":215,"context_line":"   downloads this tarball, and executes"},{"line_number":216,"context_line":"   :code:`npm publish \u003ctarball\u003e --ignore-scripts`. This intentionally separates"},{"line_number":217,"context_line":"   the packaging and publishing steps of our release to run on separate build"},{"line_number":218,"context_line":"   instances, the latter of which is privileged."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"Generate Documentation"},{"line_number":221,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_f7020a6f","line":218,"updated":"2015-10-13 15:25:26.000000000","message":"This is true, but is it necessary to be in this policy document?","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"1839eec1a3d6a36875fb420c24d173d5257ebb61","unresolved":false,"context_lines":[{"line_number":215,"context_line":"   downloads this tarball, and executes"},{"line_number":216,"context_line":"   :code:`npm publish \u003ctarball\u003e --ignore-scripts`. This intentionally separates"},{"line_number":217,"context_line":"   the packaging and publishing steps of our release to run on separate build"},{"line_number":218,"context_line":"   instances, the latter of which is privileged."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"Generate Documentation"},{"line_number":221,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_07bfa2aa","line":218,"in_reply_to":"5a2ca52d_2c2b5032","updated":"2015-10-16 21:22:16.000000000","message":"Fair point on the vote.\n\nI\u0027m a little confused by the duplication between the Project Setup Guide and the Project Driver\u0027s Guide - they both seem to have information about branch management, for example. In the interest of keeping all the information in one place, perhaps they should be consolidated?","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"d9e3e705c6263ae4459bb3ae2e41b72169f99fe5","unresolved":false,"context_lines":[{"line_number":215,"context_line":"   downloads this tarball, and executes"},{"line_number":216,"context_line":"   :code:`npm publish \u003ctarball\u003e --ignore-scripts`. This intentionally separates"},{"line_number":217,"context_line":"   the packaging and publishing steps of our release to run on separate build"},{"line_number":218,"context_line":"   instances, the latter of which is privileged."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"Generate Documentation"},{"line_number":221,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_d8561b06","line":218,"in_reply_to":"5a2ca52d_f7020a6f","updated":"2015-10-13 16:17:56.000000000","message":"Maybe? Maybe not? Personally, I like documentation that explains why the policies are in place, because it reduces the amount of knowledge held only in the brains of the infra team.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"b9d182e18be8ce6a5bcc520c011addec1435fc9f","unresolved":false,"context_lines":[{"line_number":256,"context_line":"This section in particular addresses gulp, grunt, and similar build"},{"line_number":257,"context_line":"tools that aim to be the collect all build steps under one roof. While"},{"line_number":258,"context_line":"useful, they often achieve this by wrapping a tool that already exists, while"},{"line_number":259,"context_line":"also dependencies of their own. In order to avoid this bloat - and avoid"},{"line_number":260,"context_line":"potential dependency version mismatch that may occur - it is usually far"},{"line_number":261,"context_line":"easier to use the tool directly, than try to maintain the additional"},{"line_number":262,"context_line":"abstraction layer."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_23f59482","line":259,"updated":"2015-10-12 19:09:03.000000000","message":"also adding...","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"979374acc486d421145e8247d3da5d0bf0a8b793","unresolved":false,"context_lines":[{"line_number":259,"context_line":"also dependencies of their own. In order to avoid this bloat - and avoid"},{"line_number":260,"context_line":"potential dependency version mismatch that may occur - it is usually far"},{"line_number":261,"context_line":"easier to use the tool directly, than try to maintain the additional"},{"line_number":262,"context_line":"abstraction layer."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Examples:"},{"line_number":265,"context_line":"* Use :code:`eslint` instead of :code:`gulp-eslint`"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_bc552051","line":262,"updated":"2015-10-14 15:45:14.000000000","message":"That\u0027s not always true: ...","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"1839eec1a3d6a36875fb420c24d173d5257ebb61","unresolved":false,"context_lines":[{"line_number":259,"context_line":"also dependencies of their own. In order to avoid this bloat - and avoid"},{"line_number":260,"context_line":"potential dependency version mismatch that may occur - it is usually far"},{"line_number":261,"context_line":"easier to use the tool directly, than try to maintain the additional"},{"line_number":262,"context_line":"abstraction layer."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Examples:"},{"line_number":265,"context_line":"* Use :code:`eslint` instead of :code:`gulp-eslint`"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_873df2de","line":262,"in_reply_to":"5a2ca52d_bc552051","updated":"2015-10-16 21:22:16.000000000","message":"More details here: https://review.openstack.org/#/c/236076/","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"979374acc486d421145e8247d3da5d0bf0a8b793","unresolved":false,"context_lines":[{"line_number":262,"context_line":"abstraction layer."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Examples:"},{"line_number":265,"context_line":"* Use :code:`eslint` instead of :code:`gulp-eslint`"},{"line_number":266,"context_line":"* Use :code:`karma` instead of :code:`grunt-karma`"},{"line_number":267,"context_line":"* Use :code:`webpack` instead of :code:`gulp-webpack`"},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_5cf2cc70","line":265,"updated":"2015-10-14 15:45:14.000000000","message":"...eslint may have different rulesets for different environments: one for in-browser code, one for unit tests, one for functional tests...","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"1839eec1a3d6a36875fb420c24d173d5257ebb61","unresolved":false,"context_lines":[{"line_number":262,"context_line":"abstraction layer."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Examples:"},{"line_number":265,"context_line":"* Use :code:`eslint` instead of :code:`gulp-eslint`"},{"line_number":266,"context_line":"* Use :code:`karma` instead of :code:`grunt-karma`"},{"line_number":267,"context_line":"* Use :code:`webpack` instead of :code:`gulp-webpack`"},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_6711b65c","line":265,"in_reply_to":"5a2ca52d_5cf2cc70","updated":"2015-10-16 21:22:16.000000000","message":"You can put .eslintrc files into subdirectories, and the configurations will be appropriately inherited. Combined with .eslintignore, you can create very fine-tuned linting rules for your project.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"979374acc486d421145e8247d3da5d0bf0a8b793","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Examples:"},{"line_number":265,"context_line":"* Use :code:`eslint` instead of :code:`gulp-eslint`"},{"line_number":266,"context_line":"* Use :code:`karma` instead of :code:`grunt-karma`"},{"line_number":267,"context_line":"* Use :code:`webpack` instead of :code:`gulp-webpack`"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Do Not Minify"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_3c327011","line":266,"updated":"2015-10-14 15:45:14.000000000","message":"...karma may also require some extra js code: https://github.com/webpack/karma-webpack#alternative-usage","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"979374acc486d421145e8247d3da5d0bf0a8b793","unresolved":false,"context_lines":[{"line_number":264,"context_line":"Examples:"},{"line_number":265,"context_line":"* Use :code:`eslint` instead of :code:`gulp-eslint`"},{"line_number":266,"context_line":"* Use :code:`karma` instead of :code:`grunt-karma`"},{"line_number":267,"context_line":"* Use :code:`webpack` instead of :code:`gulp-webpack`"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Do Not Minify"},{"line_number":270,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_9ca62452","line":267,"updated":"2015-10-14 15:45:14.000000000","message":"...same applies for webpack - there can be one base config, one for production builds, one for development builds and dev-server (add plugins, enable hot-reloading, etc.)\n\nSo I think only npm-based interface (npm test, npm pack, etc.) should be mandatory, and these npm scripts can run these tools directly or use any other wrappers if needed","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"1839eec1a3d6a36875fb420c24d173d5257ebb61","unresolved":false,"context_lines":[{"line_number":264,"context_line":"Examples:"},{"line_number":265,"context_line":"* Use :code:`eslint` instead of :code:`gulp-eslint`"},{"line_number":266,"context_line":"* Use :code:`karma` instead of :code:`grunt-karma`"},{"line_number":267,"context_line":"* Use :code:`webpack` instead of :code:`gulp-webpack`"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Do Not Minify"},{"line_number":270,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_820ba023","line":267,"in_reply_to":"5a2ca52d_9ca62452","updated":"2015-10-16 21:22:16.000000000","message":"This entire section has been moved out of this document to https://review.openstack.org/#/c/236076/, please move the discussion there.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"dcf72571b5dc3b3d1593ed69970e22736f475251","unresolved":false,"context_lines":[{"line_number":293,"context_line":"freenode in #openstack-infra."},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"Frequently Asked Questions"},{"line_number":296,"context_line":"--------------------------"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"I am attempting to install node on ubuntu"},{"line_number":299,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_97f8767e","line":296,"updated":"2015-10-13 15:25:26.000000000","message":"This section does not seem like a policy, so should be removed.  Potentially this could go in a javascript section of the infra manual.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"e1af68a49976cbae671f999deea9c5ede9c6607e","unresolved":false,"context_lines":[{"line_number":293,"context_line":"freenode in #openstack-infra."},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"Frequently Asked Questions"},{"line_number":296,"context_line":"--------------------------"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"I am attempting to install node on ubuntu"},{"line_number":299,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_cc209c4c","line":296,"updated":"2015-10-13 16:35:27.000000000","message":"You mean the project team guide?  Sure, but then we should move the Python Developer\u0027s Guide from the infra manual there too:\n\nhttp://docs.openstack.org/infra/manual/python.html#running-python-unit-tests\n\nIt seems similar in spirit to what\u0027s happening here.  I don\u0027t have a strong opinion on which place they should live, but I do think they should live together.","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"d9e3e705c6263ae4459bb3ae2e41b72169f99fe5","unresolved":false,"context_lines":[{"line_number":293,"context_line":"freenode in #openstack-infra."},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"Frequently Asked Questions"},{"line_number":296,"context_line":"--------------------------"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"I am attempting to install node on ubuntu"},{"line_number":299,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_b8931fa3","line":296,"in_reply_to":"5a2ca52d_97f8767e","updated":"2015-10-13 16:17:56.000000000","message":"I can also see the entire Best Practice section being moved to the project guide. Thoughts?","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"1839eec1a3d6a36875fb420c24d173d5257ebb61","unresolved":false,"context_lines":[{"line_number":293,"context_line":"freenode in #openstack-infra."},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"Frequently Asked Questions"},{"line_number":296,"context_line":"--------------------------"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"I am attempting to install node on ubuntu"},{"line_number":299,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a2ca52d_a229fc8b","line":296,"in_reply_to":"5a2ca52d_cc209c4c","updated":"2015-10-16 21:22:16.000000000","message":"I agree. Maybe as a followup to https://review.openstack.org/#/c/236076/ ?","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"}],"reference/cti/python_cti.rst":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"b9d182e18be8ce6a5bcc520c011addec1435fc9f","unresolved":false,"context_lines":[{"line_number":94,"context_line":"handled by pbr."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":".mailmap files should exist where a developer has more than one email address"},{"line_number":97,"context_line":"or identity, and should map to the developer\u0027s canonical identity."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Translations"},{"line_number":100,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_433a10e9","line":97,"updated":"2015-10-12 19:09:03.000000000","message":"Which identity is this meant to be?  LaunchPad? or the upcoming OpenStackId?  Or just developer preference?\n\nEdit: I see now this is just moved text so maybe answering this is for another review...","commit_id":"b62183388b1aadb0a511fbb9b1e2fdf8afc5c96d"}]}
