diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-03-06 03:50:07 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-03-06 03:50:07 +0100 |
commit | 14af51dacedf00bbd460cdc1584cd9f81cb0d1f5 (patch) | |
tree | ead860a63fd22466d020ddceeaafe45d38076611 /developers.html.j2 | |
parent | a28f7615c32a9bde7cc70fd00290a8f68917f916 (diff) | |
download | www-14af51dacedf00bbd460cdc1584cd9f81cb0d1f5.tar.gz www-14af51dacedf00bbd460cdc1584cd9f81cb0d1f5.zip |
conversion/text
Diffstat (limited to 'developers.html.j2')
-rw-r--r-- | developers.html.j2 | 455 |
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 "serial |
143 | 143 | numbers" 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 "serial | 150 | |
151 | numbers" 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> | ||