Open zcstarr opened 5 years ago
I wrote this quickly to just put together a list of the concerns so we can keep these things in mind. I avoided talking implementation specifics. I wanted to see if these problems meshed with the ideas we all have in the brain. I think what I'll end up doing as we gain consensus or question, is then add a section that talks more implementation/proposals for executing the above. It's a product slant first.
I think impl wise we can probably have the service runner as the open-rpc supported entity, and can use https://github.com/etclabscore/jade/pull/18 , maybe refiling the PR in this repo to start iterating on what the exact spec should be.
Let me know what you think or what should be change or if this should be moved into a PR if that's easier to suggests edits etc...
This is a great summary of everyones thoughts so far on this. 👍
Going to read through a couple times, gather some thoughts around it overnight.
Initial open-rpc starting gist for some our thinking post offline meeting
{
"info": {
"title": "something",
"version": "44"
},
"methods": [
{
"name": "installService",
"params": [
{
"name": "serviceName",
"schema": {
"type":"string"
}
},
{
"name": "version",
"schema": {
"type":"string"
}
}
],
"result":{
"name": "installSuccess",
"schema": {
"type": "boolean"
}
}
},
{
"name": "configService",
"result": {
"name": "configurationSuccess",
"schema": {
"type": "boolean"
}
},
"params": [
{
"schema": {
"type": "string"
},
"name": "serviceName"
},
{
"schema": {
"type": "string"
},
"name": "environment"
}
]
}
],
"openrpc": "1.0.0-rc0"
}
https://gist.github.com/zcstarr/961f861dcc711a647297c4ca1c945b14
ServiceRunner is a standalone service manager, that supports starting, stopping, and installing a limited range of OpenRPC projects. This range can be extended via configuration file. The service runner runs services by responding to JSONRPC request to start/stop/ or gain access to services. The initial target is multi-geth + jade-signer.
servicerunner —extends config.yml
// This command allows the user to extend the pre existing services configuration
{
ethclassic: { /* serviceName */
download: {
/* where to get service */
osx: "https://some.binaryfile.location"
windows: "https://some.binaryfile.location"
linux: "https://some.binaryfile.location"
},
start: “command”
, /* commands to execute the process*/
stop : “command”, /* commands to stop the process */
teardown: “command” /* commands to teardown the process */
env: { /*specifies what supported run time environments per service*/
mainnet: { /*environment name and specific config */
args: []
start,
stop,
teardown,
},
gorli: { . /*environment name and specific config */
args:[]
}
}
}
}
for env - can we make it an array of object, where the object has the property name
?
Also, can you turn this into a JSON schema?
done and done, took a stab at a slight revision/rewrite in json schema https://gist.github.com/zcstarr/415265efae3662c481c488e0b7bab083
JSON Schema response for starting a service https://gist.github.com/zcstarr/eecc9d495b7e0e19a65a5899a4c6e379
Creating this issue to start a conversation about what the service runner should be solving, so we can scope the initial version of the project properly, while keeping the end developer in mind. The aim is to use this document to help write the readme and generate architecture docs, and figure out what v0 needs to do.
Jade Service Runner
Abstract high level goals
Jade Service Runner is a utility that makes it easy for dApp developers to allow end users to run and connect to their own services. In order to achieve this the service runner should make it easy to complete the following tasks. Either by hand or by code automation from the dApp.
User potential high level abstract goal
dApp developer potential high level abstract goals
Where are we headed??
Let's try to imagine what an dApp developer would have to do to launch a shopping dApp.
Assumed Developer Concerns
Jade Service Runner Addresses