# Spaces of Data

**URL:** <https://forum.malleable.systems/t/spaces-of-data/223>\
**Category:** Ideas\
**Created:** [30 July 2024 10:10 UTC](https://forum.malleable.systems/t/spaces-of-data/223 "2024-07-30T10:10:24Z")\
**Posts on this page:** 1\
**Page:** 2

<div class="post-metadata">

**Author:** ![emery](https://forum-cdn.malleable.systems/user_avatar/forum.malleable.systems/emery/32/221_2.png) [@emery](https://forum.malleable.systems/u/emery)\
**Post date:** [5 December 2024 17:36 UTC](https://forum.malleable.systems/t/spaces-of-data/223/21 "2024-12-05T17:36:03Z")

</div>

Sorry, there is a lot to it and but I’ll try and backup and give some overview.

Syndicate has a few levels, there is the protocol for publishing assertions and sending messages, there are “dataspaces” that implement observations of data using patterns, and then there is the actor/facet level for structuring concurrency within a program.

“Preserves” is the data language used in the protocol and dataspaces. Preserves does not support things like functions, but it can have embedded references to stateful entities, which can be protocol endpoints.

If I follow the Propagation paper correctly, dataspaces can be used to implement a “propagation network” where the cells are actually formed by the patterns that machines observe. Machines would not be free of state though because if a machine disappears the values it produced would be retracted from the network. This is different from  
blackboard-style Tuplespaces where data persists after the publisher vanishes.

The [Conversational Concurrency](https://syndicate-lang.org/papers/conversational-concurrency-201712310922.pdf) paper does a good comparison of dataspaces with things like Tuplespaces. In practice though the observation and reaction to an observation is seldom done because of the tediousness of creating patterns over patterns.

[https://syndicate-lang.org/papers/](https://syndicate-lang.org/papers/)

[Previous page](https://forum.malleable.systems/t/spaces-of-data/223.md?page=1)
