diff options
Diffstat (limited to 'developers.html.j2')
-rw-r--r-- | developers.html.j2 | 161 |
1 files changed, 99 insertions, 62 deletions
diff --git a/developers.html.j2 b/developers.html.j2 index e3725df4..d235c53a 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 Apache/Mozilla/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> |