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