logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault git clone https://hacktivis.me/git/mirror/drewdevault.com.git

DCO.md (4954B)


  1. ---
  2. title: The Developer Certificate of Origin is a great alternative to a CLA
  3. date: 2021-04-12
  4. ---
  5. Today Amazon released their fork of ElasticSearch, [OpenSearch][0], and I want
  6. to take a moment to draw your attention to one good decision in particular: its
  7. use of the [Developer Certificate of Origin][1] (or "DCO").
  8. [0]: https://github.com/opensearch-project/OpenSearch
  9. [1]: https://github.com/opensearch-project/OpenSearch/blob/main/CONTRIBUTING.md#developer-certificate-of-origin
  10. ---
  11. Previously:
  12. - [ElasticSearch does not belong to Elastic](https://drewdevault.com/2021/01/19/Elasticsearch-does-not-belong-to-Elastic.html)
  13. - [Open source means surrendering your monopoly over commercial exploitation](https://drewdevault.com/2021/01/20/FOSS-is-to-surrender-your-monopoly.html)
  14. - [Don't sign a CLA](https://drewdevault.com/2018/10/05/Dont-sign-a-CLA.html)
  15. ---
  16. Elastic betrayed its community when they changed to a proprietary license. We
  17. could have seen it coming because of a particular trait of their contribution
  18. process: the use of a Contributor License Agreement, or CLA. In principle, a CLA
  19. aims to address legitimate concerns of ownership and copyright, but in practice,
  20. they are a promise that one day the stewards of the codebase will take your work
  21. and relicense it under a nonfree license. And, ultimately, this is exactly what
  22. Elastic did, and exactly what most other projects which ask you to sign a CLA
  23. are *planning* to do. If you ask me, that's a crappy deal, and I refrain from
  24. contributing to those projects as a result.
  25. However, there are some legitimate questions of ownership which a project owner
  26. might rightfully wish to address before accepting a contribution. As is often
  27. the case, we can look to git itself for an answer to this problem. Git was
  28. designed for the Linux kernel, and patch ownership is a problem they faced and
  29. solved a long time ago. Their answer is the [Developer Certificate of
  30. Origin](https://developercertificate.org/), or DCO, and tools for working with
  31. it are already built into git.
  32. git provides the -s flag for git commit, which adds the following text to your
  33. commit message:
  34. ```
  35. Signed-off-by: Drew DeVault <sir@cmpwn.com>
  36. ```
  37. The specific meaning varies from project to project, but it is usually used to
  38. indicate that you have read and agreed to the DCO, which reads as follows:
  39. > By making a contribution to this project, I certify that:
  40. >
  41. > 1. The contribution was created in whole or in part by me and I have the right
  42. > to submit it under the open source license indicated in the file; or
  43. > 2. The contribution is based upon previous work that, to the best of my
  44. > knowledge, is covered under an appropriate open source license and I have
  45. > the right under that license to submit that work with modifications,
  46. > whether created in whole or in part by me, under the same open source
  47. > license (unless I am permitted to submit under a different license), as
  48. > indicated in the file; or
  49. > 3. The contribution was provided directly to me by some other person who
  50. > certified (1), (2) or (3) and I have not modified it.
  51. > 4. I understand and agree that this project and the contribution are public
  52. > and that a record of the contribution (including all personal information I
  53. > submit with it, including my sign-off) is maintained indefinitely and may
  54. > be redistributed consistent with this project or the open source license(s)
  55. > involved.
  56. This neatly answers all concerns of copyright. You license your contribution
  57. under the original license (Apache 2.0 in the case of OpenSearch), and attest
  58. that you have sufficient ownership over your changes to do so. You retain your
  59. copyright and you don't leave the door open for the maintainers to relicense
  60. your work under some other terms in the future. This offers the maintainers the
  61. same rights that they extended to the community themselves.
  62. This is the strategy that Amazon chose for OpenSearch, and it's a good thing
  63. they did, because it strongly signals to the community that it will not fall to
  64. the same fate that ElasticSearch has. By doing this, they have imposed on
  65. themselves a great deal of difficulty to any future attempt to change their
  66. copyright obligations. I applaud Amazon for this move, and I'm optimistic about
  67. the future of OpenSearch under their stewardship.
  68. If you have a project of your own that is concerned about the copyright of
  69. third-party contributions, then please consider adopting the DCO instead of a
  70. CLA. And, as a contributor, if someone asks you to sign a CLA, consider
  71. withholding your contribution: a CLA is a promise to the contributors that
  72. someday their work will be taken from them and monetized to the exclusive
  73. benefit of the project's lords. This affects my personal contributions, too
  74. &mdash; for example, I avoid contributing to Golang as a result of their CLA
  75. requirement. Your work is important, and the projects you offer it to should
  76. respect that.