I’m splintering off this discussion from its parent thread “Re-ordering columns”, because I feel it deserves its own focus, beyond just the order of columns.
Should we store display options per-user, or globally?
That is, if I customize the width of a column, the order of columns, the format of a date, or the number of decimal places to show on a number – should other users see those customizations too?
In this email I make a case for storing them globally.
This is tricky though. I predict there will inevitably be some cases where users want the display options to be global and other cases where users want the display options to be per-user. So I see the choice between the two as an optimization problem. Theoretically, Mathesar could allows both per-user and global display options, but I imagine we would all agree that such a system is too complex for this early stage of our product. I think we should decide, in a binary sense, whether display options are per-user or global, perhaps even making separate decisions for separate display options.
In trying to find the optimal solution, here’s where my mind goes:
What are users most likely to expect?
I looked at some competing products and gathered the following data on the scope of their display options:
| Product | Display option | Scope |
|---|---|---|
| Google Sheets | Column width | Global |
| Google Sheets | Column order | Global |
| Google Sheets | Date format | Global |
| AirTable | Column width | Global |
| AirTable | Column order | Global |
| AirTable | Date format | Global |
| Google Tables | Column width | Global |
| Google Tables | Column order | Global |
| Google Tables | Date format | Global |
This data gives me a good indication that users are likely to expect our display options to be global.
What are users most likely to want? (Even if they don’t expect it.)
Because this is subjective, it’s is harder to answer without focus-group style research.
Personally, I would want them to be global in probably 98% of the use-cases I imagine Mathesar suiting. If I’m setting up a schema to use with other people, I want to make it nice and pretty for them so they can get to work right away without having to configure their display options.
Which solution is easiest for users to work around if they don’t like it?
With global display options, I can create an Exploration to view the data with different display options if I like.
But with per-user display options, there’s no way for me to share my work of configuring the display options.
Which solution is easiest for us to implement?
Which solution is easiest for us to change later on?
If we start with global display options and decide to change to per-user display options, it’s straightforward to apply the global display options to every user.
But if we start with per-user display options and want to change to global, then it becomes unclear how to set the global options based on multiple users with separate display options.
I suggest we make all display options global because it’s the easiest place to start. Then, after user feedback we can explore ways to meet the needs of users who want per-user display options.