-
Notifications
You must be signed in to change notification settings - Fork 11
Updates Readme #726
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Updates Readme #726
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #726 +/- ##
==========================================
- Coverage 50.98% 50.97% -0.01%
==========================================
Files 378 378
Lines 32495 32495
==========================================
- Hits 16566 16564 -2
- Misses 15929 15931 +2 ☔ View full report in Codecov by Sentry. |
SwimOS is a framework for building stateful applications from data streams and provides the ability to execute logic | ||
when the state changes and to observe only the data that you are interested in. | ||
|
||
SwimOS applications observes one, or more, streams of events and uses them to build up a model of some other system in | ||
the external world and it mains an internal state which in many cases will be bounded in size. As each event is observed | ||
by the application, it updates its knowledge of the system and records that information in the state. | ||
|
||
The state of the application is partitioned into a number of independent "agents" each of which consists of a collection | ||
of "lanes" which store either single values or maps of key-value pairs. For very large applications, the agents can be | ||
split across multiple processes over multiple hosts. Every lane is individually addressable, both from within the | ||
applications and externally using a websocket connection. It is possible for a client to both alter the state of a lane | ||
and to subscribe to a feed of changes from it. Subscribers receive push notifications each time a changes is made and do | ||
no need to poll to receive them. | ||
|
||
Agents are not passive repositories of state and can also have user-specified behaviour. Each agent, and lane, has a | ||
number of "lifecycle events" to which event handlers can be attached. For example, it would be possible to assign a | ||
handler to be executed each time the value of a lane changes. These event handlers can alter the values of other lanes | ||
within the agent, establish communication links to other agents or cause side effects external to the application. | ||
|
||
In addition to observing externally provided events, agents may also observe the states of the lanes of other agents. A | ||
common use of this is the build up a hierarchical view of a system by setting up a tree of agents where each node | ||
observes the state of its children. For example, consider an application that observes a stream of measurements from | ||
sensors on a fleet of buses. Each sensor could be represented by an agent which then aggregates to an agent representing | ||
a bus, then an agent for the bus route and one representing the city. At each level of the tree, aggregate statistics | ||
could be computed on the fly. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is overly long and waffly.
|
||
 | ||
|
||
Ripple is a real-time synchronous shared multiplayer experience built on the Swim platform. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm guessing this is from the Java documentation? Its somewhat... overblown.
|
||
## Getting Started | ||
|
||
Getting started with a new framework isn't the same for everyone but our recommended journey is: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This phrasing is odd.
|
||
The developer guide reference applications are | ||
available [here](https://github.com/swimos/swim-rust/tree/main/example_apps) and the directory also includes a number of | ||
extra example applications. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Extra?
|
||
Swim servers may interact with external systems through the use of connectors. At present, only | ||
a [Kafka](https://docs.rs/swimos_connector_kafka/latest/swimos_connector_kafka/) ingress and | ||
egress connector is available but we are working on adding WebSockets, HTTP, and MQTT support. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A bit too familiar.
Before this PR can be merged, we need to do another release to publish the Kafka egress connector.