principles.html.j2 (9776B)
1 {% extends "common/base.j2" %} 2 {% block subtitle %}{{ _("Principles")}}{% endblock subtitle %} 3 {% block body_content %} 4 <main id="maincontent"> 5 <script> 6 function expand(n) { 7 var x = document.getElementById(n); 8 console.log(x); 9 x.setAttribute("style", ""); 10 } 11 </script> 12 13 <style> 14 h2 { 15 margin-top: 1em; 16 } 17 </style> 18 19 <div class="container"> 20 <div class="row"> 21 <div class="col"> 22 <h1>{{ _("GNU Taler: Design Principles") }}</h1> 23 </div> 24 </div> 25 <p> 26 {% trans %} 27 When designing GNU Taler, we had the following design principles in mind: 28 {% endtrans %} 29 </p> 30 <div class="row"> 31 <div class="col-lg-12"> 32 <h2>{{ _("1. Free/Libre Software") }}</h2> 33 <a href="https://www.gnu.org/graphics/freedom.html"> 34 <img style="width:20vw;float:right" src="{{ url_static('images/1-libre.png') }}" alt="{{ _("... in the area of computing, freedom means not using proprietary software") }}"> 35 </a> 36 <p> 37 {% trans %} 38 GNU Taler must be <a href="https://www.gnu.org/philosophy/free-sw.html">Free/Libre Software</a>. 39 For merchants, Free/Libre Software prevents vendor lock-in meaning 40 merchants can easily choose another service provider to process 41 their payments. 42 For countries, Free/Libre 43 software means GNU Taler can not compromise sovereignty by imposing 44 restrictions or requirements. And for exchange operators, transparency is crucial to satisfy 45 <a href="https://en.wikipedia.org/wiki/Kerckhoffs's_principle">Kerckhoffs's principle</a> 46 and to establish public confidence. 47 {% endtrans %} 48 </p> 49 <p> 50 {% trans %} 51 Customers benefit from Free/Libre Software because anyone is free to modify the wallet software to support additional platforms. 52 The source code must be available and make it easy to verify that user-hostile features such as tracking or telemetry are absent. 53 {% endtrans %} 54 </p> 55 </div> 56 </div> 57 <div class="row"> 58 <div class="col-lg-12"> 59 <h2 id="privacy">{{ _("2. Protect the privacy of buyers") }}</h2> 60 <!-- From https://www.pixabay.com/ --> 61 <img style="width:20vw;float:left;padding:15px" src="{{ url_static('images/2-buyer-privacy.png') }}" alt="{{_("You deserve some privacy")}}"> 62 <p> 63 {% trans %} 64 Privacy is most meaningful when it is guaranteed via technical measures, as opposed to mere 65 policies. Without a technical layer providing privacy-by-default, financial transactions 66 reveal unnecessary levels of personal or private data. This would be especially true 67 when making micropayments for online publications. Thus, GNU Taler must protect 68 the privacy of buyers to avoid facilitating totalitarian control over the population. 69 {% endtrans %} 70 71 {% trans %} 72 Limited private data, such as the shipping address for a physical 73 delivery, may need to be collected according to business needs 74 and protected according to local laws. In this case, GNU Taler must enable deletion 75 of such data as soon as it is no longer required. 76 {% endtrans %} 77 </p> 78 </div> 79 </div> 80 <div class="row"> 81 <div class="col-lg-12"> 82 <h2>{{ _("3. Auditability - enable the state to tax income and crack down on illegal business activities") }}</h2> 83 <!-- From https://www.pxhere.com/ --> 84 <img style="width:20vw;float:right;padding:15px" src="{{ url_static('images/3-taxable.png') }}" alt="{{_("Money laundering")}}"> 85 <p> 86 {% trans %} 87 As a payment system must comply with local laws in order to operate 88 legally, GNU Taler must be designed to comply with these 89 requirements. GNU Taler must provide an audit trail for investigators 90 operating under the law. 91 92 Furthermore, we consider levying of taxes as 93 beneficial to society, and fair taxation requires income transparency. 94 Thus, GNU Taler must enable authorities to track income. 95 {% endtrans %} 96 </p> 97 </div> 98 </div> 99 <div class="row"> 100 <div class="col-lg-12"> 101 <h2>{{ _("4. Prevent payment fraud") }}</h2> 102 <!-- From https://www.maxpixel.net/ --> 103 <img style="width:20vw;float:left;padding:15px" src="{{ url_static('images/4-fraud.png') }}" alt="{{_("Phishing attack")}}"> 104 <p> 105 {% trans %} 106 GNU Taler must mitigate the most common sources of payment fraud. 107 We must follow best practices in software design, 3rd party 108 design guidelines that prevent confusion and misleading user interfaces, 109 and must have others inspect our publicly available code. 110 111 Furthermore, GNU Taler must provide extensive cryptographic evidence for 112 all key processes to enable all parties to precisely attribute bad behavior. 113 {% endtrans %} 114 </p> 115 </div> 116 </div> 117 <div class="row"> 118 <div class="col-lg-12"> 119 <h2>{{ _("5. Collect the minimum information necessary") }}</h2> 120 <img style="width:20vw;float:right;padding:15px" src="{{ url_static('images/5-data-minimization.png') }}" alt="{{_("Privacy by design, privacy by default, General Data Protection Regulation (GDPR) compliant")}}"> 121 <p> 122 {% trans %} 123 The privacy of buyers is given particular priority as part of 124 <a href="#privacy">principle #2</a>. However, other parties - such as merchants - also 125 must have data protection. 126 127 Generally, GNU Taler must only collect the minimum information necessary: 128 Data that is not collected or is no longer stored cannot be compromised. 129 {% endtrans %} 130 </p> 131 </div> 132 </div> 133 <div class="row"> 134 <div class="col-lg-12"> 135 <h2>{{ _("6. Be usable") }}</h2> 136 <img style="width:20vw;float:left;padding:15px" src="{{ url_static('images/6-usable.png') }}" alt="{{_("Buy with one click. Easy for children.")}}"> 137 <p> 138 {% trans %} 139 GNU Taler must be usable for non-expert customers including 140 end-users of a GNU Taler wallet, merchants who wish to accept payments 141 using GNU Taler, and 3rd party application developers for e-commerce and 142 other platforms. 143 144 GNU Taler must follow best-practices usability guidelines and 145 incorporate feedback from experts and users. Free/Libre software also 146 requires Free/Libre documentation to allow for informed choices. 147 GNU Taler must provide well-documented Application Programming Interfaces (APIs) 148 to allow frictionless integrations between GNU Taler and other projects. 149 {% endtrans %} 150 </p> 151 </div> 152 </div> 153 <div class="row"> 154 <div class="col-lg-12"> 155 <h2>{{ _("7. Be efficient")}}</h2> 156 <img style="width:20vw;float:right;padding:15px" src="{{ url_static('images/7-efficient.png') }}" alt="{{_("Energy efficiency")}}"> 157 <p> 158 {% trans %} 159 GNU Taler must be designed to be efficient. 160 Quite simply, efficiency means fewer things to break, and it means more 161 transactions per second and lower environmental impact. Efficiency 162 is also critical for GNU Taler to be used for micropayments. 163 Therefore certain expensive primitives, such as proof-of-work, 164 must not be used by GNU Taler. 165 {% endtrans %} 166 </p> 167 </div> 168 </div> 169 <div class="row"> 170 <div class="col-lg-12"> 171 <h2>{{ _("8. Fault-tolerant design")}}</h2> 172 <img style="width:20vw;float:left;padding:15px" src="{{ url_static('images/8-fault-tolerant.png') }}" alt="{{_("Life Safers")}}"> 173 <p> 174 {% trans %} 175 Malicious operators, fat fingers, computer glitches, gremlins. Things 176 go wrong. 177 178 GNU Taler must be designed to tolerate failure of individual components and 179 systems. Where the system can continue running safely, it will continue 180 running safely. Where it must halt an operation, other operations 181 must not be needlessly pulled offline. Where systems fail, 182 they must fail gracefully. 183 184 GNU Taler must have a plan to recover from malicious operators 185 compromising core secrets. 186 {% endtrans %} 187 </p> 188 </div> 189 </div> 190 <div class="row"> 191 <div class="col-lg-12"> 192 <h2>{{ _("9. Foster competition")}}</h2> 193 <img style="width:20vw;float:right;padding:15px" src="{{ url_static('images/9-competition.png') }}" alt="{{_("A competitive market")}}"> 194 <p> 195 {% trans %} 196 It must be relatively easy for competitors to deploy interoperable alternatives. The 197 barriers for this in traditional financial systems are rather high and outside 198 of our control. However, GNU Taler must minimize the technical 199 burden for new competitors to enter the market. 200 201 GNU Taler must enable a diverse set of operators, breaking up the current 202 system where only a few global companies dominate the market. 203 204 An example for a design choice that supports this is to split the whole system into 205 smaller components that can be operated, developed and improved upon independently, 206 instead of having one completely monolithic system. 207 {% endtrans %} 208 </p> 209 </div> 210 </div> 211 </div> 212 213 214 {% endblock body_content %}