Setting out
on a journey
Using an iterative approach
for developing Loudflow.
Starting with an initial skeleton implementation of the front-end web application and back-end services, development will continue in iterations which add on to the previous set of features to produce a new enhanced and stable release. These iterative releases will be documented as milestones here and in the project's Github repository with corresponding list of features and a rough timeline.
This approach fits well with the exploratory research and learning goals of the project.
Currently, the initial skeleton is being built with the following technology stack and features:
- Back-end scaffolding using Lagom microservices and event sourcing framework with Scala, Akka, Cassandra and Kafka.
- Minimal implementation of Model service with 2D graph representation and basic features including add/remove/move entities (i.e. agents and things), configurable cohabitation behavior (i.e. block, push, kill), etc.
- Minimal implementation of Agent service with an internal clock, perception via model events, a local memory of the model, and random turn-based action.
- Minimal implementation of Simulation service with support for an internal clock, initial model population, time-based population growth and decay, etc.
- Deployment to and integration with AWS using Docker and Kubernetes - possibly EKS via CloudFormation ?. Also IAM integration to support deployment to user accounts.
- Minimal front-end (user and admin) web applications using React, Gatsby and Netlify.
- Example application based on the TileWorld testbed (Lees, 2002 - A history of the Tileworld agent testbed).