Random thought/question. I've noticed canvas based...
# thinking-together
d
Random thought/question. I've noticed canvas based design tools have converged on a panel configuration of "Layers | Canvas | Properties | (and sometimes Timeline)"-- as opposed solving the underlying needs another way. Is this pattern the end-all-be-all? Or a local maxima? I tend to think the later.
💯 1
s
I like to think most of how we do programming/computing these days is stuck in local maxima. It becomes the end-all-be-all because it’s too difficult, risky, and takes too much effort to reinvent lower levels of the stack to leap elsewhere in the solution space. And the incentive structures we have in place focus on short term value extraction, which favors innovation at the edges, ie. “Let’s see what we can do with this” instead of “Is this the right approach? Do we need to rethink it?” Generally speaking, if it works, the odds are more in your favor if you use it to invent something new on top of it where you get to define your own category instead of investing your time trying to invent something better that has to compete in an established category. Personally I think there is a lot of interesting concepts from cognitive science on how we think, categorize, and mentally model interactions with embodied and enacted cognition that would be super useful for designers and developers in the design tools space to utilize, but that’s a whole different domain and once you’re in the “let’s build stuff, throw it at the wall and see what sticks” mode it’s hard to make room for exploring such ideas as it will take some time to make the connections to software design, which cognitive scientists naturally don’t care about.
👍 2
d
Thanks for the response. I agree. Taking the time to design the primitives 'right' rather than doing anything immediately useful is very risky- not just financially but socially, emotionally, psychologically, etc. I get the idea of turning towards more immediate utility. But like the frustration of being stuck in paradigms like the layer/canvas/properties and many others is a persistent driving force for probably most of us here. I agree that it be worth it if new categories are created- but the vision is sufficiently unclear that unless one enjoys the road they risk suffering with no reward. Also, I do agree with your personal anecdote. I believe any generalize software primitives that can give rise to new categories would emerge fundamentally directly properties of human cognition (spacial reasoning, categorization, etc). I find asking myself "How would I most like to design X" gets me closer to that. At the end of the day progress will be made when people are dead-set on making it.
i
In the interest of finding a root cause beyond just "it's a local maximum", can you list every app that comes to mind when thinking of this convergence? Like, don't go looking for more examples, just name all the ones that are already top of mind for you. (I have a hunch.)
(Just to avoid making you feel like I'm setting you up — I want to understand what you mean when you say "canvas-based design tools")
a
The no/lowcode shelf -- webflow, wix (etc) bubble, adalo, softr, glide (etc), builder, bildr, sketch, Figma (etc), framer x, a few more I can picture but can't immediately name
d
Was mostly newer tools that seem promising and marry a wider array of digital creation functionality. Lots of time they look like a “Figma for X”: Plasticity (CAD), Fable, Vectary, Spline, Modyfi, Rive*
👏 1
@Arvind Thyagarajan no-code stuff also are big ones that fit the mold- tho perhaps less “canvas based” per-se*
💡 1
a
I get the feeling this thread is relevant: https://futureofcoding.slack.com/archives/C5T9GPWFL/p1709980143296959?thread_ts=1709980143.296959&cid=C5T9GPWFL It's about designing the right "physics" for the task, and I do think the local maxima you described stopped short somewhere. They give you final design but not interstitials and states or the temporality that connects these things, or they might give you actionability, even predicate based sequences, but no crafting of complex branching logic, for example. Disclosure: I'm a node-wire live-prog buff. I thought Yahoo Pipes was the cats whiskers way back when. And today I know we can do even better (I'm working on it!)
❤️ 1
d
Great thread. Never heard of yahoo pipes- very cool. I agree that the “what are the new physics” is the right question to be asking. To be honest- I think the canvas is the right approach because it really just means a physical space. Like as if you are god, starting with a canvas is saying “let there be light”. To me, everything can and should be derived from the physicality of the canvas, even panels like layers and properties (if they are needed at all!). If the primitive elements on the canvas are flexible enough, you could compose node-wire type software- but with more flexibility on how it operates, naturally.
a
Yes! In fact, I think the node-wire paradigm naturally exists in an infinite canvas almost by definition, you have various node primitives you can add to the canvas, position, and inter-link and there's physics in the linkage (data flow, action sequences, temporality, nesting, 2D position etc.) What I can't (haven't) wrapped my head around yet is how we'd design a higher order node-wire paradigm (in all the complexity it deserves) into the blank canvas using even lower order canvas-based primitives/physics! Right now I'm working with a node-wire live programming infinite canvas as the base layer, underneath which is ye olde textual code (OK, I shalln't mention node-wire again for fear of sidetracking a thread about the future of canvas)
d
No I think you brought up a great point actually about the need to find a higher order representation (between node wire and code) and to be honest I think you answered you question with what you said in the first paragraph: “add to the canvas, position and interlink”. It’s my hypothesis that enabling the addition of any kind of object (numbers, text, geometry with dimensions) and linking them directly on the canvas might enable just that. If you add the ability to toggle visibility as a property and toggle links on and off themselves and add some form of dynamic repetition I believe you can make anything (though there’s a lot of nuance i haven’t quite figured out). Obligatory I have no idea if this will actually work tag
d
This arrangement is also due to the skateboard property of iterative development; developers/designers of these tools tend to start with something small that works and grow it, so layers/canvas/panels/timeline are nicely delineated You can also see this with the more advanced design tools as components always feel bolted on
💯 1
d
Reminds me of this. Starting with the panel approach is a sensible one to make something functional. Rethinking the entire universe is just not practical and/or useful for most use cases. I think that changes if your targeting all use-cases (generality).
I'll add that rethinking the entire universe though is hella fun
d
right, for example in the design space I haven't seen any tool handle the wireframe to prototype to actual app lifecycle with any elegance
d
I get that- i believe a lot of it has to do with fact we are constructing software in tools that simply don't have ways to express the full scale of the softwares functionality. The interesting questions for me are 1. can there be software where this can exist? 2. Can they be sufficiently elegantly to rival the chain of existing tools? There's evidence 1 is true and 2 is just a design challenge. We are early but i can't see any reason it won't eventually happen given the degrees of freedom of the visual medium and our brains capacity to understand visually/physically. My question to you is do you think futuristic border-line-alien-like humanoids will create software with a layers and properties panel?
d
oh man, well I believe handling relativity in your VCS should be out of scope for most tools 👽+😝. The speed of light and offline is hard enough.
😂 1
d
Something tells me they will construct in a canvas based system (7 spatial dimensions and 2 imaginary ones)
d
that being said, I get you, but we're really making tools for flat rectangles at the moment (minus stadiums, the sphere, and annoying watches)
❤️ 1
a
I think "is" and "about" are fundamental enough layers (when it comes to constructing reality) that we'll need property panels
d
I mostly agree with you tbh I am boiling the ocean just in case there’s something interesting at the bottom of the sea. And @Arvind Thyagarajan you may be right- at least I’m sure we’ll need to observed properties and it’s helpful to collocate them with eachother (panel?). But sometimes it’s nice to collocate them with the thing it’s describing. Or maybe the property doesn’t need to be separate from the thing at all…
a
💯 we can try to decompose/deconstruct editability to the max. I can let you drop a single character, "a" onto a canvas, I can let you directly edit the
value
to "b" by clicking on it (it highlights, you type the new character), i can let you grab a corner and increase the
fontSize
, i can let you scrape left and right across
fontFamily
, i can let you long-press as I make it increasingly slanty (
italic
) until it's barely legible, now let's see how many dimensions I have left and how many more properties remain to manage 🙂 as soon as I run out of physical dimensions/interactions, I will sigh/shrug and introduce a property panel. But we need to push the limits of the space, and use up the dimensions, before jumping to the easy answer
❤️ 1
d
This is it! It really is a question of what controls are where and when. Sometimes you wanna go through a list of them and edit quickly. Sometimes you want to mold shapes with your hands in context. There’s really no right answer maybe just a realization that a properties panel isn’t always the right answer ha
🎸 1
l
I just want a fully moldable adaptable infinite canvas/space/medium with no limits or forces structure that can take any shape and form. Should be simple? If you shoot far enough! Like, nothing hardcoded, but ever changing. For that, we need to fully integrate the rendering, logic, data, and interaction story. Like. Completely. But yes, just the basics is time consuming. Just got sdf-based webgl text rendering working. Quad-tree/tile-based fully infinitely zoomable next (as in, not a "infinite canvas" that glitches out at 3 magnitudes of floating point zoom, but where everything is seemingly there at once, fully smooth and realtime)... but this suddenly requires a custom integrated database and networking state sync solution, as offline first and p2p seems like a minimal bar that isn't really there... if you want to continuously handle at least 5kbps traffic from thousands of users while still being economically feasible...
🔥 2
d
@Leonard Pauli interesting. So i guess 'let there be light' has more steps involved, especially if your 3D+ reality is shared. I like the thinking. Curious what you imagine will be the first things to live in the canvas space?
l
@Dennis Hansen Well all the craze right now is about ai agents, no? But really, an ai-assisted infinite mindmap with blocks of any kind seems like an excellent starting point. They will help making the next part of the space! And sooo much is needed to just get the minimal fully medium-native entities!
❤️ 1
d
This is very true- will be AI assisted I’m sure, and output will be modular. It’s an interesting problem space, as is the foundational tech. Hoping to see it all converge into a malleable augmented reality