Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
4.9 KiB

  1. My collected rationales for placing these libraries
  2. in the public domain:
  3. 1. Public domain vs. viral licenses
  4. Why is this library public domain?
  5. Because more people will use it. Because it's not viral, people are
  6. not obligated to give back, so you could argue that it hurts the
  7. development of it, and then because it doesn't develop as well it's
  8. not as good, and then because it's not as good, in the long run
  9. maybe fewer people will use it. I have total respect for that
  10. opinion, but I just don't believe it myself for most software.
  11. 2. Public domain vs. attribution-required licenses
  12. The primary difference between public domain and, say, a Creative Commons
  13. commercial / non-share-alike / attribution license is solely the
  14. requirement for attribution. (Similarly the BSD license and such.)
  15. While I would *appreciate* acknowledgement and attribution, I believe
  16. that it is foolish to place a legal encumberment (i.e. a license) on
  17. the software *solely* to get attribution.
  18. In other words, I'm arguing that PD is superior to the BSD license and
  19. the Creative Commons 'Attribution' license. If the license offers
  20. anything besides attribution -- as does, e.g., CC NonCommercial-ShareAlike,
  21. or the GPL -- that's a separate discussion.
  22. 3. Other aspects of BSD-style licenses besides attribution
  23. Permissive licenses like zlib and BSD license are perfectly reasonable
  24. in their requirements, but they are very wordy and
  25. have only two benefits over public domain: legally-mandated
  26. attribution and liability-control. I do not believe these
  27. are worth the excessive verbosity and user-unfriendliness
  28. these licenses induce, especially in the single-file
  29. case where those licenses tend to be at the top of
  30. the file, the first thing you see.
  31. To the specific points, I have had no trouble receiving
  32. attribution for my libraries; liability in the face of
  33. no explicit disclaimer of liability is an open question,
  34. but one I have a lot of difficulty imagining there being
  35. any actual doubt about in court. Sometimes I explicitly
  36. note in my libraries that I make no guarantees about them
  37. being fit for purpose, but it's pretty absurd to do this;
  38. as a whole, it comes across as "here is a library to decode
  39. vorbis audio files, but it may not actually work and if
  40. you have problems it's not my fault, but also please
  41. report bugs so I can fix them"--so dumb!
  42. 4. full discussion from stb_howto.txt on what YOU should do for YOUR libs
  43. ```
  44. EASY-TO-COMPLY LICENSE
  45. I make my libraries public domain. You don't have to.
  46. But my goal in releasing stb-style libraries is to
  47. reduce friction for potential users as much as
  48. possible. That means:
  49. a. easy to build (what this file is mostly about)
  50. b. easy to invoke (which requires good API design)
  51. c. easy to deploy (which is about licensing)
  52. I choose to place all my libraries in the public
  53. domain, abjuring copyright, rather than license
  54. the libraries. This has some benefits and some
  55. drawbacks.
  56. Any license which is "viral" to modifications
  57. causes worries for lawyers, even if their programmers
  58. aren't modifying it.
  59. Any license which requires crediting in documentation
  60. adds friction which can add up. Valve used to have
  61. a page with a list of all of these on their web site,
  62. and it was insane, and obviously nobody ever looked
  63. at it so why would you care whether your credit appeared
  64. there?
  65. Permissive licenses like zlib and BSD license are
  66. perfectly reasonable, but they are very wordy and
  67. have only two benefits over public domain: legally-mandated
  68. attribution and liability-control. I do not believe these
  69. are worth the excessive verbosity and user-unfriendliness
  70. these licenses induce, especially in the single-file
  71. case where those licenses tend to be at the top of
  72. the file, the first thing you see. (To the specific
  73. points, I have had no trouble receiving attribution
  74. for my libraries; liability in the face of no explicit
  75. disclaimer of liability is an open question.)
  76. However, public domain has frictions of its own, because
  77. public domain declarations aren't necessary recognized
  78. in the USA and some other locations. For that reason,
  79. I recommend a declaration along these lines:
  80. // This software is dual-licensed to the public domain and under the following
  81. // license: you are granted a perpetual, irrevocable license to copy, modify,
  82. // publish, and distribute this file as you see fit.
  83. I typically place this declaration at the end of the initial
  84. comment block of the file and just say 'public domain'
  85. at the top.
  86. I have had people say they couldn't use one of my
  87. libraries because it was only "public domain" and didn't
  88. have the additional fallback clause, who asked if
  89. I could dual-license it under a traditional license.
  90. My answer: they can create a derivative work by
  91. modifying one character, and then license that however
  92. they like. (Indeed, *adding* the zlib or BSD license
  93. would be such a modification!) Unfortunately, their
  94. lawyers reportedly didn't like that answer. :(
  95. ```