Hey DEVs and NXT'ers - I have a few thoughts and topics about my NRS API implementation.
Needed to sort and structure my thoughts, and thought this might be nice to ask for some input.
As of now, I have an industrial-strength implementation of the nxt client-side API.
In fact, I have been busting my ass and putting in insane hours over the last couple of weeks.
This may have the potential to become the standard nxt api client side -
but I am a bit at a loss on the modalities of how to release or market it.
I'll just drop some detail:
- uses python3
- needs libs: PyQt4, requests, json, pyqtgraph, (scipy for the algo class)
- window widget layouts are made with qtdesigner
- uses multiple windows - more can easliy be added.
- uses PyQt4 signals and slots to bounce around signals
- there is a nxtApiSigs class, that does the actual communication with the NRS, but should not be accessed from the client windows (although no one is stopping you from doing so - pythonic!)
- there is a nxtApiBroker class, that implements the clients use case logic by composing the compound api requests.
The nxtApiBroker then send the requests to the nxtApiSigs class. The nxtApiBroker also receives the replies that the nxtApiSigs class fetches from the NRS backend.
- the nxtApiBroker has signals that it can send to any number of widgets on multiple windows.
- feeding a widget with a signal from the backend is done in the windowcontrol.
- a signal that returns from the api can be fed into as many widgets as desired - e.g. the 'getBalance' can be sent to multipe widgets simultaneously, also on multiple windows.
- so far pretty standard MVC stuff - only that PyQT4 Sigs&Slots are brutally versatile
- NRS polling can be done with adjustable QTimers - but: it can also be hooked up to external events like a listener that listens to messages from elsewhere and then takes action
- There is a plugin for an 'Algo' class that can be used to analyze data and issue action signals (e.g. buy/sell)
- it uses scipy. scipy is THE scientific computation library. everything alse is ashes. mat***, MAT***, R, math***, MAP***, - dust.
Honestly: it seems totally inconceivable to me how anything remotely concerned with any kind of data analysis could with a straight face NOT use a scientific library with some kind of an array class!
- adding new API calls is a piece of cake: when 'getAccount' was added, I had it plugged in in less than one hour.
- python can also control a jvm, i.e. NRS can be included in the client!
My problem: This seems to be a carrier class api implementation I have there - alas, it is too unwieldy to become a 'full feature' client quickly, let alone being foolproof.
I think I will be able to produce a 'thin feature client' within the next two weeks, but I am hesitant to compete in the arena of 'full feature clients', because my perspective and focus are different.
I could spend the next four weeks putting on pink gloss and eyecandy - but I am not experirenced in this, and I don't have the time. And also - why waste effort by trying to put a third full feautre client in line with the already existing projects (nexern and marcus03')?
On the other hand: The community can pick this up and develop client functionality - because it is not fucking C# or Delphi, but plain python, that anyone can pick up and amend extremely quickly.
What can I do?
- quickly put on a skeleton functionality to convince the community of the scalability and performance of the api. - Or will this be trollbait for the usual gollumssessesses ?
- hold it back and try to implement DACs and SMS gateway
- 'InsideBitcoin' will be in Berlin in two weeks. I'll work hard to get a demonstrator ready to show around there.
- guess I'll put in threading for upcoming increase in MSGs ...
BTW: under what licence are we supposed to publish our things
MIT licence? Just paste it on top of every file and it is done??? Or rather GPLv3?