bgjs
Groot
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
bgjs
-
Humble Chronicles: Managing State with Signals
The author does a lovely job of covering a number of the interesting ideas in this space. But reactive programming is such a tough sell. I know from experience.
I maintain a reactive, state management library that overlaps many of the same ideas discussed in this blog post. https://github.com/yahoo/bgjs
There are two things I know to be true:
1. Our library does an amazing job of addressing the difficulties that come with complex, interdependent state in interactive software. We use it extensively and daily. I'm absolutely convinced it would be useful for many people.
2. We have completely failed to convince others to even try it, despite a decent amount of effort.
Giving someone a quick "here's your problem and this is how it solves it" for reactive programming still eludes me. The challenge in selling this style of programming is that it addresses complexity. How do you quickly show someone that? Give them a simple example and they will reasonably wonder why not just do it the easy way they already understand. Give them a complex example and you've lost them.
I've read plenty of reactive blog posts and reactive library documentation sets and they all struggle with communicating the benefits.
-
Facts about State Machines
State machines are cool but they don't compose well out of the box. Behavior Graph let's you build a composable network of them so they become a practical software architecture. (Disclaimer, I am a coauthor) https://github.com/yahoo/bgjs
-
HTTP imports in node
HTTP imports in Deno are really nice for making quick little test apps. I threw something together the other day using Comlink, that Yahoo state library, and a couple of other things without having to think about package.json or anything else. I wanted a throttle, so I just imported it from the source. It was all light and fast and Just Worked.
- New state management and architecture library
Groot
-
Facts about State Machines
Unrelated to javascript, but in the robotics industry there is a trend towards Behaviour Trees. https://www.behaviortree.dev/ is a C++ library that was originally designed for controlling robots via ROS, but it appears to be decoupled from the ROS ecosystem so it could be used for other projects.
There is a basic UI available for editing the tree https://github.com/BehaviorTree/Groot
What are some alternatives?
racket-gui-easy - Declarative GUIs in Racket.
svelte-fsm - Tiny, expressive finite state machines for svelte
observer-util - Transparent reactivity with 100% language coverage. Made with ❤️ and ES6 Proxies.
BehaviorTree.CPP - Behavior Trees Library in C++. Batteries included.
incremental-rs
gui-thunks - how to create GUIs that queue
ui - experimental ui component library for the browser