first commit

This commit is contained in:
selene 2025-11-24 01:00:19 +01:00
commit 6c524b0741
Signed by: sel
SSH key fingerprint: SHA256:33R/4Rx5Lu4o81LyJyXdMrmP5CJ6j7j1Soo0Dn7mKc0

42
readme.md Normal file
View file

@ -0,0 +1,42 @@
# wgu
**wgu** (**w**eird **g**raphing **u**tility) is a simple and accessible *data/link analysis tool*, equipped with a graph database using a *modular object format*.
it's made by queernerds, for queernerds, for protecting queernerds and queernerd communities. other use cases include investigative journalism, documentation and archivism, ARGs & treasure hunts, or anything that involves making sense of computer data.
## how does this work?
wgu & the modular object format are specifically designed to be extremely versatile, and well, modular. the simplest way to think of wgu is like microsoft excel, except that data can be plotted to a graph (or to charts), if you choose.
this means that you can see how data connects and morphs (via transforms or functions) into new data.
### object instances
almost all data within wgu are **object instances**. these are stored as json object literals while at rest, that serealize into the struct `wgu::ObjectInstance`.
data within object instances is categorized based on the data's origin (whether it's provided as the object's base input, calculated locally, or pulled in from elsewhere).
the inner structure of these categories depends on the object instance's `object_type`, and is defined in the object's template. alongside these categories, objects also contain metadata like logs, hashes, and timestamps
### modularity & object templates
modules can expose object templates as TOML strings (`wgu::modules::ModuleItem::Template`, serealized into `wgu::ObjectTemplate`), and rustlang functions to validate inputs (`... ModuleItem::Validator`), or to calculate properties / make new objects (`... ModuleItem::Function`).
object templates can define several options for each property:
- `transforms`: uses this property as an input of a new object
- `subobjects`: creates a parent-child relationship between this and at least one more object, based on the properties sharing a value and their transformations
- `conditions`: values other properties need to hold for this property to be valid
- `duplicates`: makes the property act as an array
for more information, see the wiki!
## timeline
hopefully, soon?
i'll try my best,,,
## license
i'll probably use agpl3 for all versions before v1.0.0, and hl3-full after that.