aboutsummaryrefslogtreecommitdiff
path: root/developers.html.j2
diff options
context:
space:
mode:
Diffstat (limited to 'developers.html.j2')
-rw-r--r--developers.html.j2161
1 files changed, 99 insertions, 62 deletions
diff --git a/developers.html.j2 b/developers.html.j2
index e3725df4..56e38781 100644
--- a/developers.html.j2
+++ b/developers.html.j2
@@ -13,20 +13,18 @@
13 13
14 <p> 14 <p>
15 {% trans %} 15 {% trans %}
16 Taler is free software implementing an open 16 GNU Taler is free software implementing an open
17 protocol. Anybody is welcome to inspect our code 17 protocol. Anybody is welcome to integrate our reference
18 and integrate our reference implementation into 18 implementation into their applications. Different
19 their applications. Different components of Taler 19 components of Taler are being made available under
20 are being made available under different 20 different licenses. The Affero GPLv3+ is used for the
21 licenses. The Affero GPLv3+ is used for the
22 exchange, the LGPLv3+ is used for reference code 21 exchange, the LGPLv3+ is used for reference code
23 demonstrating integration with merchant platforms, 22 demonstrating integration with merchant platforms, and
24 and licenses like Apache/Mozilla/GPLv3+ are used 23 licenses like GPLv3+ are used for
25 for wallets and related customer-facing software. 24 wallets and related customer-facing software. We are
26 We are open for constructive suggestions for 25 open for constructive suggestions for maximizing the
27 maximizing the adoption of this libre payment 26 adoption of this payment platform.
28 platform. 27 {% endtrans %}
29 {% endtrans %}
30 </p> 28 </p>
31 29
32 </div> 30 </div>
@@ -46,7 +44,7 @@
46 structure data, making it easy to integrate Taler 44 structure data, making it easy to integrate Taler
47 with existing Web applications. Taler's protocol 45 with existing Web applications. Taler's protocol
48 is documented in 46 is documented in
49 detail <a href="https://api.taler.net/">here</a>. 47 detail at <a href="https://api.taler.net/">api.taler.net</a>.
50 {% endtrans %} 48 {% endtrans %}
51 </p> 49 </p>
52 </div> 50 </div>
@@ -62,13 +60,14 @@
62 <p> 60 <p>
63 {% trans %} 61 {% trans %}
64 Taler is currently primarily developed by a 62 Taler is currently primarily developed by a
65 research team at Inria and GNUnet e.V. However, 63 research team at <a href="http://www.inria.fr/">Inria</a> and
64 <a href="https://gnunet.org/">GNUnet</a>. However,
66 contributions from anyone are welcome. Our Git 65 contributions from anyone are welcome. Our Git
67 repositories can be cloned using the Git and HTTP 66 repositories can be cloned using the Git and HTTP
68 access methods against <tt>git.taler.net</tt> with 67 access methods against <tt>git.taler.net</tt> with
69 the name of the respective repository. A list of 68 the name of the respective repository. A list of
70 public repositories can be found in 69 repositories can be found in
71 our <a href='https://git.taler.net/'>GitWeb</a>. 70 our <a href="https://git.taler.net/">GitWeb</a>.
72 {% endtrans %} 71 {% endtrans %}
73 </p> 72 </p>
74 </div> 73 </div>
@@ -77,54 +76,64 @@
77 76
78 <p> 77 <p>
79 {% trans %} 78 {% trans %}
80 In addition to this website, 79 In addition to this website, the <a
81 the <a href="https://git.taler.net/">documented 80 href="https://git.taler.net/">documented code</a> and
82 code</a> and
83 the <a href="https://api.taler.net/">API 81 the <a href="https://api.taler.net/">API
84 documentation</a>, we are in the process of 82 documentation</a>. Technical papers can be found in
85 preparing a comprehensive design document which 83 our <a href="bibliography.html">bibliography</a>.
86 will be published here soon.
87 {% endtrans %} 84 {% endtrans %}
88 </p> 85 </p>
89 </div> 86 </div>
90 <div class="col-lg-4"> 87 <div class="col-lg-4">
91 <h2>{{ _("Discussion") }}</h2> 88 <h2>{{ _("Discussion") }}</h2>
92 89
93 <p>{{ _("We have a mailing list for developer discussions. 90 <p>
94 You can subscribe to it or read the list archive at 91 {% trans %}
95 <a href='http://lists.gnu.org/mailman/listinfo/taler'>http://lists.gnu.org/mailman/listinfo/taler</a>.") }}</p> 92 We have a mailing list for developer discussions.
93 You can subscribe to or read the list archive at
94 <a href="http://lists.gnu.org/mailman/listinfo/taler">http://lists.gnu.org/mailman/listinfo/taler</a>.
95 {% endtrans %}
96 </p>
96 </div> 97 </div>
97 </div> 98 </div>
98 <div class="row"> 99 <div class="row">
99 <div class="col-lg-4"> 100 <div class="col-lg-4">
100 <h2>{{ _("Regression Testing") }}</h2> 101 <h2>{{ _("Regression Testing") }}</h2>
101 102
102 <p>{{ _("We have 103 <p>
103 <a href='https://buildbot.net/'>Buildbot</a> 104 {% trans %}
104 automation tests to detect regressions and check 105 We have <a href="https://buildbot.net/">Buildbot</a>
105 for portability at 106 automation tests to detect regressions and check for
106 <a href='https://buildbot.taler.net/'>buildbot.taler.net</a>. 107 portability at <a
107 ") }}</p> 108 href="https://buildbot.taler.net/">buildbot.taler.net</a>.
109 {% endtrans %}
110 </p>
108 </div> 111 </div>
109 <div class="col-lg-4" note="not yet operational"> 112 <div class="col-lg-4" note="not yet operational">
110 <h2>{{ _("Code Coverage Analysis") }}</h2> 113 <h2>{{ _("Code Coverage Analysis") }}</h2>
111 114
112 <p>{{ _("We use 115 <p>
113 <a href='http://ltp.sourceforge.net/coverage/lcov.php'>LCOV</a> 116 {% trans %}
117 We use
118 <a href="http://ltp.sourceforge.net/coverage/lcov.php">LCOV</a>
114 to analyze the code coverage of our tests, the 119 to analyze the code coverage of our tests, the
115 results are available 120 results are available
116 at <a href='https://lcov.taler.net/'>lcov.taler.net</a>. 121 at <a href="https://lcov.taler.net/">lcov.taler.net</a>.
117 ") }}</p> 122 {% endtrans %}
123 </p>
118 </div> 124 </div>
119 <div class="col-lg-4"> 125 <div class="col-lg-4">
120 <h2>{{ _("Performance Analysis") }}</h2> 126 <h2>{{ _("Performance Analysis") }}</h2>
121 127
122 <p>{{ _("We 128 <p>
123 use <a href='https://gnunet.org/gauger'>Gauger</a> 129 {% trans %}
130 We
131 use <a href="https://gnunet.org/gauger">Gauger</a>
124 for performance regression analysis of the exchange 132 for performance regression analysis of the exchange
125 backend 133 backend
126 at <a href='https://gauger.taler.net/'>gauger.taler.net</a>. 134 at <a href="https://gauger.taler.net/">gauger.taler.net</a>.
127 ") }}</p> 135 {% endtrans %}
136 </p>
128 </div> 137 </div>
129 </div> 138 </div>
130</div> 139</div>
@@ -135,24 +144,31 @@
135 <div class="col-lg-12"> 144 <div class="col-lg-12">
136 <h2 id="overview">{{ _("Taler system overview") }}</h2> 145 <h2 id="overview">{{ _("Taler system overview") }}</h2>
137 146
138 <p>{{ _("The Taler system consists of protocols executed among 147 <p>
139 a number of actors with the help 148 {% trans %}
140 of <a href='https://www.fsf.org/'>Free Software</a> 149 The Taler system consists of protocols executed among
141 as illustrated in the illustration on the right. 150 a number of actors as illustrated in the illustration on the right.
142 Typical transactions involve the following steps: ") 151 Typical transactions involve the following steps:
143 }}</p> 152 {% endtrans %}
153 </p>
144 154
145 <img src="{{ url('images/system.svg') }}" alt="system overview" style="float: right; margin: 50px 5px 5px 5px;" width="50%"> 155 <img src="{{ url('images/system.svg') }}" alt="system overview" style="float: right; margin: 50px 5px 5px 5px;" width="50%">
146 <ol> 156 <ol>
147 <li>{{ _("A customer instructs his <b>bank</b> to 157 <li>
158 {% trans %}
159 A customer instructs his <b>bank</b> to
148 transfer funds from his account to the Taler 160 transfer funds from his account to the Taler
149 exchange (top left). In the subject of the 161 exchange (top left). In the subject of the
150 transaction, he includes an authentication 162 transaction, he includes an authentication
151 token from his electronic <b>wallet</b>. In 163 token from his electronic <b>wallet</b>. In
152 Taler terminology, the customer creates a 164 Taler terminology, the customer creates a
153 reserve at the exchange. ") }}</li> 165 reserve at the exchange.
166 {% endtrans %}
167 </li>
154 168
155 <li>{{ _("Once the exchange has received the wire 169 <li>
170 {% trans %}
171 Once the exchange has received the wire
156 transfer, it allows the customer's electronic 172 transfer, it allows the customer's electronic
157 wallet to <b>withdraw</b> electronic coins. 173 wallet to <b>withdraw</b> electronic coins.
158 The electronic coins are digital 174 The electronic coins are digital
@@ -164,10 +180,13 @@
164 purchased what at which merchant. The use of 180 purchased what at which merchant. The use of
165 Taler does not change the currency or the total 181 Taler does not change the currency or the total
166 value of the funds (except for fees which the 182 value of the funds (except for fees which the
167 exchange may charge for the service). ") 183 exchange may charge for the service).
168 }}</li> 184 {% endtrans %}
185 </li>
169 186
170 <li>{{ _("Once the customer has the digital coins in his 187 <li>
188 {% trans %}
189 Once the customer has the digital coins in his
171 wallet, the wallet can be used to <b>spend</b> 190 wallet, the wallet can be used to <b>spend</b>
172 the coins with merchant portals that support 191 the coins with merchant portals that support
173 the Taler payment system and accept the 192 the Taler payment system and accept the
@@ -183,10 +202,14 @@
183 merchant to learn the identity of the 202 merchant to learn the identity of the
184 customer. Naturally, the customer can spend any 203 customer. Naturally, the customer can spend any
185 fraction of his digital coins (the system takes 204 fraction of his digital coins (the system takes
186 care of customers getting change). ") }}</li> 205 care of customers getting change).
206 {% endtrans %}
207 </li>
187 208
188 <li>{{ _("Merchants receiving digital 209 <li>
189 coins <b>deposit</b> the respective receipts 210 {% trans %}
211 Merchants receiving digital
212 coins <b>deposit</b> the respective claims
190 that resulted from the contract signing with 213 that resulted from the contract signing with
191 the customer at the exchange to redeem the 214 the customer at the exchange to redeem the
192 coins. The deposit step does not reveal the 215 coins. The deposit step does not reveal the
@@ -202,9 +225,13 @@
202 the customer. Thus, the exchange's database 225 the customer. Thus, the exchange's database
203 allows the state to enforce that merchants pay 226 allows the state to enforce that merchants pay
204 applicable taxes (and do not engage in illegal 227 applicable taxes (and do not engage in illegal
205 contracts). ") }}</li> 228 contracts).
229 {% endtrans %}
230 </li>
206 231
207 <li>{{ _("Finally, the exchange transfers funds 232 <li>
233 {% trans %}
234 Finally, the exchange transfers funds
208 corresponding to the digital coins redeemed by 235 corresponding to the digital coins redeemed by
209 the merchants to the merchant's <b>bank</b> 236 the merchants to the merchant's <b>bank</b>
210 account. The exchange may combine multiple 237 account. The exchange may combine multiple
@@ -212,9 +239,13 @@
212 transfer. The merchant can query the exchange 239 transfer. The merchant can query the exchange
213 about the relationship between the bank 240 about the relationship between the bank
214 transfers and the individual claims that were 241 transfers and the individual claims that were
215 deposited. ") }}</li> 242 deposited.
243 {% endtrans %}
244 </li>
216 245
217 <li>{{ _("Most importantly, the exchange keeps 246 <li>
247 {% trans %}
248 Most importantly, the exchange keeps
218 cryptographic proofs that allow it to 249 cryptographic proofs that allow it to
219 demonstrate that it is operating correctly to 250 demonstrate that it is operating correctly to
220 third parties. The system requires an 251 third parties. The system requires an
@@ -223,9 +254,13 @@
223 to frequently verify the exchange's databases 254 to frequently verify the exchange's databases
224 and check that its bank balance matches the 255 and check that its bank balance matches the
225 total value of the remaining coins in 256 total value of the remaining coins in
226 circulation. ") }}</li> 257 circulation.
258 {% endtrans %}
259 </li>
227 260
228 <li>{{ _("Without the auditor, the exchange operators 261 <li>
262 {% trans %}
263 Without the auditor, the exchange operators
229 could embezzle funds they are holding in 264 could embezzle funds they are holding in
230 reserve. Customers and merchants cannot cheat 265 reserve. Customers and merchants cannot cheat
231 each other or the exchange. If any party's 266 each other or the exchange. If any party's
@@ -233,7 +268,9 @@
233 is limited to the respective party and 268 is limited to the respective party and
234 proportional to the funds they have in 269 proportional to the funds they have in
235 circulation during the period of the 270 circulation during the period of the
236 compromise. ") }}</li> 271 compromise.
272 {% endtrans %}
273 </li>
237 </ol> 274 </ol>
238 <p></p> 275 <p></p>
239 </div> 276 </div>