)]}'
{"docker/gitea/custom/templates/home.tmpl":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"fac12e1500cf904cd6c9536d41e132f90dd8d660","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        \u003cdiv class\u003d\"ui stackable middle very relaxed page grid\"\u003e"},{"line_number":28,"context_line":"                \u003cdiv class\u003d\"sixteen wide left aligned centered column\"\u003e"},{"line_number":29,"context_line":"                    \u003ch2 id\u003d\"what-is-opendev\"\u003eWhat is Opendev?\u003c/h2\u003e"},{"line_number":30,"context_line":"                        \u003cp\u003eOpenDev is a space for collaborative Open Source software development. It offers a number of services to allow teams of contributors to openly collaborate, at a huge scale. While it offers a number of peripheral collaboration services (like an etherpad instance for collaborative text edition), it\u0027s centered around code hosting, code review and continuous integration. To that effect, it integrates open source solutions like git, gitea, Gerrit and Zuul. The Opendev community openly operates the Opendev services, through CI/CD driven from Opendev itself.\u003c/p\u003e"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"                    \u003ch2 id\u003d\"opendev-is-different\"\u003eHow is development different with Opendev\u003c/h2\u003e"},{"line_number":33,"context_line":"                        \u003cp\u003eOpendev is not using GitHub or Gitlab, so the workflows are slightly different. While GitHub (and Gitlab) follow a pull-request workflow, Gerrit (and therefore Opendev) follow a change proposal workflow, comparable to that of the Linux kernel.\u003c/p\u003e"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"9f560f44_4abc3aba","line":30,"range":{"start_line":30,"start_character":454,"end_line":30,"end_character":464},"updated":"2020-08-26 19:24:33.000000000","message":"Should this be \"Git, Gitea,\"?","commit_id":"8a61a568429a7c3a1049031292007e982ace48d6"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"199e5d58b8d4e55e324251b50c28cbfc5b11a4b0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"software development. It offers a number of services to allow teams of"},{"line_number":32,"context_line":"contributors to openly collaborate, at a huge scale. While it offers a"},{"line_number":33,"context_line":"number of peripheral collaboration services (like an etherpad instance for"},{"line_number":34,"context_line":"collaborative text edition), it\u0027s centered around code hosting, code review"},{"line_number":35,"context_line":"and continuous integration. To that effect, it integrates open source"},{"line_number":36,"context_line":"solutions like Git, Gitea, Gerrit and Zuul. The Opendev community openly"},{"line_number":37,"context_line":"operates the Opendev services, through CI/CD driven from Opendev itself.\u003c/p\u003e"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_e5909cf0","line":34,"range":{"start_line":34,"start_character":19,"end_line":34,"end_character":26},"updated":"2020-09-01 00:54:03.000000000","message":"editing","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"199e5d58b8d4e55e324251b50c28cbfc5b11a4b0","unresolved":false,"context_lines":[{"line_number":32,"context_line":"contributors to openly collaborate, at a huge scale. While it offers a"},{"line_number":33,"context_line":"number of peripheral collaboration services (like an etherpad instance for"},{"line_number":34,"context_line":"collaborative text edition), it\u0027s centered around code hosting, code review"},{"line_number":35,"context_line":"and continuous integration. To that effect, it integrates open source"},{"line_number":36,"context_line":"solutions like Git, Gitea, Gerrit and Zuul. The Opendev community openly"},{"line_number":37,"context_line":"operates the Opendev services, through CI/CD driven from Opendev itself.\u003c/p\u003e"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"                \u003ch2 id\u003d\"opendev-is-different\"\u003eHow is development different with Opendev\u003c/h2\u003e"},{"line_number":40,"context_line":"                    \u003cp\u003eOpendev is not using GitHub or Gitlab, so the"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_65b64c8d","line":37,"range":{"start_line":35,"start_character":28,"end_line":37,"end_character":72},"updated":"2020-09-01 00:54:03.000000000","message":"This paragraph feels a bit like burying the lede, as they say.  I think it should say the major services first, then mentioned the \"minor\" ones.","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"a07798a6b63667e94c6bcb58d46127bff01527f1","unresolved":false,"context_lines":[{"line_number":32,"context_line":"contributors to openly collaborate, at a huge scale. While it offers a"},{"line_number":33,"context_line":"number of peripheral collaboration services (like an etherpad instance for"},{"line_number":34,"context_line":"collaborative text edition), it\u0027s centered around code hosting, code review"},{"line_number":35,"context_line":"and continuous integration. To that effect, it integrates open source"},{"line_number":36,"context_line":"solutions like Git, Gitea, Gerrit and Zuul. The Opendev community openly"},{"line_number":37,"context_line":"operates the Opendev services, through CI/CD driven from Opendev itself.\u003c/p\u003e"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"                \u003ch2 id\u003d\"opendev-is-different\"\u003eHow is development different with Opendev\u003c/h2\u003e"},{"line_number":40,"context_line":"                    \u003cp\u003eOpendev is not using GitHub or Gitlab, so the"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_d161d1d5","line":37,"range":{"start_line":35,"start_character":28,"end_line":37,"end_character":72},"in_reply_to":"9f560f44_65b64c8d","updated":"2020-09-01 12:54:09.000000000","message":"OK, I gave it a shot, let me know if that works, and if it does not, suggest an alternate wording.","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"199e5d58b8d4e55e324251b50c28cbfc5b11a4b0","unresolved":false,"context_lines":[{"line_number":66,"context_line":"reviewers understand the proposed change. It generally results in easier"},{"line_number":67,"context_line":"code review, and a cleaner git log as meaningful commit messages are"},{"line_number":68,"context_line":"reviewed as part of the change.\u003c/p\u003e"},{"line_number":69,"context_line":"                    \u003cp\u003eThe main drawback of the Gerrit workflow is that its"},{"line_number":70,"context_line":"principles and UI are different from the GitHub workflow, so it is not"},{"line_number":71,"context_line":"immediately familiar to developers already exposed to the GitHub workflow."},{"line_number":72,"context_line":"But the long-term benefits should outweigh the short-term drawback of having"},{"line_number":73,"context_line":"to learn a new tool, especially if you are going to spend a lot of time"},{"line_number":74,"context_line":"developing for that project anyway.\u003c/p\u003e"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"                \u003ch2 id\u003d\"integrated-ci\"\u003eIntegrated Continuous Integration\u003c/h2\u003e"},{"line_number":77,"context_line":"                    \u003cp\u003eOne key benefit of Opendev is that it integrates"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_a5afc429","line":74,"range":{"start_line":69,"start_character":23,"end_line":74,"end_character":35},"updated":"2020-09-01 00:54:03.000000000","message":"I wouldn\u0027t self-deprecate, TBH.  I can\u0027t image github will have any documentation saying \"github does it like this, but other systems have advantages too\" :)","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"a07798a6b63667e94c6bcb58d46127bff01527f1","unresolved":false,"context_lines":[{"line_number":66,"context_line":"reviewers understand the proposed change. It generally results in easier"},{"line_number":67,"context_line":"code review, and a cleaner git log as meaningful commit messages are"},{"line_number":68,"context_line":"reviewed as part of the change.\u003c/p\u003e"},{"line_number":69,"context_line":"                    \u003cp\u003eThe main drawback of the Gerrit workflow is that its"},{"line_number":70,"context_line":"principles and UI are different from the GitHub workflow, so it is not"},{"line_number":71,"context_line":"immediately familiar to developers already exposed to the GitHub workflow."},{"line_number":72,"context_line":"But the long-term benefits should outweigh the short-term drawback of having"},{"line_number":73,"context_line":"to learn a new tool, especially if you are going to spend a lot of time"},{"line_number":74,"context_line":"developing for that project anyway.\u003c/p\u003e"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"                \u003ch2 id\u003d\"integrated-ci\"\u003eIntegrated Continuous Integration\u003c/h2\u003e"},{"line_number":77,"context_line":"                    \u003cp\u003eOne key benefit of Opendev is that it integrates"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_719285a1","line":74,"range":{"start_line":69,"start_character":23,"end_line":74,"end_character":35},"in_reply_to":"9f560f44_a5afc429","updated":"2020-09-01 12:54:09.000000000","message":"Sure, but we are not a commercial service either. The goal here is to present how and why it\u0027s different, not hide the truth to gain users.","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"199e5d58b8d4e55e324251b50c28cbfc5b11a4b0","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                \u003ch2 id\u003d\"integrated-ci\"\u003eIntegrated Continuous Integration\u003c/h2\u003e"},{"line_number":77,"context_line":"                    \u003cp\u003eOne key benefit of Opendev is that it integrates"},{"line_number":78,"context_line":"powerful continuous integration features, thanks to our infrastructure"},{"line_number":79,"context_line":"sponsors donating compute resources making it possible. Test jobs can be"},{"line_number":80,"context_line":"run when changes are proposed, to provide code reviewers with valuable"},{"line_number":81,"context_line":"information. Test jobs also run again at merge-time, in case recently-approved"},{"line_number":82,"context_line":"changes introduce an incompatibility. This, combined with the fact that"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_656becf0","line":79,"range":{"start_line":79,"start_character":66,"end_line":79,"end_character":72},"updated":"2020-09-01 00:54:03.000000000","message":"\"are run\"","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"199e5d58b8d4e55e324251b50c28cbfc5b11a4b0","unresolved":false,"context_lines":[{"line_number":74,"context_line":"developing for that project anyway.\u003c/p\u003e"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"                \u003ch2 id\u003d\"integrated-ci\"\u003eIntegrated Continuous Integration\u003c/h2\u003e"},{"line_number":77,"context_line":"                    \u003cp\u003eOne key benefit of Opendev is that it integrates"},{"line_number":78,"context_line":"powerful continuous integration features, thanks to our infrastructure"},{"line_number":79,"context_line":"sponsors donating compute resources making it possible. Test jobs can be"},{"line_number":80,"context_line":"run when changes are proposed, to provide code reviewers with valuable"},{"line_number":81,"context_line":"information. Test jobs also run again at merge-time, in case recently-approved"},{"line_number":82,"context_line":"changes introduce an incompatibility. This, combined with the fact that"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_c5a63854","line":79,"range":{"start_line":77,"start_character":23,"end_line":79,"end_character":55},"updated":"2020-09-01 00:54:03.000000000","message":"... features made possible by the donation of compute resources from infrastructure partners.","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"a07798a6b63667e94c6bcb58d46127bff01527f1","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                \u003ch2 id\u003d\"integrated-ci\"\u003eIntegrated Continuous Integration\u003c/h2\u003e"},{"line_number":77,"context_line":"                    \u003cp\u003eOne key benefit of Opendev is that it integrates"},{"line_number":78,"context_line":"powerful continuous integration features, thanks to our infrastructure"},{"line_number":79,"context_line":"sponsors donating compute resources making it possible. Test jobs can be"},{"line_number":80,"context_line":"run when changes are proposed, to provide code reviewers with valuable"},{"line_number":81,"context_line":"information. Test jobs also run again at merge-time, in case recently-approved"},{"line_number":82,"context_line":"changes introduce an incompatibility. This, combined with the fact that"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_71d72551","line":79,"range":{"start_line":79,"start_character":66,"end_line":79,"end_character":72},"in_reply_to":"9f560f44_656becf0","updated":"2020-09-01 12:54:09.000000000","message":"Done","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"a07798a6b63667e94c6bcb58d46127bff01527f1","unresolved":false,"context_lines":[{"line_number":74,"context_line":"developing for that project anyway.\u003c/p\u003e"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"                \u003ch2 id\u003d\"integrated-ci\"\u003eIntegrated Continuous Integration\u003c/h2\u003e"},{"line_number":77,"context_line":"                    \u003cp\u003eOne key benefit of Opendev is that it integrates"},{"line_number":78,"context_line":"powerful continuous integration features, thanks to our infrastructure"},{"line_number":79,"context_line":"sponsors donating compute resources making it possible. Test jobs can be"},{"line_number":80,"context_line":"run when changes are proposed, to provide code reviewers with valuable"},{"line_number":81,"context_line":"information. Test jobs also run again at merge-time, in case recently-approved"},{"line_number":82,"context_line":"changes introduce an incompatibility. This, combined with the fact that"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_91dab976","line":79,"range":{"start_line":77,"start_character":23,"end_line":79,"end_character":55},"in_reply_to":"9f560f44_c5a63854","updated":"2020-09-01 12:54:09.000000000","message":"Done","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"199e5d58b8d4e55e324251b50c28cbfc5b11a4b0","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                    \u003cp\u003eOne key benefit of Opendev is that it integrates"},{"line_number":78,"context_line":"powerful continuous integration features, thanks to our infrastructure"},{"line_number":79,"context_line":"sponsors donating compute resources making it possible. Test jobs can be"},{"line_number":80,"context_line":"run when changes are proposed, to provide code reviewers with valuable"},{"line_number":81,"context_line":"information. Test jobs also run again at merge-time, in case recently-approved"},{"line_number":82,"context_line":"changes introduce an incompatibility. This, combined with the fact that"},{"line_number":83,"context_line":"changes must pass tests before they can be approved, allows to prevent"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_457068dd","line":80,"range":{"start_line":80,"start_character":29,"end_line":80,"end_character":35},"updated":"2020-09-01 00:54:03.000000000","message":"\"and\"","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"a07798a6b63667e94c6bcb58d46127bff01527f1","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                    \u003cp\u003eOne key benefit of Opendev is that it integrates"},{"line_number":78,"context_line":"powerful continuous integration features, thanks to our infrastructure"},{"line_number":79,"context_line":"sponsors donating compute resources making it possible. Test jobs can be"},{"line_number":80,"context_line":"run when changes are proposed, to provide code reviewers with valuable"},{"line_number":81,"context_line":"information. Test jobs also run again at merge-time, in case recently-approved"},{"line_number":82,"context_line":"changes introduce an incompatibility. This, combined with the fact that"},{"line_number":83,"context_line":"changes must pass tests before they can be approved, allows to prevent"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_b1e1bd2d","line":80,"range":{"start_line":80,"start_character":29,"end_line":80,"end_character":35},"in_reply_to":"9f560f44_457068dd","updated":"2020-09-01 12:54:09.000000000","message":"Done","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"199e5d58b8d4e55e324251b50c28cbfc5b11a4b0","unresolved":false,"context_lines":[{"line_number":80,"context_line":"run when changes are proposed, to provide code reviewers with valuable"},{"line_number":81,"context_line":"information. Test jobs also run again at merge-time, in case recently-approved"},{"line_number":82,"context_line":"changes introduce an incompatibility. This, combined with the fact that"},{"line_number":83,"context_line":"changes must pass tests before they can be approved, allows to prevent"},{"line_number":84,"context_line":"merging broken code.\u003c/p\u003e"},{"line_number":85,"context_line":"                    \u003cp\u003eAdvanced Zuul features like speculative execution of"},{"line_number":86,"context_line":"tests allows to evaluate changes in parallel, so development velocity is"},{"line_number":87,"context_line":"never limited by how thorough you want your tests to be. Changes in one git"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_a574e4d1","line":84,"range":{"start_line":83,"start_character":53,"end_line":84,"end_character":20},"updated":"2020-09-01 00:54:03.000000000","message":"prevents merging broken code","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"a07798a6b63667e94c6bcb58d46127bff01527f1","unresolved":false,"context_lines":[{"line_number":80,"context_line":"run when changes are proposed, to provide code reviewers with valuable"},{"line_number":81,"context_line":"information. Test jobs also run again at merge-time, in case recently-approved"},{"line_number":82,"context_line":"changes introduce an incompatibility. This, combined with the fact that"},{"line_number":83,"context_line":"changes must pass tests before they can be approved, allows to prevent"},{"line_number":84,"context_line":"merging broken code.\u003c/p\u003e"},{"line_number":85,"context_line":"                    \u003cp\u003eAdvanced Zuul features like speculative execution of"},{"line_number":86,"context_line":"tests allows to evaluate changes in parallel, so development velocity is"},{"line_number":87,"context_line":"never limited by how thorough you want your tests to be. Changes in one git"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_51cae1a0","line":84,"range":{"start_line":83,"start_character":53,"end_line":84,"end_character":20},"in_reply_to":"9f560f44_a574e4d1","updated":"2020-09-01 12:54:09.000000000","message":"Done","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"199e5d58b8d4e55e324251b50c28cbfc5b11a4b0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"changes must pass tests before they can be approved, allows to prevent"},{"line_number":84,"context_line":"merging broken code.\u003c/p\u003e"},{"line_number":85,"context_line":"                    \u003cp\u003eAdvanced Zuul features like speculative execution of"},{"line_number":86,"context_line":"tests allows to evaluate changes in parallel, so development velocity is"},{"line_number":87,"context_line":"never limited by how thorough you want your tests to be. Changes in one git"},{"line_number":88,"context_line":"repository can depend on proposed changes in another repository, allowing"},{"line_number":89,"context_line":"integration testing of features actively developed across multiple projects,"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_e57edcad","line":86,"range":{"start_line":86,"start_character":13,"end_line":86,"end_character":44},"updated":"2020-09-01 00:54:03.000000000","message":"changes to test in parallel","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"a07798a6b63667e94c6bcb58d46127bff01527f1","unresolved":false,"context_lines":[{"line_number":83,"context_line":"changes must pass tests before they can be approved, allows to prevent"},{"line_number":84,"context_line":"merging broken code.\u003c/p\u003e"},{"line_number":85,"context_line":"                    \u003cp\u003eAdvanced Zuul features like speculative execution of"},{"line_number":86,"context_line":"tests allows to evaluate changes in parallel, so development velocity is"},{"line_number":87,"context_line":"never limited by how thorough you want your tests to be. Changes in one git"},{"line_number":88,"context_line":"repository can depend on proposed changes in another repository, allowing"},{"line_number":89,"context_line":"integration testing of features actively developed across multiple projects,"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_91c3d98a","line":86,"range":{"start_line":86,"start_character":13,"end_line":86,"end_character":44},"in_reply_to":"9f560f44_e57edcad","updated":"2020-09-01 12:54:09.000000000","message":"Done","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"199e5d58b8d4e55e324251b50c28cbfc5b11a4b0","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                    \u003cp\u003eThis advanced continuous integration system was"},{"line_number":92,"context_line":"developed to sustain the complexity and scale of OpenStack development, one"},{"line_number":93,"context_line":"of the 3 most actively developed open source projects in the world. Opendev"},{"line_number":94,"context_line":"makes this system available to other projects. It is much more advanced and"},{"line_number":95,"context_line":"unlimited than GitHub actions or Gitlab CI features, and is one key benefit"},{"line_number":96,"context_line":"of Opendev -- supporting open development at a huge scale.\u003c/p\u003e"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"                \u003ch2 id\u003d\"free-tools\"\u003eFree software needs free tools\u003c/h2\u003e"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_65392cf1","line":95,"range":{"start_line":94,"start_character":47,"end_line":95,"end_character":51},"updated":"2020-09-01 00:54:03.000000000","message":"I don\u0027t quite know about saying this ... it\u0027s different for sure.\n\nOne thing I might call out instead is that it is based on Ansible.  When you write github actions, you\u0027re writing a bunch of custom stuff to run in github with little chance of reuse (maybe, at best you stick stuff into a shell script and call that).  Ansible is really guiding you to write generic and reusable roles.","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"a07798a6b63667e94c6bcb58d46127bff01527f1","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                    \u003cp\u003eThis advanced continuous integration system was"},{"line_number":92,"context_line":"developed to sustain the complexity and scale of OpenStack development, one"},{"line_number":93,"context_line":"of the 3 most actively developed open source projects in the world. Opendev"},{"line_number":94,"context_line":"makes this system available to other projects. It is much more advanced and"},{"line_number":95,"context_line":"unlimited than GitHub actions or Gitlab CI features, and is one key benefit"},{"line_number":96,"context_line":"of Opendev -- supporting open development at a huge scale.\u003c/p\u003e"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"                \u003ch2 id\u003d\"free-tools\"\u003eFree software needs free tools\u003c/h2\u003e"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_31448d1b","line":95,"range":{"start_line":94,"start_character":47,"end_line":95,"end_character":51},"in_reply_to":"9f560f44_65392cf1","updated":"2020-09-01 12:54:09.000000000","message":"Agree that we could mention Ansible somewhere here, but that may be suggested as a subsequent change.","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"199e5d58b8d4e55e324251b50c28cbfc5b11a4b0","unresolved":false,"context_lines":[{"line_number":122,"context_line":"available. But it\u0027s worth it, especially if you want to have a say on what"},{"line_number":123,"context_line":"services are provided, or just support the idea of improving open source"},{"line_number":124,"context_line":"tools in that space.\u003c/p\u003e"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"                \u003ch2 id\u003d\"faq\"\u003eFAQ\u003c/h2\u003e"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"                    \u003ch3 id\u003d\"isnt-this-just-openstack-infrastructure-rebranded\"\u003eIsn’t this just OpenStack Infrastructure rebranded?\u003c/h3\u003e"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_089e85b7","line":125,"updated":"2020-09-01 00:54:03.000000000","message":"Honestly I might put this right at the top.  I feel like it is not getting through.\n\nI was incredibly disheartened to see a tweet like\n\nhttps://twitter.com/VictorStinner/status/1299294981623078918?s\u003d20\n\nthat seems to have been in response to flared tempers over the recent mess with telemetry or whatever.  \n\nAnyone can git push/pull anywhere and that\u0027s not where time is spent these days.  It\u0027s developer effort put into everything around that; workflows, CI, CD, release pipelines, etc. etc.  \n\nIt\u0027s one thing to turn a blind eye to buliding workflows around github actions + travisci (running everything on aws and azure).  I\u0027ll be the first to admit these offer many wonderful things, and the relationships open source has with these companies is somewhat symbiotic; they need the open source eco-system as much as it needs them.  \n\nBut go so far as to attack a *truly* open source effort, where there\u0027s literally a few encoded API keys but *everything* else, soup to nuts is open for inspection, review and contribution -- I feel like there\u0027s a disconnect.","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"a07798a6b63667e94c6bcb58d46127bff01527f1","unresolved":false,"context_lines":[{"line_number":122,"context_line":"available. But it\u0027s worth it, especially if you want to have a say on what"},{"line_number":123,"context_line":"services are provided, or just support the idea of improving open source"},{"line_number":124,"context_line":"tools in that space.\u003c/p\u003e"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"                \u003ch2 id\u003d\"faq\"\u003eFAQ\u003c/h2\u003e"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"                    \u003ch3 id\u003d\"isnt-this-just-openstack-infrastructure-rebranded\"\u003eIsn’t this just OpenStack Infrastructure rebranded?\u003c/h3\u003e"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_51b4a1f2","line":125,"in_reply_to":"9f560f44_089e85b7","updated":"2020-09-01 12:54:09.000000000","message":"It used to be at the top, and it did not get through.\n\nThe idea of this rewrite is to answer the questions of people coming from GitHub, for which the \"free software needs free tools\" concept is a bit alien. So the idea is to first explain the differences, then add a few extra selling points for them to consider.\n\nTo get the point through, I feel like we need to get outside of opendev and write content for opensource.com or other publications that explain what we are trying to achieve here.","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"199e5d58b8d4e55e324251b50c28cbfc5b11a4b0","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                    \u003cp\u003eYes! However, as noted above it is still early days yet"},{"line_number":135,"context_line":"and the early experience might be a bit bumpy. Certain things may still say"},{"line_number":136,"context_line":"“OpenStack” on them as we figure out the transition. And while any moves should"},{"line_number":137,"context_line":"come with appropriate redirects, we may have some inadvertent misses.\u003c/p\u003e"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"                    \u003ch3 id\u003d\"can-i-run-tests-on-windows-or-osx-machines\"\u003eCan I run tests on Windows or OSX machines?\u003c/h3\u003e"},{"line_number":140,"context_line":"                    \u003cp\u003eCurrently all of our test resources are Linux based."}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_68a3c101","line":137,"updated":"2020-09-01 00:54:03.000000000","message":"I know this is existing.  again I\u0027d probably remove the self-deprecation.","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"a07798a6b63667e94c6bcb58d46127bff01527f1","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                    \u003cp\u003eYes! However, as noted above it is still early days yet"},{"line_number":135,"context_line":"and the early experience might be a bit bumpy. Certain things may still say"},{"line_number":136,"context_line":"“OpenStack” on them as we figure out the transition. And while any moves should"},{"line_number":137,"context_line":"come with appropriate redirects, we may have some inadvertent misses.\u003c/p\u003e"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"                    \u003ch3 id\u003d\"can-i-run-tests-on-windows-or-osx-machines\"\u003eCan I run tests on Windows or OSX machines?\u003c/h3\u003e"},{"line_number":140,"context_line":"                    \u003cp\u003eCurrently all of our test resources are Linux based."}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9f560f44_31ae4d98","line":137,"in_reply_to":"9f560f44_68a3c101","updated":"2020-09-01 12:54:09.000000000","message":"Agree -- but this is unrelated to this change.\n\nI\u0027ll work on moving the FAQ to doc once this merges, and I\u0027ll curate the questions at that point.","commit_id":"1cfd5fab0b2b1204e99ea76b966bd8052c30affc"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3f98c95baa7a9868fcc98671fbd2f60ec1ef683e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            \u003cdiv class\u003d\"sixteen wide left aligned centered column\"\u003e"},{"line_number":29,"context_line":"                \u003ch2 id\u003d\"what-is-opendev\"\u003eWhat is Opendev?\u003c/h2\u003e"},{"line_number":30,"context_line":"                    \u003cp\u003eOpenDev is a space for collaborative Open Source"},{"line_number":31,"context_line":"software development. It offers a number of services to allow teams of"},{"line_number":32,"context_line":"contributors to openly collaborate, at a huge scale. It is centered around"},{"line_number":33,"context_line":"code hosting, code review, and continuous integration, provided through"},{"line_number":34,"context_line":"open source solutions like Git, Gitea, Gerrit and Zuul. It also provides"},{"line_number":35,"context_line":"a number of peripheral collaboration services (like an etherpad instance for"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_932c744b","line":32,"range":{"start_line":31,"start_character":22,"end_line":32,"end_character":52},"updated":"2020-09-01 23:34:28.000000000","message":"I\u0027d probably just drop this sentence for brevity and jump straight into the description of the services.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"01236ed4d81b728726527100ef7af9ab6743d6f0","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            \u003cdiv class\u003d\"sixteen wide left aligned centered column\"\u003e"},{"line_number":29,"context_line":"                \u003ch2 id\u003d\"what-is-opendev\"\u003eWhat is Opendev?\u003c/h2\u003e"},{"line_number":30,"context_line":"                    \u003cp\u003eOpenDev is a space for collaborative Open Source"},{"line_number":31,"context_line":"software development. It offers a number of services to allow teams of"},{"line_number":32,"context_line":"contributors to openly collaborate, at a huge scale. It is centered around"},{"line_number":33,"context_line":"code hosting, code review, and continuous integration, provided through"},{"line_number":34,"context_line":"open source solutions like Git, Gitea, Gerrit and Zuul. It also provides"},{"line_number":35,"context_line":"a number of peripheral collaboration services (like an etherpad instance for"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_a454b455","line":32,"range":{"start_line":31,"start_character":22,"end_line":32,"end_character":52},"in_reply_to":"9f560f44_932c744b","updated":"2020-09-03 13:10:49.000000000","message":"Done, though I kept \"at huge scale\"","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3f98c95baa7a9868fcc98671fbd2f60ec1ef683e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                    \u003cp\u003eOpenDev is a space for collaborative Open Source"},{"line_number":31,"context_line":"software development. It offers a number of services to allow teams of"},{"line_number":32,"context_line":"contributors to openly collaborate, at a huge scale. It is centered around"},{"line_number":33,"context_line":"code hosting, code review, and continuous integration, provided through"},{"line_number":34,"context_line":"open source solutions like Git, Gitea, Gerrit and Zuul. It also provides"},{"line_number":35,"context_line":"a number of peripheral collaboration services (like an etherpad instance for"},{"line_number":36,"context_line":"collaborative text editing). All Opendev services are openly operated by the"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_f3dfb035","line":33,"range":{"start_line":33,"start_character":63,"end_line":33,"end_character":64},"updated":"2020-09-01 23:34:28.000000000","message":"I might put the work \"exclusively\" here, to indicate that *every* part of the solution is based on open source software.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"677c901bfe0b45d33d3ab27be5159c4f54fa3b8d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                    \u003cp\u003eOpenDev is a space for collaborative Open Source"},{"line_number":31,"context_line":"software development. It offers a number of services to allow teams of"},{"line_number":32,"context_line":"contributors to openly collaborate, at a huge scale. It is centered around"},{"line_number":33,"context_line":"code hosting, code review, and continuous integration, provided through"},{"line_number":34,"context_line":"open source solutions like Git, Gitea, Gerrit and Zuul. It also provides"},{"line_number":35,"context_line":"a number of peripheral collaboration services (like an etherpad instance for"},{"line_number":36,"context_line":"collaborative text editing). All Opendev services are openly operated by the"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_bd44d075","line":33,"updated":"2020-09-03 01:55:52.000000000","message":"Or \"entirely\" perhaps.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"01236ed4d81b728726527100ef7af9ab6743d6f0","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                    \u003cp\u003eOpenDev is a space for collaborative Open Source"},{"line_number":31,"context_line":"software development. It offers a number of services to allow teams of"},{"line_number":32,"context_line":"contributors to openly collaborate, at a huge scale. It is centered around"},{"line_number":33,"context_line":"code hosting, code review, and continuous integration, provided through"},{"line_number":34,"context_line":"open source solutions like Git, Gitea, Gerrit and Zuul. It also provides"},{"line_number":35,"context_line":"a number of peripheral collaboration services (like an etherpad instance for"},{"line_number":36,"context_line":"collaborative text editing). All Opendev services are openly operated by the"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_24c6e417","line":33,"in_reply_to":"9f560f44_bd44d075","updated":"2020-09-03 13:10:49.000000000","message":"Done","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3f98c95baa7a9868fcc98671fbd2f60ec1ef683e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"open source solutions like Git, Gitea, Gerrit and Zuul. It also provides"},{"line_number":35,"context_line":"a number of peripheral collaboration services (like an etherpad instance for"},{"line_number":36,"context_line":"collaborative text editing). All Opendev services are openly operated by the"},{"line_number":37,"context_line":"Opendev community, and continuously iintegrated and deployed using Opendev"},{"line_number":38,"context_line":"itself.\u003c/p\u003e"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"                \u003ch2 id\u003d\"opendev-is-different\"\u003eHow is development different with Opendev\u003c/h2\u003e"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_b329b838","line":37,"range":{"start_line":37,"start_character":36,"end_line":37,"end_character":48},"updated":"2020-09-01 23:34:28.000000000","message":"integrated","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"01236ed4d81b728726527100ef7af9ab6743d6f0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"open source solutions like Git, Gitea, Gerrit and Zuul. It also provides"},{"line_number":35,"context_line":"a number of peripheral collaboration services (like an etherpad instance for"},{"line_number":36,"context_line":"collaborative text editing). All Opendev services are openly operated by the"},{"line_number":37,"context_line":"Opendev community, and continuously iintegrated and deployed using Opendev"},{"line_number":38,"context_line":"itself.\u003c/p\u003e"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"                \u003ch2 id\u003d\"opendev-is-different\"\u003eHow is development different with Opendev\u003c/h2\u003e"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_44d318d6","line":37,"range":{"start_line":37,"start_character":36,"end_line":37,"end_character":48},"in_reply_to":"9f560f44_b329b838","updated":"2020-09-03 13:10:49.000000000","message":"Done","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3f98c95baa7a9868fcc98671fbd2f60ec1ef683e","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"                \u003ch2 id\u003d\"opendev-is-different\"\u003eHow is development different with Opendev\u003c/h2\u003e"},{"line_number":41,"context_line":"                    \u003cp\u003eOpendev is not using GitHub or Gitlab, so the"},{"line_number":42,"context_line":"workflows are slightly different. While GitHub (and Gitlab) follow a"},{"line_number":43,"context_line":"pull-request workflow, Gerrit (and therefore Opendev) follow a change"},{"line_number":44,"context_line":"proposal workflow, comparable to that of the Linux kernel.\u003c/p\u003e"},{"line_number":45,"context_line":"                    \u003cp\u003eIn GitHub, contribution starts by forking the main"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_9393d400","line":42,"range":{"start_line":42,"start_character":34,"end_line":42,"end_character":35},"updated":"2020-09-01 23:34:28.000000000","message":"I would probably re-frame this to talk about the \"pull-request workflow, as implemented by Github and Gitlab\" -- rather than putting those projects first.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"677c901bfe0b45d33d3ab27be5159c4f54fa3b8d","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"                \u003ch2 id\u003d\"opendev-is-different\"\u003eHow is development different with Opendev\u003c/h2\u003e"},{"line_number":41,"context_line":"                    \u003cp\u003eOpendev is not using GitHub or Gitlab, so the"},{"line_number":42,"context_line":"workflows are slightly different. While GitHub (and Gitlab) follow a"},{"line_number":43,"context_line":"pull-request workflow, Gerrit (and therefore Opendev) follow a change"},{"line_number":44,"context_line":"proposal workflow, comparable to that of the Linux kernel.\u003c/p\u003e"},{"line_number":45,"context_line":"                    \u003cp\u003eIn GitHub, contribution starts by forking the main"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_9d474c78","line":42,"updated":"2020-09-03 01:55:52.000000000","message":"Technically, Gitlab calls its \"merge requests\" instead.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3f98c95baa7a9868fcc98671fbd2f60ec1ef683e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                    \u003cp\u003eOpendev is not using GitHub or Gitlab, so the"},{"line_number":42,"context_line":"workflows are slightly different. While GitHub (and Gitlab) follow a"},{"line_number":43,"context_line":"pull-request workflow, Gerrit (and therefore Opendev) follow a change"},{"line_number":44,"context_line":"proposal workflow, comparable to that of the Linux kernel.\u003c/p\u003e"},{"line_number":45,"context_line":"                    \u003cp\u003eIn GitHub, contribution starts by forking the main"},{"line_number":46,"context_line":"repository to your personal GitHub space, cloning that locally, iterating"},{"line_number":47,"context_line":"on development while pushing to GitHub regularly... until your code seems"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_9388f422","line":44,"range":{"start_line":44,"start_character":19,"end_line":44,"end_character":57},"updated":"2020-09-01 23:34:28.000000000","message":"Another thing that stuck out to me; I don\u0027t know when the last time you submitted a kernel patch was but it\u0027s a complete PITA; once you get your MTA setup correctly and find the right git magic to format it, some parts use the patchwork thing that leaves you wondering if anyone has seen your mail.  So comparing to it might bring up negative memories.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"677c901bfe0b45d33d3ab27be5159c4f54fa3b8d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                    \u003cp\u003eOpendev is not using GitHub or Gitlab, so the"},{"line_number":42,"context_line":"workflows are slightly different. While GitHub (and Gitlab) follow a"},{"line_number":43,"context_line":"pull-request workflow, Gerrit (and therefore Opendev) follow a change"},{"line_number":44,"context_line":"proposal workflow, comparable to that of the Linux kernel.\u003c/p\u003e"},{"line_number":45,"context_line":"                    \u003cp\u003eIn GitHub, contribution starts by forking the main"},{"line_number":46,"context_line":"repository to your personal GitHub space, cloning that locally, iterating"},{"line_number":47,"context_line":"on development while pushing to GitHub regularly... until your code seems"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_fd5da848","line":44,"updated":"2020-09-03 01:55:52.000000000","message":"Heh, good point, that addition was a suggestion of mine on a very early draft, but perhaps we can find a better analogy (or just drop it).","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3f98c95baa7a9868fcc98671fbd2f60ec1ef683e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"workflows are slightly different. While GitHub (and Gitlab) follow a"},{"line_number":43,"context_line":"pull-request workflow, Gerrit (and therefore Opendev) follow a change"},{"line_number":44,"context_line":"proposal workflow, comparable to that of the Linux kernel.\u003c/p\u003e"},{"line_number":45,"context_line":"                    \u003cp\u003eIn GitHub, contribution starts by forking the main"},{"line_number":46,"context_line":"repository to your personal GitHub space, cloning that locally, iterating"},{"line_number":47,"context_line":"on development while pushing to GitHub regularly... until your code seems"},{"line_number":48,"context_line":"ready to merge, at which point you ask GitHub to create a pull request between"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_f38170a2","line":45,"range":{"start_line":45,"start_character":23,"end_line":45,"end_character":32},"updated":"2020-09-01 23:34:28.000000000","message":"Again, I\u0027d reword to be \"In the pull-request workflow ...\" and drop the explicit github references.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"01236ed4d81b728726527100ef7af9ab6743d6f0","unresolved":false,"context_lines":[{"line_number":42,"context_line":"workflows are slightly different. While GitHub (and Gitlab) follow a"},{"line_number":43,"context_line":"pull-request workflow, Gerrit (and therefore Opendev) follow a change"},{"line_number":44,"context_line":"proposal workflow, comparable to that of the Linux kernel.\u003c/p\u003e"},{"line_number":45,"context_line":"                    \u003cp\u003eIn GitHub, contribution starts by forking the main"},{"line_number":46,"context_line":"repository to your personal GitHub space, cloning that locally, iterating"},{"line_number":47,"context_line":"on development while pushing to GitHub regularly... until your code seems"},{"line_number":48,"context_line":"ready to merge, at which point you ask GitHub to create a pull request between"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_2ffebd04","line":45,"range":{"start_line":45,"start_character":23,"end_line":45,"end_character":32},"in_reply_to":"9f560f44_f38170a2","updated":"2020-09-03 13:10:49.000000000","message":"Done","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3f98c95baa7a9868fcc98671fbd2f60ec1ef683e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                    \u003cp\u003eThe difference is subtle, but significant. In the"},{"line_number":56,"context_line":"pull-request model, you create a fork of the original repository, push"},{"line_number":57,"context_line":"changes to it, and ultimately propose to merge changes back. In the change"},{"line_number":58,"context_line":"model, you prepare a change, and propose it. You do not create a fork,"},{"line_number":59,"context_line":"everyone contributes to the same canonical repository. It generally results"},{"line_number":60,"context_line":"in less fragmentation, and avoids confusion between the main repository and"},{"line_number":61,"context_line":"its numerous forks.\u003c/p\u003e"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_d3826c00","line":58,"range":{"start_line":58,"start_character":46,"end_line":58,"end_character":70},"updated":"2020-09-01 23:34:28.000000000","message":"... a fork and everyone ...","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"01236ed4d81b728726527100ef7af9ab6743d6f0","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                    \u003cp\u003eThe difference is subtle, but significant. In the"},{"line_number":56,"context_line":"pull-request model, you create a fork of the original repository, push"},{"line_number":57,"context_line":"changes to it, and ultimately propose to merge changes back. In the change"},{"line_number":58,"context_line":"model, you prepare a change, and propose it. You do not create a fork,"},{"line_number":59,"context_line":"everyone contributes to the same canonical repository. It generally results"},{"line_number":60,"context_line":"in less fragmentation, and avoids confusion between the main repository and"},{"line_number":61,"context_line":"its numerous forks.\u003c/p\u003e"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_6f08b527","line":58,"range":{"start_line":58,"start_character":46,"end_line":58,"end_character":70},"in_reply_to":"9f560f44_d3826c00","updated":"2020-09-03 13:10:49.000000000","message":"Done","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3f98c95baa7a9868fcc98671fbd2f60ec1ef683e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"everyone contributes to the same canonical repository. It generally results"},{"line_number":60,"context_line":"in less fragmentation, and avoids confusion between the main repository and"},{"line_number":61,"context_line":"its numerous forks.\u003c/p\u003e"},{"line_number":62,"context_line":"                    \u003cp\u003eThat high-level difference also affects the details."},{"line_number":63,"context_line":"A pull request may contain several commits, and if merged all those commits"},{"line_number":64,"context_line":"will appear in the main repository history. In Gerrit, every commit will"},{"line_number":65,"context_line":"result in a separate change for code reviewers to review, so developers"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_53aadc18","line":62,"range":{"start_line":62,"start_character":23,"end_line":62,"end_character":74},"updated":"2020-09-01 23:34:28.000000000","message":"\"the details ...\" of what?  Sentence can probably go for brevity.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"01236ed4d81b728726527100ef7af9ab6743d6f0","unresolved":false,"context_lines":[{"line_number":59,"context_line":"everyone contributes to the same canonical repository. It generally results"},{"line_number":60,"context_line":"in less fragmentation, and avoids confusion between the main repository and"},{"line_number":61,"context_line":"its numerous forks.\u003c/p\u003e"},{"line_number":62,"context_line":"                    \u003cp\u003eThat high-level difference also affects the details."},{"line_number":63,"context_line":"A pull request may contain several commits, and if merged all those commits"},{"line_number":64,"context_line":"will appear in the main repository history. In Gerrit, every commit will"},{"line_number":65,"context_line":"result in a separate change for code reviewers to review, so developers"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_0f2ad97c","line":62,"range":{"start_line":62,"start_character":23,"end_line":62,"end_character":74},"in_reply_to":"9f560f44_53aadc18","updated":"2020-09-03 13:10:49.000000000","message":"Tried to be clearer in the next rev","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3f98c95baa7a9868fcc98671fbd2f60ec1ef683e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                    \u003cp\u003eThat high-level difference also affects the details."},{"line_number":63,"context_line":"A pull request may contain several commits, and if merged all those commits"},{"line_number":64,"context_line":"will appear in the main repository history. In Gerrit, every commit will"},{"line_number":65,"context_line":"result in a separate change for code reviewers to review, so developers"},{"line_number":66,"context_line":"usually squash commits created while developing but which do not help"},{"line_number":67,"context_line":"reviewers understand the proposed change. It generally results in easier"},{"line_number":68,"context_line":"code review, and a cleaner git log as meaningful commit messages are"},{"line_number":69,"context_line":"reviewed as part of the change.\u003c/p\u003e"},{"line_number":70,"context_line":"                    \u003cp\u003eThe main drawback of the Gerrit workflow is that its"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_1326a417","line":67,"range":{"start_line":65,"start_character":58,"end_line":67,"end_character":41},"updated":"2020-09-01 23:34:28.000000000","message":"I might use the term \"rebase\" here because that\u0027s the git command while \"squash\" isn\u0027t, though I get your point.\n\nSuggestion, although it\u0027s long:\n\nWhen changes are requested developers squash (or in git terms \"rebase\") their change and submit a new revision.  The history of the change is kept in Gerrit, where reviewers can compare previous revisions to the currently proposed change.  Only the final change will be committed to the repository, leaving out the intermediate steps taken to refine the change.  The pure merge model includes these changes in the main commit history, but elides the surrounding review discussion or CI results that leads to new commits.  These intermediate changes -- changes that may have syntax errors, were rejected in review or plain didn\u0027t work -- pollute the code history with a lot of irrelevant code movement that is very difficult to follow when debugging.  While only the final result is committed, every commit has a link back to the Gerrit change where developers can find the full history of the change, including all relevant discussion leading up to it\u0027s commit.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"677c901bfe0b45d33d3ab27be5159c4f54fa3b8d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"will appear in the main repository history. In Gerrit, every commit will"},{"line_number":65,"context_line":"result in a separate change for code reviewers to review, so developers"},{"line_number":66,"context_line":"usually squash commits created while developing but which do not help"},{"line_number":67,"context_line":"reviewers understand the proposed change. It generally results in easier"},{"line_number":68,"context_line":"code review, and a cleaner git log as meaningful commit messages are"},{"line_number":69,"context_line":"reviewed as part of the change.\u003c/p\u003e"},{"line_number":70,"context_line":"                    \u003cp\u003eThe main drawback of the Gerrit workflow is that its"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_dd58a458","line":67,"updated":"2020-09-03 01:55:52.000000000","message":"They don\u0027t necessarily even rebase, they just amend the previous revision. Also, as much as I don\u0027t like the fact, \"rebase\" is a dirty word to many users. And really, we recommend an \"amend but only rebase when necessary\" workflow with Gerrit. Gratuitous rebases are disruptive to review as they make inter-patch diffs nearly useless.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"01236ed4d81b728726527100ef7af9ab6743d6f0","unresolved":false,"context_lines":[{"line_number":64,"context_line":"will appear in the main repository history. In Gerrit, every commit will"},{"line_number":65,"context_line":"result in a separate change for code reviewers to review, so developers"},{"line_number":66,"context_line":"usually squash commits created while developing but which do not help"},{"line_number":67,"context_line":"reviewers understand the proposed change. It generally results in easier"},{"line_number":68,"context_line":"code review, and a cleaner git log as meaningful commit messages are"},{"line_number":69,"context_line":"reviewed as part of the change.\u003c/p\u003e"},{"line_number":70,"context_line":"                    \u003cp\u003eThe main drawback of the Gerrit workflow is that its"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_8f3a69c1","line":67,"in_reply_to":"9f560f44_dd58a458","updated":"2020-09-03 13:10:49.000000000","message":"Keeping it intact as I think \"squashing\" captures it in a more positive way","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3f98c95baa7a9868fcc98671fbd2f60ec1ef683e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"reviewers understand the proposed change. It generally results in easier"},{"line_number":68,"context_line":"code review, and a cleaner git log as meaningful commit messages are"},{"line_number":69,"context_line":"reviewed as part of the change.\u003c/p\u003e"},{"line_number":70,"context_line":"                    \u003cp\u003eThe main drawback of the Gerrit workflow is that its"},{"line_number":71,"context_line":"principles and UI are different from the GitHub workflow, so it is not"},{"line_number":72,"context_line":"immediately familiar to developers already exposed to the GitHub workflow."},{"line_number":73,"context_line":"But the long-term benefits should outweigh the short-term drawback of having"},{"line_number":74,"context_line":"to learn a new tool, especially if you are going to spend a lot of time"},{"line_number":75,"context_line":"developing for that project anyway.\u003c/p\u003e"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"                \u003ch2 id\u003d\"integrated-ci\"\u003eIntegrated Continuous Integration\u003c/h2\u003e"},{"line_number":78,"context_line":"                    \u003cp\u003eOne key benefit of Opendev is that it integrates"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_939f5464","line":75,"range":{"start_line":70,"start_character":1,"end_line":75,"end_character":39},"updated":"2020-09-01 23:34:28.000000000","message":"I saw your previous comment on not wanting to hide things; I still don\u0027t think it serves us to list why the service isn\u0027t as good as commercial offerings on the front page.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"01236ed4d81b728726527100ef7af9ab6743d6f0","unresolved":false,"context_lines":[{"line_number":67,"context_line":"reviewers understand the proposed change. It generally results in easier"},{"line_number":68,"context_line":"code review, and a cleaner git log as meaningful commit messages are"},{"line_number":69,"context_line":"reviewed as part of the change.\u003c/p\u003e"},{"line_number":70,"context_line":"                    \u003cp\u003eThe main drawback of the Gerrit workflow is that its"},{"line_number":71,"context_line":"principles and UI are different from the GitHub workflow, so it is not"},{"line_number":72,"context_line":"immediately familiar to developers already exposed to the GitHub workflow."},{"line_number":73,"context_line":"But the long-term benefits should outweigh the short-term drawback of having"},{"line_number":74,"context_line":"to learn a new tool, especially if you are going to spend a lot of time"},{"line_number":75,"context_line":"developing for that project anyway.\u003c/p\u003e"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"                \u003ch2 id\u003d\"integrated-ci\"\u003eIntegrated Continuous Integration\u003c/h2\u003e"},{"line_number":78,"context_line":"                    \u003cp\u003eOne key benefit of Opendev is that it integrates"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_ef6cc59d","line":75,"range":{"start_line":70,"start_character":1,"end_line":75,"end_character":39},"in_reply_to":"9f560f44_939f5464","updated":"2020-09-03 13:10:49.000000000","message":"I reworded it to make it less like a drawback, and more like a difference that is worth it","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3f98c95baa7a9868fcc98671fbd2f60ec1ef683e","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                    \u003cp\u003eThis advanced continuous integration system was"},{"line_number":93,"context_line":"developed to sustain the complexity and scale of OpenStack development, one"},{"line_number":94,"context_line":"of the 3 most actively developed open source projects in the world. Opendev"},{"line_number":95,"context_line":"makes this system available to other projects. It is much more advanced and"},{"line_number":96,"context_line":"unlimited than GitHub actions or Gitlab CI features, and is one key benefit"},{"line_number":97,"context_line":"of Opendev -- supporting open development at a huge scale.\u003c/p\u003e"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"                \u003ch2 id\u003d\"free-tools\"\u003eFree software needs free tools\u003c/h2\u003e"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_136b441f","line":96,"range":{"start_line":95,"start_character":46,"end_line":96,"end_character":51},"updated":"2020-09-01 23:34:28.000000000","message":"Just like we don\u0027t have to deprecate ourselves; we should probably be careful about saying we are more advanced than github actions, etc.  for example, that has a bunch of \"matrix\" build features to run similar things on different platforms that we do not exactly have OOTB (but templates is a similar idea done differently).  What\u0027s more advanced is probably a matter of taste.\n\nI would probably just mention as related work, if anything; and TravisCI seems an omission given it\u0027s widespread use.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"01236ed4d81b728726527100ef7af9ab6743d6f0","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                    \u003cp\u003eThis advanced continuous integration system was"},{"line_number":93,"context_line":"developed to sustain the complexity and scale of OpenStack development, one"},{"line_number":94,"context_line":"of the 3 most actively developed open source projects in the world. Opendev"},{"line_number":95,"context_line":"makes this system available to other projects. It is much more advanced and"},{"line_number":96,"context_line":"unlimited than GitHub actions or Gitlab CI features, and is one key benefit"},{"line_number":97,"context_line":"of Opendev -- supporting open development at a huge scale.\u003c/p\u003e"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"                \u003ch2 id\u003d\"free-tools\"\u003eFree software needs free tools\u003c/h2\u003e"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_0f30199e","line":96,"range":{"start_line":95,"start_character":46,"end_line":96,"end_character":51},"in_reply_to":"9f560f44_136b441f","updated":"2020-09-03 13:10:49.000000000","message":"Done","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"3f98c95baa7a9868fcc98671fbd2f60ec1ef683e","unresolved":false,"context_lines":[{"line_number":103,"context_line":"to use for open source projects, but they are both using proprietary code."},{"line_number":104,"context_line":"If your free and open source software requires proprietary code to be built,"},{"line_number":105,"context_line":"is it really free?\u003c/p\u003e"},{"line_number":106,"context_line":"                    \u003cp\u003eIt is widely-accepted today that using open source"},{"line_number":107,"context_line":"technology in your software stacks reduces your dependency to third-parties"},{"line_number":108,"context_line":"and allows to spread innovation. It should be obvious that writing software"},{"line_number":109,"context_line":"using open source technology has the same effect. Nothing prevents a service"},{"line_number":110,"context_line":"provider from changing its service terms, creating new limitations or even"},{"line_number":111,"context_line":"fully excluding your project, or contributors from specific countries."},{"line_number":112,"context_line":"Proprietary development services create the same form of hard limits, lock-in"},{"line_number":113,"context_line":"and dependency than proprietary software does, and prevent open innovation"},{"line_number":114,"context_line":"in the development infrastructure space.\u003c/p\u003e"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_d3e8ac7d","line":111,"range":{"start_line":106,"start_character":20,"end_line":111,"end_character":70},"updated":"2020-09-01 23:34:28.000000000","message":"To me I\u0027d leave this bit out.  As you say it\u0027s obvious and we don\u0027t need to harp too much about the perils of non-free software.  We are also very lucky, mostly probably through our pre-approval process for repos and general focus that we have not had to deal with abuse -- but we are not a sort of utopia where anything goes.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"01236ed4d81b728726527100ef7af9ab6743d6f0","unresolved":false,"context_lines":[{"line_number":103,"context_line":"to use for open source projects, but they are both using proprietary code."},{"line_number":104,"context_line":"If your free and open source software requires proprietary code to be built,"},{"line_number":105,"context_line":"is it really free?\u003c/p\u003e"},{"line_number":106,"context_line":"                    \u003cp\u003eIt is widely-accepted today that using open source"},{"line_number":107,"context_line":"technology in your software stacks reduces your dependency to third-parties"},{"line_number":108,"context_line":"and allows to spread innovation. It should be obvious that writing software"},{"line_number":109,"context_line":"using open source technology has the same effect. Nothing prevents a service"},{"line_number":110,"context_line":"provider from changing its service terms, creating new limitations or even"},{"line_number":111,"context_line":"fully excluding your project, or contributors from specific countries."},{"line_number":112,"context_line":"Proprietary development services create the same form of hard limits, lock-in"},{"line_number":113,"context_line":"and dependency than proprietary software does, and prevent open innovation"},{"line_number":114,"context_line":"in the development infrastructure space.\u003c/p\u003e"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9f560f44_2f899d25","line":111,"range":{"start_line":106,"start_character":20,"end_line":111,"end_character":70},"in_reply_to":"9f560f44_d3e8ac7d","updated":"2020-09-03 13:10:49.000000000","message":"I\u0027d prefer to keep it in.\n\nAgain this page is not directed to you (or anyone who feels like \"uses free software\" is enough of a justification). It\u0027s directed to a typical GitHub user, coming across Opendev for the first time.\n\n99% of GitHub users don\u0027t see ANY problem with using it for open source development. I write that it /should/ be obvious, but it\u0027s REALLY not, except for us in our bubble.\n\nSo I think there is a definite need to harp. Everywhere and all the time. In any outward-facing explanation of Opendev. And this is a key one.","commit_id":"5f86b1d256c0006ba2b59341eb23501d87c291d4"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"685191e9eb17280a3431792ec064bc59264f50b9","unresolved":false,"context_lines":[{"line_number":32,"context_line":"code review, and continuous integration, provided exclusively through"},{"line_number":33,"context_line":"open source solutions like Git, Gitea, Gerrit and Zuul. It also provides"},{"line_number":34,"context_line":"a number of peripheral collaboration services (like an etherpad instance for"},{"line_number":35,"context_line":"collaborative text editing). All Opendev services are openly operated by the"},{"line_number":36,"context_line":"Opendev community, and continuously integrated and deployed using Opendev"},{"line_number":37,"context_line":"itself.\u003c/p\u003e"},{"line_number":38,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f560f44_42691af6","line":35,"updated":"2020-09-07 18:05:21.000000000","message":"There\u0027s some mix of Titlecase and CamelCase of OpenDev throughout this document, though historically we\u0027ve tended to use the latter.","commit_id":"e793b45483117db130e59d8246cd078f45518bc5"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"11607d3e2478562db1820f1673eebda14d3af776","unresolved":false,"context_lines":[{"line_number":81,"context_line":"information. Test jobs also run again at merge-time, in case recently-approved"},{"line_number":82,"context_line":"changes introduce an incompatibility. This, combined with the fact that"},{"line_number":83,"context_line":"changes must pass tests before they can be approved, prevents"},{"line_number":84,"context_line":"merging broken code.\u003c/p\u003e"},{"line_number":85,"context_line":"                    \u003cp\u003eAdvanced Zuul features like speculative execution of"},{"line_number":86,"context_line":"tests allows changes to test in parallel, so development velocity is"},{"line_number":87,"context_line":"never limited by how thorough you want your tests to be. Changes in one git"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f560f44_071a877b","line":84,"updated":"2020-09-08 13:27:32.000000000","message":"Or prevents merging code which doesn\u0027t pass your tests (lack of test coverage still obviously lets broken code go straight to your repo, otherwise OpenStack would be bug-free).","commit_id":"e793b45483117db130e59d8246cd078f45518bc5"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"685191e9eb17280a3431792ec064bc59264f50b9","unresolved":false,"context_lines":[{"line_number":81,"context_line":"information. Test jobs also run again at merge-time, in case recently-approved"},{"line_number":82,"context_line":"changes introduce an incompatibility. This, combined with the fact that"},{"line_number":83,"context_line":"changes must pass tests before they can be approved, prevents"},{"line_number":84,"context_line":"merging broken code.\u003c/p\u003e"},{"line_number":85,"context_line":"                    \u003cp\u003eAdvanced Zuul features like speculative execution of"},{"line_number":86,"context_line":"tests allows changes to test in parallel, so development velocity is"},{"line_number":87,"context_line":"never limited by how thorough you want your tests to be. Changes in one git"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f560f44_226ea6ff","line":84,"updated":"2020-09-07 18:05:21.000000000","message":"Slightly incorrect, changes must pass tests before they can merge... that doesn\u0027t prevent them from being approved however (and in some of our tenants, an approval can enqueue changes into a gate pipeline even if they have a failing check result).","commit_id":"e793b45483117db130e59d8246cd078f45518bc5"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"d863fbd045109818cce5ad401c5a626b3f26b53d","unresolved":false,"context_lines":[{"line_number":81,"context_line":"information. Test jobs also run again at merge-time, in case recently-approved"},{"line_number":82,"context_line":"changes introduce an incompatibility. This, combined with the fact that"},{"line_number":83,"context_line":"changes must pass tests before they can be approved, prevents"},{"line_number":84,"context_line":"merging broken code.\u003c/p\u003e"},{"line_number":85,"context_line":"                    \u003cp\u003eAdvanced Zuul features like speculative execution of"},{"line_number":86,"context_line":"tests allows changes to test in parallel, so development velocity is"},{"line_number":87,"context_line":"never limited by how thorough you want your tests to be. Changes in one git"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f560f44_25950be5","line":84,"in_reply_to":"9f560f44_226ea6ff","updated":"2020-09-08 08:40:13.000000000","message":"Probably simpler to just say \"This prevents merging broken code\".","commit_id":"e793b45483117db130e59d8246cd078f45518bc5"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"685191e9eb17280a3431792ec064bc59264f50b9","unresolved":false,"context_lines":[{"line_number":83,"context_line":"changes must pass tests before they can be approved, prevents"},{"line_number":84,"context_line":"merging broken code.\u003c/p\u003e"},{"line_number":85,"context_line":"                    \u003cp\u003eAdvanced Zuul features like speculative execution of"},{"line_number":86,"context_line":"tests allows changes to test in parallel, so development velocity is"},{"line_number":87,"context_line":"never limited by how thorough you want your tests to be. Changes in one git"},{"line_number":88,"context_line":"repository can depend on proposed changes in another repository, allowing"},{"line_number":89,"context_line":"integration testing of features actively developed across multiple projects,"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f560f44_827692d7","line":86,"updated":"2020-09-07 18:05:21.000000000","message":"\"Allows\" is in reference to \"features\" not \"execution\" so should be \"allow\" (features allow).","commit_id":"e793b45483117db130e59d8246cd078f45518bc5"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"685191e9eb17280a3431792ec064bc59264f50b9","unresolved":false,"context_lines":[{"line_number":84,"context_line":"merging broken code.\u003c/p\u003e"},{"line_number":85,"context_line":"                    \u003cp\u003eAdvanced Zuul features like speculative execution of"},{"line_number":86,"context_line":"tests allows changes to test in parallel, so development velocity is"},{"line_number":87,"context_line":"never limited by how thorough you want your tests to be. Changes in one git"},{"line_number":88,"context_line":"repository can depend on proposed changes in another repository, allowing"},{"line_number":89,"context_line":"integration testing of features actively developed across multiple projects,"},{"line_number":90,"context_line":"removing artificial barriers between development teams.\u003c/p\u003e"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f560f44_62737ee8","line":87,"updated":"2020-09-07 18:05:21.000000000","message":"\"Git\" in this sense should probably be capitalized, the Git community capitalizes it when used as a proper name rather than as a shell command.","commit_id":"e793b45483117db130e59d8246cd078f45518bc5"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"685191e9eb17280a3431792ec064bc59264f50b9","unresolved":false,"context_lines":[{"line_number":90,"context_line":"removing artificial barriers between development teams.\u003c/p\u003e"},{"line_number":91,"context_line":"                    \u003cp\u003eThis advanced continuous integration system was"},{"line_number":92,"context_line":"developed to sustain the complexity and scale of OpenStack development, one"},{"line_number":93,"context_line":"of the 3 most actively developed open source projects in the world. Opendev"},{"line_number":94,"context_line":"makes this system available to other projects -- enabling open development"},{"line_number":95,"context_line":"at a huge scale for everyone.\u003c/p\u003e"},{"line_number":96,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f560f44_c27c0ab8","line":93,"updated":"2020-09-07 18:05:21.000000000","message":"Three might work a little better than 3 here (we don\u0027t have a proper style guide but in prose, numbers up to a hundred are commonly written out instead of represented with Arabic numerals). Also \"the World\" is usually preferred over \"the world\" for capitalization, though I think that rule may be getting lost to the annals of grammar textbooks in recent decades.","commit_id":"e793b45483117db130e59d8246cd078f45518bc5"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"685191e9eb17280a3431792ec064bc59264f50b9","unresolved":false,"context_lines":[{"line_number":100,"context_line":"it\u0027s built purely using open source software. GitHub and Gitlab.com are free"},{"line_number":101,"context_line":"to use for open source projects, but they are both using proprietary code."},{"line_number":102,"context_line":"If your free and open source software requires proprietary code to be built,"},{"line_number":103,"context_line":"is it really free?\u003c/p\u003e"},{"line_number":104,"context_line":"                    \u003cp\u003eIt is widely-accepted today that using open source"},{"line_number":105,"context_line":"technology in your software stacks reduces your dependency to third-parties"},{"line_number":106,"context_line":"and allows to spread innovation. It should be obvious that writing software"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f560f44_a27916c6","line":103,"updated":"2020-09-07 18:05:21.000000000","message":"It\u0027s debateable whether your code host is really a \"build requirement\" for your software, and I\u0027ve seen lots of people argue that the reason using those services is okay is because they\u0027re not required and are easily swapped for another host if terms of service change. Possibly a more compelling argument is that if you\u0027re building free and open software you hope people will use in place of proprietary alternatives, then choosing to rely on proprietary software and services when developing your software conveys by example that you don\u0027t actually value the free and open alternatives others like you are producing for those parts of the workflow/toolchain.","commit_id":"e793b45483117db130e59d8246cd078f45518bc5"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"11607d3e2478562db1820f1673eebda14d3af776","unresolved":false,"context_lines":[{"line_number":100,"context_line":"it\u0027s built purely using open source software. GitHub and Gitlab.com are free"},{"line_number":101,"context_line":"to use for open source projects, but they are both using proprietary code."},{"line_number":102,"context_line":"If your free and open source software requires proprietary code to be built,"},{"line_number":103,"context_line":"is it really free?\u003c/p\u003e"},{"line_number":104,"context_line":"                    \u003cp\u003eIt is widely-accepted today that using open source"},{"line_number":105,"context_line":"technology in your software stacks reduces your dependency to third-parties"},{"line_number":106,"context_line":"and allows to spread innovation. It should be obvious that writing software"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f560f44_e71e736e","line":103,"updated":"2020-09-08 13:27:32.000000000","message":"Probably the confusion stems from common use of \"build\" or \"built\" to refer to the process of generating usable artifacts from source code (compiling, linking, bundling, converting...). The real point is that contributing to the project requires interacting with proprietary tools and services, even if the tools needed to \"build\" the project (compilers and related toolchain) have available and supported F/LOSS implementations the developers are using.","commit_id":"e793b45483117db130e59d8246cd078f45518bc5"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"d863fbd045109818cce5ad401c5a626b3f26b53d","unresolved":false,"context_lines":[{"line_number":100,"context_line":"it\u0027s built purely using open source software. GitHub and Gitlab.com are free"},{"line_number":101,"context_line":"to use for open source projects, but they are both using proprietary code."},{"line_number":102,"context_line":"If your free and open source software requires proprietary code to be built,"},{"line_number":103,"context_line":"is it really free?\u003c/p\u003e"},{"line_number":104,"context_line":"                    \u003cp\u003eIt is widely-accepted today that using open source"},{"line_number":105,"context_line":"technology in your software stacks reduces your dependency to third-parties"},{"line_number":106,"context_line":"and allows to spread innovation. It should be obvious that writing software"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f560f44_0568c7f2","line":103,"in_reply_to":"9f560f44_a27916c6","updated":"2020-09-08 08:40:13.000000000","message":"Maybe using \"relies on proprietary code to be built\" would convey the right nuance.","commit_id":"e793b45483117db130e59d8246cd078f45518bc5"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"11607d3e2478562db1820f1673eebda14d3af776","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                    \u003cp\u003eOpendev is entirely built using open source software,"},{"line_number":114,"context_line":"but goes one step beyond: it is also openly operated. All its operation and"},{"line_number":115,"context_line":"configuration is also open source, lives in git, and is continuously-deployed."},{"line_number":116,"context_line":"In the spirit of open source, it is easy to study, replicate, modify and"},{"line_number":117,"context_line":"redistribute. Like free and open source software, it requires engaging with"},{"line_number":118,"context_line":"its community to get the most of it -- it\u0027s not a service you consume, it\u0027s"},{"line_number":119,"context_line":"a community you join. That can be a bit overwhelming if you just want to"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f560f44_4710ff59","line":116,"updated":"2020-09-08 13:27:32.000000000","message":"That would work, yep.","commit_id":"e793b45483117db130e59d8246cd078f45518bc5"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"685191e9eb17280a3431792ec064bc59264f50b9","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                    \u003cp\u003eOpendev is entirely built using open source software,"},{"line_number":114,"context_line":"but goes one step beyond: it is also openly operated. All its operation and"},{"line_number":115,"context_line":"configuration is also open source, lives in git, and is continuously-deployed."},{"line_number":116,"context_line":"In the spirit of open source, it is easy to study, replicate, modify and"},{"line_number":117,"context_line":"redistribute. Like free and open source software, it requires engaging with"},{"line_number":118,"context_line":"its community to get the most of it -- it\u0027s not a service you consume, it\u0027s"},{"line_number":119,"context_line":"a community you join. That can be a bit overwhelming if you just want to"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f560f44_024c429c","line":116,"updated":"2020-09-07 18:05:21.000000000","message":"We don\u0027t actually develop the configuration management and automation around these with outside reusability in mind, and really don\u0027t have sufficient support bandwidth to assist others in setting up similar services. This is a departure from our prior efforts where we attempted to make things like Puppet modules we used reconsumable. We discovered that the time and effort involved in supporting configuration options or deployment scenarios we don\u0027t use ourselves in our implementations, worrying about downstream consumers who might be broken by non-backward-compatible changes requiring manual intervention, and so forth was eating a disproportionately large amount of our time. We serve as an example of how these services can be run together, but I wouldn\u0027t want to imply that the way we operate these services is easily reused and modified.","commit_id":"e793b45483117db130e59d8246cd078f45518bc5"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"d863fbd045109818cce5ad401c5a626b3f26b53d","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                    \u003cp\u003eOpendev is entirely built using open source software,"},{"line_number":114,"context_line":"but goes one step beyond: it is also openly operated. All its operation and"},{"line_number":115,"context_line":"configuration is also open source, lives in git, and is continuously-deployed."},{"line_number":116,"context_line":"In the spirit of open source, it is easy to study, replicate, modify and"},{"line_number":117,"context_line":"redistribute. Like free and open source software, it requires engaging with"},{"line_number":118,"context_line":"its community to get the most of it -- it\u0027s not a service you consume, it\u0027s"},{"line_number":119,"context_line":"a community you join. That can be a bit overwhelming if you just want to"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f560f44_45475f78","line":116,"in_reply_to":"9f560f44_024c429c","updated":"2020-09-08 08:40:13.000000000","message":"Good point, maybe I should get rid of that sentence completely. Or at least say \"possible\" rather than \"easy\".","commit_id":"e793b45483117db130e59d8246cd078f45518bc5"}]}
