What's wrong with `belly`?
Prelude
I started to develop belly about year ago. It was my way to learn rust, bevy and to discover the strong and weak sides of them. For a past two decades I were developing applications for users (for those who use and for those who produce). I released some products with the help of django, qooxdoo, react, unity, and we saw a lot of shit with godot recently. Those releases gave rise to a lot of traumas in me. I were never truly satisfied as software engineer and application developer. The belly was an attempt to to overcome theses traumas and deliver safe, stable, fast, intuitive, easy to use and learn, extendable, well-documented app framework for game developers primary. And I failed this attempt. While there are some good ideas, the other ones are terrible. I'm working on the polako for the past month - the next generation belly. I want to keep the good ideas and get rid of the bad ones.
The Good
- Bindings are good in general. It is possible to make them very fast and intuitive (no damn transformers).
polakowill be 100% bindings-based frameworks. - Connections seems nice too. Associating events with entities still looks promising.
- Bypassing content to the widgets will be the core feature of
polako - Css-like selectors & Styles declarations are good in general, and I will keep some of them for the ui part at least.
The Bad
- Html-like templating is worst. While it seems nice and familar, it is stupid and doesn't fit rust ecosystem at all. Requirement of closing the tag, non-token-tree braces
<>, lack of autocomplete and IDE docs: I can't imagine how many pain it brings to you folks. - The kebab-case (
margin-top) is the worst idea. It is hard to parse, it will never autocomplete by rust-analyser. It doesn't fit rust at all - A lot of stuff were done in runtime with a lot of heap allocations and downcasting Any: passing props using Variant is the bad-bad thing.
- Global Stylesheets are just bad. Them became a mess with only 10 widgets. While css-like selectors are good, the global css style will never find a place in
polako - Everything-from text in runtime (
s:margin="2px 4px 20%") is bad. It leads to runtime errors, lack of docs and IDE support and so on so on so on.
The Ugly
- Creating new widgets from tons of attributes just looks ugly. A lot of things could be done either simpler or more general (following single rule)
- Associating styles with widgets from attributes - ugly
- Exposing widgets to eml by creating and exporting custom traits - ugly (you do not know what you need to import exactly to make
mywidgetaccesseble from eml. - Context everywhere is soooo ugly. Event handlers? Context. Widget builders? Another Context. Wanna puke? You need dat Context. In other words. Context my ass.
- Meaningless compile-time errors from eml are just ugly.
Postscriptum
I'm putting all my resources into polako for now, paying all respect to the values above. This is why I'm stopping any support of belly. The current belly-0.3 release for bevy-0.11 is the last release.
I've made some good progress with eml v2 already. bevy is super-cool. The polako itself will be built on the top of the bevy of course. And on the top of the constructivism - the missing piece on the bevy -> the best application framework ever path.