View Issue Details

IDProjectCategoryView StatusLast Update
0003607Talerotherpublic2015-01-29 20:53
ReporterChristian Grothoff Assigned ToChristian Grothoff Resolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PriorityurgentSeveritymajorReproducibilityN/A
Status closedResolutionfixed 
Product Versiongit (master) 
Target Version0.0Fixed in Version0.0 
Summary0003607: restructure code to cleanly separate independent projects
DescriptionI would like to end up in a situation where a wallet or merchant user does not need the mint logic. So we should try to really cleanly separate the various components. I've started to do so with the "new" Gits on git.taler.net, but (1) not all of the neuro-code has been moved, and (2) there are still "odd" interdependencies.

Where I'd like to be (draft):
=============================

1) All crypto utilities (in particular the current RSA logic) should be moved into libgnunetutil/, demo-merchant may use those, but we should cleanly document those to make it easy to re-implement those functions, i.e. for merchants written in PHP or other server-scripty languages.

2) Mint-specific utilities (microhttpd.c) should not be exported and not live in src/util/ but in src/mint/

3) Mint-client library should live in src/client/, not src/mint/ or src/util/, as it is an optional helper library that is nice for writing testcases against the mint, but should not be the only way to access the Mint anyway.

4) Database abstraction and json logic should probably for now simply be replicated if it is really used by both; that is not an API we would want to export and have to keep stable between mint/merchant --- makes no sense.

=> mint.git only exports a (clean) libtalermint (!) API
=> libgnunetutil can be used as quick'n easy crypto API for C hackers
   working on merchant/wallet logic, but not mandatory

Ultimately, I'd like to also see a 'libtalerwallet' API for wallet developers that takes care of everything (mint interaction, merchant interaction, local DB) except GUI. But that'll be another bug report.
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

Christian Grothoff

2015-01-09 17:46

manager   ~0008765

Mostly done. What is left in util:

json.c - could become part of a public API libtalerutil
util.c - some stuff dealing with 'amount's that
         could become part of a public API libtalerutil
       - some functions that might die
       - some crypto wrappers that might also be libtalerutil-ified
db.c - could for now likely be duplicated to merchant, to be
         eliminated once we have proper DB abstraction layer
rsa.c - already in libgnunetutil, but with incompatible API;
         will automatically die once code using it is moved to
         new API.

Christian Grothoff

2015-01-09 17:49

manager   ~0008766

src/mint:
- should move DB API (and implementing plugins)
  into separate directory
- do we want to move tools / mint_common-lib elsewhere?
- we need man pages for all binaries!

Christian Grothoff

2015-01-29 19:55

manager   ~0008825

util.c was split into amount.c and crypto.c (and some stuff to GNUnet). The remaining function MAY also move to GNUnet eventually.

db.c was moved into src/pq/ as it is PostGres-specific (layer 0).

rsa.c is dead (now all in GNUnet).

Christian Grothoff

2015-01-29 19:56

manager   ~0008826

Still to do:

* wallet Git
* merchant Git

Christian Grothoff

2015-01-29 20:35

manager   ~0008828

Gits now exist for all 3 subprojects.

Issue History

Date ModifiedUsernameFieldChange
2015-01-08 19:05Christian GrothoffNew Issue
2015-01-08 19:05Christian GrothoffStatusnew => assigned
2015-01-08 19:05Christian GrothoffAssigned To => Christian Grothoff
2015-01-09 16:33Christian GrothoffDescription Updated
2015-01-09 16:33Christian GrothoffDescription Updated
2015-01-09 17:46Christian GrothoffNote Added: 0008765
2015-01-09 17:49Christian GrothoffNote Added: 0008766
2015-01-29 15:33Christian GrothoffPrioritynormal => urgent
2015-01-29 15:43Christian GrothoffTarget Version => 0.0
2015-01-29 19:55Christian GrothoffNote Added: 0008825
2015-01-29 19:56Christian GrothoffNote Added: 0008826
2015-01-29 20:35Christian GrothoffNote Added: 0008828
2015-01-29 20:35Christian GrothoffStatusassigned => informing
2015-01-29 20:35Christian GrothoffFixed in Version => 0.0
2015-01-29 20:35Christian GrothoffResolutionopen => fixed
2015-01-29 20:53Christian GrothoffStatusinforming => closed