Card Design Philosophy

Home Overview Card Design Philosophy

When it comes to designing user interfaces many software development systems use a similar approach: There are forms (sometimes also called dialogs or simply windows) with a number of fields and controls on it.

Designing the forms means using some tool to place controls on the form and size them. The programmer is free to put controls wherever he likes on the form, at some exact pixel-positions if really needed.

While this approach makes sense on the big screens of PCs, with forms possibly containing dozens of controls, you could question the usefulness of the approach on quite small smartphone screens with only a few controls on a form: Why asking the programmer to place controls himself when there are so few choices anyway of putting them because room is so limited?

Another thing to consider is the fact that different smartphones have different screen sizes, and that technical advances over time lead to bigger screens, with more pixels. It would certainly be nice to have a system that - within certain limits, of course - was able to dynamically adjust to different screen sizes: A stack designed for a small phone screen would not leave half of the screen empty on a bigger screen, but would be able to re-arrange fields and controls on the cards and profit from the additional room.

In a system with fixed positions for controls it would be also difficult to implement certain features like the hierarchical font management of MoStacks: Change the stack font to a bigger font, and all text fields on all cards without a specific own font automatically grow higher in order to display text in the bigger font. With fixed vertical positions the fields would now overlap.

The two control placement philosophies are in a certain way mutually exclusive: Either the programmer gets his will and his freedom and puts controls to certain positions where they stay put, but at the same time limits the flexibility of the system as a whole by doing so. Or the system takes over and places the controls, making possible dynamic features like the ones described above, but of course at the same time taking away freedom from the programmer.

MoStack is a system of the second sort, one that calculates field and control positions on cards itself. The user can influence this process in various ways however, by giving "hints". Details can be found in the chapter Field and Control Placement.