{"id":1058,"date":"2024-11-03T16:28:52","date_gmt":"2024-11-03T16:28:52","guid":{"rendered":"http:\/\/localhost:8082\/?p=1058"},"modified":"2024-11-03T16:30:56","modified_gmt":"2024-11-03T16:30:56","slug":"missing-open-source-contributor-presents-a-dilemma-when-accepting-their-contribution","status":"publish","type":"post","link":"http:\/\/localhost:8082\/2024\/11\/03\/missing-open-source-contributor-presents-a-dilemma-when-accepting-their-contribution\/","title":{"rendered":"Missing open-source contributor presents a dilemma when accepting their contribution"},"content":{"rendered":"\n

I faced the following situation recently as a maintainer of a popular open-source project, and I wondered what to do.<\/p>\n\n\n\n

<\/div>\n\n\n\n

Situation<\/strong>
A first-time contributor submits a PR to Spectre.Console<\/a>, a Microsoft .Net Foundation open-source project. It\u2019s a small, but important change to guard against a null input parameter on a public method.<\/p>\n\n\n\n

The contribution bot asks for confirmation the code change is copyright-free, but the contributor doesn\u2019t respond. The bot proceeded to remind the contributor several times, and I even attempted to make contact through other channels, but the contributor didn\u2019t respond.<\/p>\n\n\n\n

I wish to merge the contribution, I wish to behave in a legally compliant manner, and I wish to encourage other first-time contributors.<\/p>\n\n\n\n

<\/div>\n\n\n\n

Question<\/strong>
What is the \u2018proper\u2019 open source etiquette regarding this PR?<\/p>\n\n\n\n

    \n
  1. Leave it open, wait indefinitely<\/li>\n\n\n\n
  2. Close it with a comment<\/li>\n\n\n\n
  3. Close it with a comment, then submit my own PR with exactly the same code<\/li>\n\n\n\n
  4. Merge it anyway<\/li>\n<\/ol>\n\n\n\n
    <\/div>\n\n\n\n

    Answer<\/strong>
    \u20184. Merge it anyway\u2019 is probably the right course of action, for the reasons that follow.<\/p>\n\n\n\n

    The repository is MIT-licensed, and clearly advertised as such, so it\u2019s reasonable to expect all contributions are made under that license, even before the bot comes along. Additionally, the change is trivial and widely considered industry best practice, so it\u2019s hard to see how anyone could enforce a copyright claim. Anyhow, code change could easily be reversed, and I find it hard to see how damages could be levied in this situation.<\/p>\n\n\n\n

    However, a more extensive contribution could prove to be problematic. So, I\u2019ll consider an update to the PR template (and contributing guidelines) to explicitly state that all contributions are MIT-licensed and not to proceed otherwise.<\/p>\n","protected":false},"excerpt":{"rendered":"

    I faced the following situation recently as a maintainer of a popular open-source project, and I wondered what to do. SituationA first-time contributor submits a PR to Spectre.Console, a Microsoft .Net Foundation open-source project. It\u2019s a small, but important change to guard against a null input parameter on a public method. The contribution bot asks […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29,20,28],"tags":[],"class_list":["post-1058","post","type-post","status-publish","format-standard","hentry","category-open-source","category-software-development","category-spectre-console","missing-thumbnail"],"_links":{"self":[{"href":"http:\/\/localhost:8082\/wp-json\/wp\/v2\/posts\/1058"}],"collection":[{"href":"http:\/\/localhost:8082\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/localhost:8082\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/localhost:8082\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/localhost:8082\/wp-json\/wp\/v2\/comments?post=1058"}],"version-history":[{"count":12,"href":"http:\/\/localhost:8082\/wp-json\/wp\/v2\/posts\/1058\/revisions"}],"predecessor-version":[{"id":1072,"href":"http:\/\/localhost:8082\/wp-json\/wp\/v2\/posts\/1058\/revisions\/1072"}],"wp:attachment":[{"href":"http:\/\/localhost:8082\/wp-json\/wp\/v2\/media?parent=1058"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/localhost:8082\/wp-json\/wp\/v2\/categories?post=1058"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/localhost:8082\/wp-json\/wp\/v2\/tags?post=1058"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}