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