I used to be an infinite canvas fanatic, even building products that leveraged the concept, but ultimately I’ve abandoned it. There are too many issues with having an infinite canvas that make it untenable. This isn’t to say they should never be used, but rather that I believe there are good reasons why they aren’t used more.<p>1. Ambiguous structure - users cannot easily glean the structure of content from the layout alone. For instance, on an arbitrary canvas, you don’t know if two things are close to each other to indicate a relation, or just for aesthetic reasons. This can be mitigated by ensuring relations are exposed in other ways, but unless everyone is <i>super</i> strict about including an underlying structure, this will always be an issue. Also, without a representation of the underlying structure, an infinite canvas is fundamentally inaccessible.<p>2. Navigation - finding all possible content on a canvas is hard. This can be mitigated with something like a mini-map, but frankly sticking to one dimension of “infiniteness”, eg scrolling, has shown to be the most effective for the average person to handle.<p>3. Implicit, but heterogeneous, affordances - when you have an infinite canvas, there are many more actions needed eg. pan, scroll, select, possibly lasso, possibly zoom…all of which need a mouse movement or keybinding or touch gesture, depending on the device and context. These all need to be discovered, or taught, and are often initially hidden from the view. This makes the learning curve far steeper, especially when users are accessing content from many different types of devices.<p>4. Responsiveness - it’s hard enough to make a paragraph of text easily viewed on multiple screen sizes, let alone a complex layout of objects with relations possibly conveyed spatially. Infinite canvases are difficult to reformat to get a good, legible layout on a screen other than the one the creator used. There are workarounds, but they often lose information unintentionally by repositioning items in ways the author didn't anticipate.