aboutsummaryrefslogtreecommitdiff
path: root/developers.html.j2
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-03-06 03:50:07 +0100
committerFlorian Dold <florian.dold@gmail.com>2017-03-06 03:50:07 +0100
commit14af51dacedf00bbd460cdc1584cd9f81cb0d1f5 (patch)
treeead860a63fd22466d020ddceeaafe45d38076611 /developers.html.j2
parenta28f7615c32a9bde7cc70fd00290a8f68917f916 (diff)
downloadwww-14af51dacedf00bbd460cdc1584cd9f81cb0d1f5.tar.gz
www-14af51dacedf00bbd460cdc1584cd9f81cb0d1f5.zip
conversion/text
Diffstat (limited to 'developers.html.j2')
-rw-r--r--developers.html.j2455
1 files changed, 223 insertions, 232 deletions
diff --git a/developers.html.j2 b/developers.html.j2
index f6023274..3cad801c 100644
--- a/developers.html.j2
+++ b/developers.html.j2
@@ -1,232 +1,223 @@
1<!DOCTYPE html> 1{% extends "common/base.j2" %}
2<html lang="{{ _('en') }}"> 2{% block body_content %}
3 <head> 3<div class="jumbotron">
4 <meta charset="UTF-8"/> 4 <div class="text-center">
5 <title>{{ _("GNU Taler") }} - {{ _("Developers") }}</title> 5 <h1>{{ _("Taler for developers") }}</h1>
6 <meta name="description" content=""/> 6 </div>
7 {% include "common/header.j2.inc" %} 7</div>
8 </head> 8
9 <body> 9<div class="container">
10 <div class="container"> 10 <div class="row">
11 {% include "common/navigation.j2.inc" %} 11 <div class="col-lg-6">
12 <!-- Jumbotron --> 12 <h2>{{ _("Free") }}</h2>
13 <div class="jumbotron"> 13
14 <h1>{{ _("Taler for developers") }}</h1> 14 <p>{{ _("Taler is free software implementing an open
15 </div> 15 protocol. Anybody is welcome to inspect our code
16 16 and integrate our reference implementation into
17 <!-- Example row of columns --> 17 their applications. Different components of Taler
18 <div class="row"> 18 are being made available under different
19 <div class="col-lg-6"> 19 licenses. The Affero GPLv3+ is used for the
20 <h2>{{ _("Free") }}</h2> 20 exchange, the LGPLv3+ is used for reference code
21 21 demonstrating integration with merchant platforms,
22 <p>{{ _("Taler is free software implementing an open 22 and licenses like Apache/Mozilla/GPLv3+ are used
23 protocol. Anybody is welcome to inspect our code 23 for wallets and related customer-facing software.
24 and integrate our reference implementation into 24 We are open for constructive suggestions for
25 their applications. Different components of Taler 25 maximizing the adoption of this libre payment
26 are being made available under different 26 platform. ") }}</p>
27 licenses. The Affero GPLv3+ is used for the 27
28 exchange, the LGPLv3+ is used for reference code 28 </div>
29 demonstrating integration with merchant platforms, 29 <div class="col-lg-6">
30 and licenses like Apache/Mozilla/GPLv3+ are used 30 <h2>{{ _("RESTful") }}</h2>
31 for wallets and related customer-facing software. 31
32 We are open for constructive suggestions for 32 <p>{{ _("Taler is designed to work on the Internet. To
33 maximizing the adoption of this libre payment 33 ensure that Taler payments can work with
34 platform. ") }}</p> 34 restrictive network setups, Taler uses a RESTful
35 35 protocol over HTTP or HTTPS. Taler's security does
36 </div> 36 not depend upon the use of HTTPS, but obviously
37 <div class="col-lg-6"> 37 merchants may choose to offer HTTPS for consistency
38 <h2>{{ _("RESTful") }}</h2> 38 and because it generally is better for privacy
39 39 compared to HTTP. Taler uses JSON to encode
40 <p>{{ _("Taler is designed to work on the Internet. To 40 structure data, making it easy to integrate Taler
41 ensure that Taler payments can work with 41 with existing Web applications. Taler's protocol
42 restrictive network setups, Taler uses a RESTful 42 is documented in
43 protocol over HTTP or HTTPS. Taler's security does 43 detail <a href='https://api.taler.net/'>here</a>.
44 not depend upon the use of HTTPS, but obviously 44 ") }}</p>
45 merchants may choose to offer HTTPS for consistency 45
46 and because it generally is better for privacy 46 </div>
47 compared to HTTP. Taler uses JSON to encode 47 </div>
48 structure data, making it easy to integrate Taler 48 <div class="row">
49 with existing Web applications. Taler's protocol 49 <div class="col-lg-4">
50 is documented in 50 <h2>{{ _("Code") }}</h2>
51 detail <a href='https://api.taler.net/'>here</a>. 51
52 ") }}</p> 52 <p>{{ _("Taler is currently primarily developed by a
53 53 research team at Inria and GNUnet e.V. However,
54 </div> 54 contributions from anyone are welcome. Our Git
55 </div> 55 repositories can be cloned using the Git and HTTP
56 <div class="row"> 56 access methods against <tt>git.taler.net</tt> with
57 <div class="col-lg-4"> 57 the name of the respective repository. A list of
58 <h2>{{ _("Code") }}</h2> 58 public repositories can be found in
59 59 our <a href='https://git.taler.net/'>GitWeb</a>.
60 <p>{{ _("Taler is currently primarily developed by a 60 ") }}</p>
61 research team at Inria and GNUnet e.V. However, 61
62 contributions from anyone are welcome. Our Git 62 </div>
63 repositories can be cloned using the Git and HTTP 63 <div class="col-lg-4">
64 access methods against <tt>git.taler.net</tt> with 64 <h2>{{ _("Documentation") }}</h2>
65 the name of the respective repository. A list of 65
66 public repositories can be found in 66 <p>{{ _("In addition to this website,
67 our <a href='https://git.taler.net/'>GitWeb</a>. 67 the <a href='https://git.taler.net/'>documented
68 ") }}</p> 68 code</a> and
69 69 the <a href='https://api.taler.net/'>API
70 </div> 70 documentation</a>, we are in the process of
71 <div class="col-lg-4"> 71 preparing a comprehensive design document which
72 <h2>{{ _("Documentation") }}</h2> 72 will be published here soon. ") }}</p>
73 73 </div>
74 <p>{{ _("In addition to this website, 74 <div class="col-lg-4">
75 the <a href='https://git.taler.net/'>documented 75 <h2>{{ _("Discussion") }}</h2>
76 code</a> and 76
77 the <a href='https://api.taler.net/'>API 77 <p>{{ _("We have a mailinglist for developer discussions.
78 documentation</a>, we are in the process of 78 You can subscribe to it or read the list archive at
79 preparing a comprehensive design document which 79 <a href='http://lists.gnu.org/mailman/listinfo/taler'>http://lists.gnu.org/mailman/listinfo/taler</a>.") }}</p>
80 will be published here soon. ") }}</p> 80 </div>
81 </div> 81 </div>
82 <div class="col-lg-4"> 82
83 <h2>{{ _("Discussion") }}</h2> 83 <div class="row">
84 84 <div class="col-lg-4">
85 <p>{{ _("We have a mailinglist for developer discussions. 85 <h2>{{ _("Regression Testing") }}</h2>
86 You can subscribe to it or read the list archive at 86
87 <a href='http://lists.gnu.org/mailman/listinfo/taler'>http://lists.gnu.org/mailman/listinfo/taler</a>.") }}</p> 87 <p>{{ _("We have
88 </div> 88 <a href='https://buildbot.net/'>Buildbot</a>
89 </div> 89 automation tests to detect regressions and check
90 90 for portability at
91 <div class="row"> 91 <a href='https://buildbot.taler.net/'>buildbot.taler.net</a>.
92 <div class="col-lg-4"> 92 ") }}</p>
93 <h2>{{ _("Regression Testing") }}</h2> 93 </div>
94 94 <div class="col-lg-4" note="not yet operational">
95 <p>{{ _("We have 95 <h2>{{ _("Code Coverage Analysis") }}</h2>
96 <a href='https://buildbot.net/'>Buildbot</a> 96
97 automation tests to detect regressions and check 97 <p>{{ _("We use
98 for portability at 98 <a href='http://ltp.sourceforge.net/coverage/lcov.php'>LCOV</a>
99 <a href='https://buildbot.taler.net/'>buildbot.taler.net</a>. 99 to analyze the code coverage of our tests, the
100 ") }}</p> 100 results are available
101 </div> 101 at <a href='https://lcov.taler.net/'>lcov.taler.net</a>.
102 <div class="col-lg-4" note="not yet operational"> 102 ") }}</p>
103 <h2>{{ _("Code Coverage Analysis") }}</h2> 103 </div>
104 104 <div class="col-lg-4">
105 <p>{{ _("We use 105 <h2>{{ _("Performance Analysis") }}</h2>
106 <a href='http://ltp.sourceforge.net/coverage/lcov.php'>LCOV</a> 106
107 to analyze the code coverage of our tests, the 107 <p>{{ _("We
108 results are available 108 use <a href='https://gnunet.org/gauger'>Gauger</a>
109 at <a href='https://lcov.taler.net/'>lcov.taler.net</a>. 109 for performance regression analysis of the exchange
110 ") }}</p> 110 backend
111 </div> 111 at <a href='https://gauger.taler.net/'>gauger.taler.net</a>.
112 <div class="col-lg-4"> 112 ") }}</p>
113 <h2>{{ _("Performance Analysis") }}</h2> 113 </div>
114 114 </div>
115 <p>{{ _("We 115
116 use <a href='https://gnunet.org/gauger'>Gauger</a> 116 <div class="col-lg-12">
117 for performance regression analysis of the exchange 117 <h2 id="overview">{{ _("Taler system overview") }}</h2>
118 backend 118
119 at <a href='https://gauger.taler.net/'>gauger.taler.net</a>. 119 <p>{{ _("The Taler system consists of protocols executed among
120 ") }}</p> 120 a number of actors with the help
121 </div> 121 of <a href='https://www.fsf.org/'>Free Software</a>
122 </div> 122 as illustrated in the illustration on the right.
123 123 Typical transactions involve the following steps: ")
124 <div class="col-lg-12"> 124 }}</p>
125 <h2 id="overview">{{ _("Taler system overview") }}</h2> 125
126 126 <img src="{{ url('images/system.svg') }}" alt="system overview" style="float: right; margin: 50px 5px 5px 5px;" width="50%">
127 <p>{{ _("The Taler system consists of protocols executed among 127 <ol>
128 a number of actors with the help 128 <li>{{ _("A customer instructs his <b>bank</b> to
129 of <a href='https://www.fsf.org/'>Free Software</a> 129 transfer funds from his account to the Taler
130 as illustrated in the illustration on the right. 130 exchange (top left). In the subject of the
131 Typical transactions involve the following steps: ") 131 transaction, he includes an authentication
132 }}</p> 132 token from his electronic <b>wallet</b>. In
133 133 Taler terminology, the customer creates a
134 <img src="{{ url('images/system.svg') }}" alt="system overview" style="float: right; margin: 50px 5px 5px 5px;" width="50%"> 134 reserve at the exchange. ") }}</li>
135 <ol> 135
136 <li>{{ _("A customer instructs his <b>bank</b> to 136 <li>{{ _("Once the exchange has received the wire
137 transfer funds from his account to the Taler 137 transfer, it allows the customer's electronic
138 exchange (top left). In the subject of the 138 wallet to <b>withdraw</b> electronic coins.
139 transaction, he includes an authentication 139 The electronic coins are digital
140 token from his electronic <b>wallet</b>. In 140 representations of the original currency from
141 Taler terminology, the customer creates a 141 the transfer. It is important to note that the
142 reserve at the exchange. ") }}</li> 142 exchange does not learn the &quot;serial
143 143 numbers&quot; of the coins created in this
144 <li>{{ _("Once the exchange has received the wire 144 process, so it cannot tell later which customer
145 transfer, it allows the customer's electronic 145 purchased what at which merchant. The use of
146 wallet to <b>withdraw</b> electronic coins. 146 Taler does not change the currency or the total
147 The electronic coins are digital 147 value of the funds (except for fees which the
148 representations of the original currency from 148 exchange may charge for the service). ")
149 the transfer. It is important to note that the 149 }}</li>
150 exchange does not learn the &quot;serial 150
151 numbers&quot; of the coins created in this 151 <li>{{ _("Once the customer has the digital coins in his
152 process, so it cannot tell later which customer 152 wallet, the wallet can be used to <b>spend</b>
153 purchased what at which merchant. The use of 153 the coins with merchant portals that support
154 Taler does not change the currency or the total 154 the Taler payment system and accept the
155 value of the funds (except for fees which the 155 respective exchange as a business partner
156 exchange may charge for the service). ") 156 (bottom arrow). This creates a digital contract
157 }}</li> 157 signed by the customer's coins and the
158 158 merchant. If necessary, the customer can later
159 <li>{{ _("Once the customer has the digital coins in his 159 use this digitally signed contract in a court
160 wallet, the wallet can be used to <b>spend</b> 160 of law to prove the exact terms of the contract
161 the coins with merchant portals that support 161 and that he paid the respective amount. The
162 the Taler payment system and accept the 162 customer does not learn the banking details of
163 respective exchange as a business partner 163 the merchant, and Taler does not require the
164 (bottom arrow). This creates a digital contract 164 merchant to learn the identity of the
165 signed by the customer's coins and the 165 customer. Naturally, the customer can spend any
166 merchant. If necessary, the customer can later 166 fraction of his digital coins (the system takes
167 use this digitally signed contract in a court 167 care of customers getting change). ") }}</li>
168 of law to prove the exact terms of the contract 168
169 and that he paid the respective amount. The 169 <li>{{ _("Merchants receiving digital
170 customer does not learn the banking details of 170 coins <b>deposit</b> the respective receipts
171 the merchant, and Taler does not require the 171 that resulted from the contract signing with
172 merchant to learn the identity of the 172 the customer at the exchange to redeem the
173 customer. Naturally, the customer can spend any 173 coins. The deposit step does not reveal the
174 fraction of his digital coins (the system takes 174 details of the contract between the customer
175 care of customers getting change). ") }}</li> 175 and the merchant or the identity of the
176 176 customer to the exchange in any way. However,
177 <li>{{ _("Merchants receiving digital 177 the exchange does learn the identity of the
178 coins <b>deposit</b> the respective receipts 178 merchant via the provided bank routing
179 that resulted from the contract signing with 179 information. The merchant can, for example
180 the customer at the exchange to redeem the 180 when compelled by the state for taxation,
181 coins. The deposit step does not reveal the 181 provide information linking the individual
182 details of the contract between the customer 182 deposit to the respective contract signed by
183 and the merchant or the identity of the 183 the customer. Thus, the exchange's database
184 customer to the exchange in any way. However, 184 allows the state to enforce that merchants pay
185 the exchange does learn the identity of the 185 applicable taxes (and do not engage in illegal
186 merchant via the provided bank routing 186 contracts). ") }}</li>
187 information. The merchant can, for example 187
188 when compelled by the state for taxation, 188 <li>{{ _("Finally, the exchange transfers funds
189 provide information linking the individual 189 corresponding to the digital coins redeemed by
190 deposit to the respective contract signed by 190 the merchants to the merchant's <b>bank</b>
191 the customer. Thus, the exchange's database 191 account. The exchange may combine multiple
192 allows the state to enforce that merchants pay 192 small transactions into one larger bank
193 applicable taxes (and do not engage in illegal 193 transfer. The merchant can query the exchange
194 contracts). ") }}</li> 194 about the relationship between the bank
195 195 transfers and the individual claims that were
196 <li>{{ _("Finally, the exchange transfers funds 196 deposited. ") }}</li>
197 corresponding to the digital coins redeemed by 197
198 the merchants to the merchant's <b>bank</b> 198 <li>{{ _("Most importantly, the exchange keeps
199 account. The exchange may combine multiple 199 cryptographic proofs that allow it to
200 small transactions into one larger bank 200 demonstrate that it is operating correctly to
201 transfer. The merchant can query the exchange 201 third parties. The system requires an
202 about the relationship between the bank 202 external <b>auditor</b>, such as a
203 transfers and the individual claims that were 203 government-appointed financial regulatory body,
204 deposited. ") }}</li> 204 to frequently verify the exchange's databases
205 205 and check that its bank balance matches the
206 <li>{{ _("Most importantly, the exchange keeps 206 total value of the remaining coins in
207 cryptographic proofs that allow it to 207 circulation. ") }}</li>
208 demonstrate that it is operating correctly to 208
209 third parties. The system requires an 209 <li>{{ _("Without the auditor, the exchange operators
210 external <b>auditor</b>, such as a 210 could embezzle funds they are holding in
211 government-appointed financial regulatory body, 211 reserve. Customers and merchants cannot cheat
212 to frequently verify the exchange's databases 212 each other or the exchange. If any party's
213 and check that its bank balance matches the 213 computers are compromised, the financial damage
214 total value of the remaining coins in 214 is limited to the respective party and
215 circulation. ") }}</li> 215 proportional to the funds they have in
216 216 circulation during the period of the
217 <li>{{ _("Without the auditor, the exchange operators 217 compromise. ") }}</li>
218 could embezzle funds they are holding in 218 </ol>
219 reserve. Customers and merchants cannot cheat 219 <p></p>
220 each other or the exchange. If any party's 220 </div>
221 computers are compromised, the financial damage 221 {% include "common/footer.j2.inc" %}:w
222 is limited to the respective party and 222</div> <!-- /container -->
223 proportional to the funds they have in 223{% endblock body_content %}
224 circulation during the period of the
225 compromise. ") }}</li>
226 </ol>
227 <p></p>
228 </div>
229 {% include "common/footer.j2.inc" %}:w
230 </div> <!-- /container -->
231 </body>
232</html>