You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+55-5Lines changed: 55 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,24 @@
1
1
# Diffo
2
2
3
-
# Diffo - TMF Service and Resource Management with a difference
4
-
# Copyright Matt Beanland beanland@live.com.au
3
+
Diffo is a Telecommunications Management Forum (TMF) Service and Resource Manager, built for autonomous networks.
4
+
5
+
It is implemented using the [Ash Framework](https://www.ash-hq.org) leveraging core and community extensions including some created and maintained by [diffo-dev](https://github.com/diffo-dev/). As such it is highly customizable using Spark DSL and as necessary Elixir.
6
+
7
+
Diffo models relationships between all domain entities (Ash resources) and persists these in [Neo4j](https://github.com/neo4j/neo4j), an open source graph based database.
8
+
9
+
Diffo comes with all Ash resources to implement:
10
+
* TMF638 Service Inventory Management
11
+
* TMF639 Resource Inventory Management
12
+
13
+
Diffo can simply be used as an inventory system paired with conventional orchestration, and while this is a good starting point, we recommend dynamic orchestration, where orchestration (or rather choreography) is done in order to ensure goals are met autonomously.
14
+
15
+
Diffo can be used to implement 'a difference engine' which allows closed loop autonomy by acting on outstanding goals. Intents can be expressed as persistent expectations, and these are compared with actual instances to compute an outstanding instance, which simply contains unmet expectations in the original structure. This can then be used to derive the next task, which typically impacts actual but may also refine our expectations. In this way the workflow is synthesized from small tasks.
16
+
17
+
Expected and actual instances are compared using the [Elixir Outstanding Protocol](https://github.com/diffo-dev/outstanding), via the [Ash Outstanding Extension](https://github.com/diffo-dev/ash_outstanding)
18
+
19
+
Diffo can be used for any combination of service-service, service-resource and resource-resource, where expectations can be held for internal or external actual services and/or resources.
20
+
21
+
Diffo is especially suited for use in organisations with loosely coupled 'entity based' enterprise architecture where network entities can run diffo inside their entity without requiring or expecting other entities to do so.
5
22
6
23
## Installation
7
24
@@ -16,7 +33,40 @@ def deps do
16
33
end
17
34
```
18
35
19
-
Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
20
-
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
21
-
be found at <https://hexdocs.pm/diffo>.
36
+
You should need [Neo4j](https://github.com/neo4j/neo4j) available. We recommend the Neo4j Community 5 latest, available at [Neo4j Deploymnent Centre](https://neo4j.com/deployment-center/) which can be installed locally. You can also configure connection to a cloud based database service such as [Neo4j AuraDB](https://neo4j.com/product/auradb/).
37
+
38
+
## Tutorial
39
+
40
+
To get started you need a running instance of [Livebook](https://livebook.dev/)
41
+
42
+
[](https://livebook.dev/run?url=https%3A%2F%2Fgithub.com%2Fdiffo%2Ddev%2Fdiffo%2Fblob%2Fdev%2Fdiffo.livemd)
43
+
44
+
45
+
## Future Work
46
+
47
+
We plan to support:
48
+
* an intent based interface for managing both consumer and provider expectations
49
+
* expose MCP so that services and resources can be defined by your agent
50
+
* incorporate an an agent based framework so that your TMF service and resource instances are backed by co-operating intelligent agents
51
+
* embedded diffo, enabling intelligent network elements that natively communicate with TMF protocols
52
+
53
+
## Contributions
54
+
55
+
Contributions are welcome, please start with either a [discussion](https://github.com/diffo-dev/diffo/issues) or [issue](https://github.com/diffo-dev/diffo/issues)
56
+
57
+
## Acknowledgements
58
+
59
+
Thanks to [Telstra](https://www.telstra.com.au/) for supporting innovation in orchestration and inventory shared-tech which resulted in the award winning difference engine [2024 TMF Excellence Award in Autonomous Networks](https://www.tmforum.org/about/awards-and-recognition/excellence-awards/winners-2024/) powering three network service entities enabling outstanding produce experience [2025 TMF Excellence Award in Customer Experience](https://www.tmforum.org/about/awards-and-recognition/excellence-awards/winners-2025/) and inspiring both this open source and internal shared-tech.
60
+
61
+
Thanks to the [Ash Core](https://github.com/ash-project) for [ash](https://github.com/ash-project/ash) 🚀
62
+
63
+
Thanks to [Sagastume](https://github.com/sagastume) for [boltx](https://github.com/tiagodavi/ex4j) which is used by the [Ash Neo4j DataLayer](https://github.com/diffo-dev/ash_neo4j)
64
+
65
+
Thanks to the [Neo4j Core](https://github.com/neo4j) for [neo4j](https://github.com/neo4j/neo4j) and pioneering work on graph databases.
0 commit comments