Skip to content

Commit

Permalink
Merge pull request #568 from mesg-foundation/w1l1ams-docs-update
Browse files Browse the repository at this point in the history
Update what-is-mesg.md
  • Loading branch information
NicolasMahe authored Nov 22, 2018
2 parents f97b884 + f62cf8f commit 1a0535b
Show file tree
Hide file tree
Showing 24 changed files with 139 additions and 206 deletions.
5 changes: 1 addition & 4 deletions docs/.vuepress/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,8 @@ themeConfig:
sidebar:
/guide/:
- /guide/
- /guide/start-here/what-is-mesg
- /guide/start-here/core
- /guide/start-here/mesg-infrastructure
- /guide/start-here/quick-start-guide
- /guide/start-here/installation
- /guide/start-here/quick-start-guide
- /guide/start-here/join-us
- title: Application
children:
Expand Down
6 changes: 3 additions & 3 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ actionText: Get Started →
actionLink: /guide/index
features:
- title: Technology Agnostic
details: Any technologies can seamlessly be connected to your applications, from traditional web to new blockchain technologies.
details: Any technologies can be connected to applications, including web services, business logic, IoT, or even blockchain technologies.
- title: Event Driven
details: Start creating your application by reacting to events and build truly real time and scalable applications.
details: Build scalable applications that listen for events in real-time and react with tasks.
- title: Services
details: Use the power of microservices. All you have to do is connect services through their events.
details: Harness the power of microservices to achieve efficient application creation and maintenance.
---
12 changes: 6 additions & 6 deletions docs/api/core.md
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@ The data will be received over time as long as the stream is open.

## ExecuteTask

Execute a service's task through [Core](../guide/start-here/core.md).
Execute a service's task through Core.

<tabs>
<tab title="Request">
Expand Down Expand Up @@ -591,7 +591,7 @@ The reply's data of the `ExecuteTask` API.

## StartService

Start a service. The service must be already deployed to [Core](../guide/start-here/core.md).
Start a service. The service must be already deployed to Core.

<tabs>
<tab title="Request">
Expand Down Expand Up @@ -759,7 +759,7 @@ Reply of `StartService` API doesn't contain any data.

## StopService

Stop a service. The service must be already deployed to [Core](../guide/start-here/core.md).
Stop a service. The service must be already deployed to Core.

<tabs>
<tab title="Request">
Expand Down Expand Up @@ -927,7 +927,7 @@ Reply of `StopService` API doesn't contain any data.

## DeployService

Deploy a service to [Core](../guide/start-here/core.md). This will give you an unique identifier which is used to interact with the service.
Deploy a service to Core. This will give you an unique identifier which is used to interact with the service.

<tabs>
<tab title="Request">
Expand Down Expand Up @@ -1133,7 +1133,7 @@ or

## DeleteService

Delete a service from Core. This function only deletes a deployed service in [Core](../guide/start-here/core.md). If the service's code is on your computer, the source code will not be deleted.
Delete a service from Core. This function only deletes a deployed service in Core. If the service's code is on your computer, the source code will not be deleted.

<tabs>
<tab title="Request">
Expand Down Expand Up @@ -1301,7 +1301,7 @@ Reply of `DeleteService` API doesn't contain any data.

## ListServices

List all services already deployed in [Core](../guide/start-here/core.md).
List all services already deployed in Core.

