wgu/readme.md

2.2 KiB

wgu

wgu (weird graphing utility) 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
  • array: 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.