Skip to content

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

Closed
wants to merge 2 commits into from
Closed

Updates Readme #726

wants to merge 2 commits into from

Conversation

SirCipher
Copy link
Collaborator

Before this PR can be merged, we need to do another release to publish the Kafka egress connector.

Copy link

codecov bot commented Oct 7, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 50.97%. Comparing base (e0e0885) to head (5b1a30d).

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.
📢 Have feedback on the report? Share it here.

Comment on lines +29 to +53
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.
Copy link
Contributor

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](/docs/assets/ripple.png "Ripple")

Ripple is a real-time synchronous shared multiplayer experience built on the Swim platform.
Copy link
Contributor

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:
Copy link
Contributor

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.
Copy link
Contributor

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A bit too familiar.

@SirCipher SirCipher closed this Jun 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants