you forgot thrudds http://elitetradingtool.co.uk/
It's hiding in there in the spoilers
I really should try to get my forum name changed hehe.
you forgot thrudds http://elitetradingtool.co.uk/
It's hiding in there in the spoilers
I really should try to get my forum name changed hehe.
Whether or not kfsone and/or maddavo are on board or want to participate, the format of the code and trade data is completely open source, so if they continued their own way, it would be straightforward to integrate their data into a 'universal' (no pun intended) database.
Who is setting that up? And finally, when will it be up?
Sounds neat.
Can't help but feel though with a solution that relies on a central server/database that the costs to maintain that server would go up fast, also possibly leading into that server going down/up, taking everyones tools usability down. And worst case the maintainer of the server just disappearing and shutting down the server gone with it all the data. This system requires a sole person/server to be at the epicenter of trust.
Could be I'm shamelessly plugging my own idea/thread, but that's genuinely how I feel about it. *shrug*
Whether or not kfsone and/or maddavo are on board or want to participate, the format of the code and trade data is completely open source, so if they continued their own way, it would be straightforward to integrate their data into a 'universal' (no pun intended) database.
Can't help but feel though with a solution that relies on a central server/database that the costs to maintain that server would go up fast, also possibly leading into that server going down/up, taking everyones tools usability down. And worst case the maintainer of the server just disappearing and shutting down the server gone with it all the data. This system requires a sole person/server to be at the epicenter of trust.
@burzum. Thanks for your input. Like I said, have to go away in a few hours and can't respond now. Will try my best to do that this evening.
Seriously, there is no need for ZeroMQ. Just stick to JSON, agree on a structure, and then you can create RESTful web service that can handle star data, stations, black markets, commodities, you name it. Done this way, you can have as many front-ends as you like, and a public-API for all to use until Frontier release an API themselves.
I think you're confusing layers. ZeroMQ is not an alternative to JSON. ZeroMQ is a way of efficiently moving the JSON from the players who create it, to all those who want to consume it, including those who want to provide a RESTful web service interface to the data. Having the latter as a centralised single point of failure isn't a very good model for this sort of system, nor does it scale as easily (and remember, in this game, scale is quite an important thing!)
Lot's of juniors devs around? I'm asking because I see a lot of talk and people being eager to start coding, which is a typical junior approach. Senior is to gather and write solid specs first, a technical documentation and then start with the implementation. So the first step should be to set up a wiki and document it and then start implementing it. I would propose to use a git repository on Github for that and using the markdown functionality it offers. Changes and suggestions to the documentation can be made by cloning the repo, making a change and doing a pull request. This can be discussed then and accepted if the majority agrees to it. You can see an example how this works here.
So what should be discussed and agreed on first is a transport and technologies to pick.
ZeroMQ vs RESTful
ZeroMQ is a little more tough to implement than REST in most languages. I think almost every language has a lib for HTTP requests or even a dedicated REST lib. ZeroMQ on the other hand is probably faster. Technically it would be possible to implement both without much effort if the application architecture is well done. ZeroMQ/RESTful -> service layer -> Model layer for example.
Data format
I would suggest JSON, the footprint is much lower than using a XML format and same argument as above, almost all languages can deal with it. However, if properly done it would be very easy to serve any data format that is wanted. CSV or XML could be provided easily. Both would be just ~1h of implementation time if it is done right. But when sending data to the application there should be only one format.
Database
We won't ever get the whole galaxy mapped within our lifetime, by a rough calculation 100 billion systems, where every system has a data set with a size of 15kb would take ~14305gb on disk. And I doubt we will reach that any time soon either. I think the LHC and it's experiments already generated a lot more data than this.
The basic question would be if we want to go for a relational DB or a none relational and NoSQL DB. There has been a pretty annoying hype about NoSQL DBs trying to generate the impression they are a complete replacement - which is wrong. As always, use the right tool for the right job. We need to determine first if we have a lot of relatively complex relations or not. Depending on that we can pick between Postgres and MongoDB for example. After that step we can start designing the DB schema.
The best would be in the case of doubts to build a prototype and benchmark it. I have not much trust in pure speculations that something is faster than another solution without benchmarks. People like to make claims about their favorite toys but very often don't provide proof.
Server side
I would go for a php based solution (using a framework) or NodeJS.
Authentication
OAuth 2.0 and / or JWT Token?
API Design
We need to define endpoints and paramters for API calls. Also an API should be versioned so that clients have an upgrade path and can still use an old API while there is a new iteration of the API. For example api.elitedata.org/v1/, api.elitedata.org/v2/...
Here are a few services I could think of the API should offer:
- /market (buy / sell data)
- /ships
- /commodities
- /components (ship parts or however you call them)
- /systems
Unit tests
Whatever is decided, test that code! At least I won't join anything that doesn't use unit tests.
Open source
To open the source or to not open the source of the application code is the big question. I would go for opening it. Bug fixes, enhancements and contributions can be made by everybody then.
Who is going to pay for that infrastructure?
That is a serious question. I doubt a donate button alone will bring enough revenue to run the servers for a long time. I know some people wont like this and run away: Enforce the consumers of the API to display ads in their app and to return that revenue to the API provider to cover the costs for keeping the API up and running. Feel free to come up with better suggestions.
---
By the way, I personally could come up with a prototype application within a weekend that implements a RESTful API - give the situation we have clear specifications to start with. I have some experience with php frameworks, AngularJS, Jquery, API Design and a bunch of other things and the management side of development. I've worked as lead developer the last few years until I've switched some time ago to smaller company to get a less stressful position to avoid a burnout. However, I love to write code again in my free time after that switch, so let the planing begin!