Happy New Year!
Ryan and I have settled on a new approach for layouts.
At a high level, the changes are:
Factoring computed mode into distinct types: Horizontal Stack, Vertical Stack, and Grid.
(This approach is similar to the one outlined by @andy.thelwell in the layout topic.)
All properties will be disjoint between modes, which will make it easier to switch between modes and understand components (since different instances may exist in different modes).
Factoring into modes also leaves open the option for us to introduce new layouts in the future (e.g., masonry layout) without breaking compatibility.
We've been evaluating a ton of designs and decided that we need a proper grid layout mode to allow you to express 2D relationships.
The grid mode is not like the snapping guides of existing tools --- it is a fully responsive mode that will allow you to size and position elements with respect to rows and columns that are defined by fixed, percentage, or stretch units.
The closest existing analog is the CSS Grid Spec.
Unification of size and positioning semantics between computed and freeform modes.
Self-constraints (min/max-size and a new constraint, aspect ratio) will be allowed in both freeform and stack modes.
Stack modes will have the option to wrap (topic).
Even with all of these changes, components and instance overrides will behave in the same way, allowing you to both maintain consistency and have necessary variation.
Since we're fully overhauling the layout engine, the next release of Subform will not be backwards compatible with the previous ones.
We know that breaking changes suck, and we don't want to make a habit of it --- that's the reason we've been paper-prototyping, writing, and thinking about these changes for the past two months.
In terms of our release priority, we will be focusing first on implementing the core layout semantics.
The first two releases will be:
- Freeform, Stack Horizontal, and Stack Vertical (without wrapping)
- Grid layout
Once these have been released, we will focus on direct manipulation (similar to prior art that @combdn pointed out).
After this, the focus will be on improving performance, stability, and at some point I'll implement wrapping for the stack modes.
Beyond working on the Subform software itself, Ryan and I are also looking into our options for building a sustainable business.
It takes years to build a solid design tool, and we want to do it and feed our families = )
Kevin + Ryan