Hi! I'm Shawn, founder/CTO at Weights & Biases. We've been working on Weave for a couple years now, and it powers core parts of wandb.ai.<p>It's a UI toolkit built for programmers that can be reprogrammed from the UI itself. You might call it a "yes-code UI" :)<p>I'm very happy that we were able to release Weave under Apache2 yesterday, and there is a lot of cool new technology in here that we haven't had a chance to describe yet! I'll just try to give a quick tech summary for now.<p>There are three core components in Weave: Types, Ops, and Panels.<p>Ops are typed functions like:<p><pre><code> @weave.op()
def flip_lr(im: Image.Image) -> Image.Image:
return im.transpose(Image.Transpose.FLIP_LEFT_RIGHT)
</code></pre>
Panels are UI elements that register to render a given type:<p><pre><code> @weave.type()
class BertvizHeadView(weave.Panel):
id = "BertvizHeadView"
input_node: weave.Node[huggingface.ModelOutputAttention]
@weave.op()
def render(self) -> weave.panels.PanelHtml:
html = bertviz_head_view(self.input_node)
return weave.panels.PanelHtml(html)
</code></pre>
And they can render other panels.<p>Panels can expose editable expressions (compositions of Weave ops) to the user, to give them control over what data transforms happen.<p>We call it Weave because it "Weaves a compute graph through the UI".<p>Weave includes a vectorizing DAG execution engine built on apache arrow, serialization and data versioning capabilities, and batteries Panels like Table and Plot.<p>We'll be writing and sharing a lot more now that the release is done. In the meantime, happy to answer any questions!