<tabs>
<tab title="Request">
Expand Down
4 changes: 2 additions & 2 deletions docs/api/service.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ The source file of this API is hosted on [GitHub](https://github.com/mesg-founda

## EmitEvent

Emit an event to [Core](../guide/start-here/core.md).
Emit an event to Core.
The event and its data must be defined in the [service's definition file](../guide/service/service-file.md).

<tabs>
Expand Down Expand Up @@ -177,7 +177,7 @@ The `executionID` value must be kept and sent with the result when calling the [

## SubmitResult

Submit the result of a task's execution to [Core](../guide/start-here/core.md).
Submit the result of a task's execution to Core.
The result must be defined as a task's output in the [service's definition file](../guide/service/service-file.md).

<tabs>
Expand Down
20 changes: 11 additions & 9 deletions docs/guide/README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
# Introduction

MESG is an open-source decentralized infrastructure which makes all technologies interoperable, including blockchains. In short, it’s a building platform for developers.
MESG \(pronounced ˈmesij/, or **message**\) is a technology-agnostic network of [Services](./service/what-is-a-service.md).

Instead of individually connecting each technology to your application, you can now make a single connection to [Core](start-here/core.md) and allow Core to manage connections to all other technologies on your application's behalf. It handles the communication of information and tasks between any technologies and your application, making the creation and maintenance of DApps a breeze.
Services can be connected to any technology, including but not limited to, blockchains, web services, databases, notifications, business logic or IoT devices.

This technology-agnostic architecture allows all technologies and languages to play nicely together for the first time in a decentralized way, ushering in a new era of productivity and possibilities.
As the code to connect Services is often identical between applications, it be shared and reused through through our [Awesome](https://github.com/mesg-foundation/awesome) repository to accelerate development efficiency.

**Arriving Q3 2018:**
Services can be combined together in any order to create [Applications](./application/what-is-an-application.md). Since developers can use a shared Service instead of being required to write each one from scratch, they can now feature complex technologies in their Applications without needing to first learn their languages.

Once a connection from a technology to Core is made, it can be shared in a Marketplace, allowing developers to generate income each time their connection is used.
Interoperability between all Services and Applications is managed automatically by MESG Core. [Core](./start-here/installation.md) organizes and dispatches information to and from all connected Services and routes it through a stream of real-time information to your Application, allowing Applications to be highly interconnected, yet lightweight and powerful.

Take the best of what has already been created to build your custom solution. This building platform allows you to easily connect technologies without needing to code or know the languages of the technologies you're using.
The MESG infrastructure is based upon event-driven programming, so Applications built using MESG are designed to listen to events and react with tasks, resuling in easily-maintainable autonomous applications.

You can get involved by writing code or creating viable solutions, all while benefiting from an incentive system designed to reward building.
Applications on MESG can look like anything from a multinational dApp store, to an automated business workflow, to an automatic payment of personal bills or linking real-time notifications to blockchain events. The possibilities and use cases are truly endless.

We’re excited to see what you come up with.
**In Q4 2018**, MESG will deploy the beta decentralized Network to unify the MESG infrastructure. It will make it easy for developers to incorporate decentralization into any existing technology.

The decentralized network will help DApps adopt useful functionalities that boost the UX, such as notifications or fiat payment processing. DApps will soon be able to deliver the same excellent user experiences that centralized apps deliver while remaining highy decentralized.

To navigate to other sections of this guide, please use the Menu, or continue below.
The Network also introduces MESG's token-based economy. Pre-built Services will be sold on the Network using MESG Tokens, allowing developers to receive income each time their Service is used, while rewarding each actor in the network with passive income from their participation.



8 changes: 4 additions & 4 deletions docs/guide/application/create-your-application.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Create your application

Now that you have your different services ready and deployed you need to connect them through an application. You will be able to connect a task to an event with libraries that we provide, otherwise you can always connect directly to the MESG core to [listen for events](listen-for-events.md) and [execute task](execute-a-task.md).
Now that you have your different Services ready and deployed, you need to connect them through an Application. You will be able to connect a task to an event with libraries that we provide, otherwise you can always directly connect to MESG Core to [listen for events](listen-for-events.md) and [execute tasks](execute-a-task.md).

<tabs>
<tab title="Node" vp-markdown>
Expand Down Expand Up @@ -31,7 +31,7 @@ MESG.whenResult({
})
```

[See the MESG.js library for more documentation](https://github.com/mesg-foundation/mesg-js/tree/master#application)
[See the MESG.js library for additional documentation](https://github.com/mesg-foundation/mesg-js/tree/master#application)

</tab>

Expand Down Expand Up @@ -84,7 +84,7 @@ func main() {
</tab>
</tabs>

These kind of workflows should be enough for most use cases but if you want to create more complex applications you can connect directly to APIs and keep reading the documentation.
These kinds of workflows should be enough for most use cases, but if you want to create more complex applications, you can connect directly to APIs and keep reading the documentation.

::: tip Get Help
You need help ? Check out the <a href="https://forum.mesg.com" target="_blank">MESG Forum</a>.
You need help ? Check out the <a href="https://forum.mesg.com" target="_blank">MESG Forum</a>.
10 changes: 5 additions & 5 deletions docs/guide/application/execute-a-task.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Execute a task

## Why execute a service's task?
## Why execute a Service's task?

Applications can execute a service's task allowing you to reuse the maximum number of already-built logic and enjoy the MESG ecosystem.
Applications can execute a Service's task, allowing you to reuse the maximum number of already-built logic and enjoy the MESG ecosystem.

## Execute a service's task
## Execute a Service's task

To execute a task, applications need to connect to Core through [gRPC](https://grpc.io/) and use the [Protobuffer definition](https://github.com/mesg-foundation/core/blob/dev/api/core/api.proto). Core will reply with an `executionID`that identifies the task's execution. To get the output of the task's execution, the application has to listen for an [execution output.](execute-a-task.md#listen-for-execution-outputs)
To execute a task, Applications need to connect to Core through [gRPC](https://grpc.io/) and use the [Protobuffer definition](https://github.com/mesg-foundation/core/blob/dev/api/core/api.proto). Core will reply with an `executionID`that identifies the task's execution. To get the output of the task's execution, the Application has to listen for an [execution output.](execute-a-task.md#listen-for-execution-outputs)

<tabs>
<tab title="Request" vp-markdown>
Expand Down Expand Up @@ -95,4 +95,4 @@ func main() {
</tabs>

::: tip Get Help
You need help ? Check out the <a href="https://forum.mesg.com" target="_blank">MESG Forum</a>.
You need help ? Check out the <a href="https://forum.mesg.com" target="_blank">MESG Forum</a>.
18 changes: 9 additions & 9 deletions docs/guide/application/listen-for-events.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

## Why listen for events?

Applications listen for events in real time to execute actions or tasks when something relevant happens on a technology.
Applications listen for events in real-time to execute actions or tasks when something relevant happens on a technology.

## Listening for events from services
## Listening for events from Services

To listen for events, the application needs to open a stream with Core with [gRPC](https://grpc.io/) using the [Protobuffer definition](https://github.com/mesg-foundation/core/blob/dev/api/core/api.proto). When opening the stream, the application listens to the service. It can listen to many service as the same time.
To listen for events, the Application needs to open a stream with Core with [gRPC](https://grpc.io/) using the [Protobuffer definition](https://github.com/mesg-foundation/core/blob/dev/api/core/api.proto). When opening the stream, the Application listens to the Service. It can listen to many Services at the same time.

<tabs>
<tab title="Request" vp-markdown>
Expand All @@ -15,7 +15,7 @@ To listen for events, the application needs to open a stream with Core with [gRP

| **Name** | **Type** | **Required** | **Description** |
| --- | --- | --- | --- |
| **serviceID** | `String` | Required | ID of the service that you want to listen. |
| **serviceID** | `String` | Required | ID of the Service that you want to listen to. |
| **eventFilter** | `String` | Optional | Only listens for this given event ID. |

```javascript
Expand All @@ -31,7 +31,7 @@ To listen for events, the application needs to open a stream with Core with [gRP

| **Name** | **Type** | **Description** |
| --- | --- | --- | --- |
| **eventKey** | `String` | The event's key defined in the [service file](../service/service-file.md). |
| **eventKey** | `String` | The event's key defined in the [Service file](../service/service-file.md). |
| **eventData** | `String` | The event's data in JSON format. |

```javascript
Expand Down Expand Up @@ -98,10 +98,10 @@ func main() {

## Listen for task execution outputs

The execution of tasks can take a long time to finish depending on the action they are completing, so outputs are sent back asynchronously. To listen for task execution's outputs, applications need to open a stream with the Core through [gRPC](https://grpc.io/) and use the [Protobuffer definition](https://github.com/mesg-foundation/core/blob/dev/api/core/api.proto).
The execution of tasks can take a long time to finish depending on the action they are completing, so outputs are sent back asynchronously. To listen for task execution's outputs, applications need to open a stream with Core through [gRPC](https://grpc.io/) and use the [Protobuffer definition](https://github.com/mesg-foundation/core/blob/dev/api/core/api.proto).

::: warning
Outputs are sent asynchronously. Make sure that the application listens for outputs before it executes a task, otherwise it will miss the outputs.
Outputs are sent asynchronously. Make sure that the Application listens for outputs before it executes a task, otherwise it will miss the outputs.
:::

<tabs>
Expand All @@ -111,7 +111,7 @@ Outputs are sent asynchronously. Make sure that the application listens for outp

| **Name** | **Type** | **Required** | **Description** |
| --- | --- | --- | --- |
| **serviceID** | `String` | Required | ID of the service. |
| **serviceID** | `String` | Required | ID of the Service. |
| **taskFilter** | `String` | Optional | Only listens for this given task ID. |
| **outputFilter** | `String` | Optional | Only listens for this given output ID. If set, the attribute `taskFilter` should also be provided. |

Expand Down Expand Up @@ -198,4 +198,4 @@ func main() {
</tabs>

::: tip Get Help
You need help ? Check out the <a href="https://forum.mesg.com" target="_blank">MESG Forum</a>.
You need help ? Check out the <a href="https://forum.mesg.com" target="_blank">MESG Forum</a>.
14 changes: 7 additions & 7 deletions docs/guide/application/what-is-an-application.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
# What is an Application?

Applications and business solutions are built on MESG by attaching an event on one [service](../service/what-is-a-service.md) to a task on another service. These can be configured in any order and you can easily create chain reactions or synchronicities of any kind.
Applications and business solutions are built on MESG by attaching an event on one [Service](../service/what-is-a-service.md) to a task on another Service. These can be configured in any order and you can easily create chain reactions or synchronicities of any kind.

Future versions of MESG will not require users to code. Instead, you'll send a configuration file to Core, which is like an order slip, listing all of the events and corresponding tasks you'd like the MESG Network to execute for you.

As long as the [Services](../service/what-is-a-service.md) you want to use in your solution have been connected to the MESG Infrastructure already, you will be able to list them within the configuration file. If they haven't been connected to MESG yet, you can connect Services yourself with some coding.
As long as the [Services](../service/what-is-a-service.md) you want to use have already been connected to the MESG Infrastructure, you will be able to list them within the configuration file. If they haven't been connected to MESG yet, you can connect Services yourself with some coding.

Our software architecture is modeled on Event-Driven Architecture \(EDA\). This will be used in future releases of MESG software. EDA is a software architecture pattern promoting the production, detection, consumption of, and reaction to events.
Our software architecture is modeled on event-driven architecture \(EDA\). This will be used in future releases of MESG software. EDA is a software architecture pattern promoting the production, detection, consumption of, and reaction to events.

Events are any new occurrences on a technology. \(e.g. receiving an email, a new deposit, a full battery, the first of the month, a delayed flight, etc.\) With the increased use of digital devices, web services and the internet of things, events are happening around us all the time.

We recommend you build applications to react to events in order to create an application that's quite simple to build, easily-maintainable and compatible with future releases of Core.

Tasks in your application are reactions to events \(send an email, notify me on my watch, put the car into standby mode, issue a refund, transfer funds, open a new account, turn on the lights, etc.\).
Tasks in your Application are reactions to events \(send an email, notify me on my watch, put the car into standby mode, issue a refund, transfer funds, open a new account, turn on the lights, etc.\).

This is how the configuration file \(like an order slip\) in future releases of MESG is laid out, with events and corresponding tasks. So if you want your application to be compatible with future releases of MESG, we recommend you build your application based on Event Driven Architecture while we finish completing the Infrastructure.
This is how the configuration file \(like an order slip\) in future releases of MESG is laid out, with events and corresponding tasks. So if you want your application to be compatible with future releases of MESG, we recommend you build your Application based on event-driven architecture while we finish completing the infrastructure.

By creating an application based in Event-Driven Architecture, you embrace the philosophy of MESG and make an application that becomes really easy.
By creating an Application based in Event-Driven Architecture, you embrace the philosophy of MESG and make an Application that becomes really easy.

### Source of events

Expand All @@ -37,5 +37,5 @@ The task is the **then** for your application

When one event is coming then the only thing to do is to [execute a task](execute-a-task.md) of the service that you want.

You can find some example in the [use cases](use-cases.md) page.
You can find some examples on the [use cases](use-cases.md) page.

3 changes: 1 addition & 2 deletions docs/guide/service/deploy-a-service.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,5 @@ mesg-core service delete SERVICE_ID
```



::: tip Get Help
You need help ? Check out the <a href="https://forum.mesg.com" target="_blank">MESG Forum</a>.
You need help ? Check out the <a href="https://forum.mesg.com" target="_blank">MESG Forum</a>.
2 changes: 1 addition & 1 deletion docs/guide/service/dockerize-the-service.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ CMD ["/app/main"]
Configuration and dependencies are an advanced feature and your service might not need this. This is totally optional and really depends on your service needs.
:::

Once the Service can run on Docker, [Core](../start-here/core.md) should be able to start it automatically. Update the [`mesg.yml`](service-file.md) file with the config. and optional dependencies the service needs.
Once the Service can run on Docker, Core should be able to start it automatically. Update the [`mesg.yml`](service-file.md) file with the config. and optional dependencies the service needs.

The `configuration` key is a Dependency object that will be use to configure the main Docker container of the service. All Dependency attributes are available except image. The attribute `image` will be set automatically when the service is deployed.

Expand Down
Loading

0 comments on commit 1a0535b

Please sign in to comment.