After some debate on IRC last night, it emerged that there are some differing ideas about how projects, sessions, panels and main-windows should work together, and it seems that there are different paradigms for workspaces.
I have my personal preferences, but my thinking is definitely incomplete -- I don't think any of us have yet groked all the ramifications of the different ideas, so I'm hoping this will help us elucidate the differences.
This approach is a sort-of free for all. Each window is a bucket for N~d~ docking panels, and any docking panel can be attached to any window. This total state of windows and panels would be a workspace made of N~p~ projects. Any number of windows can be created, and windows can contain as many or as few panels as you like, and panels can be dragged between windows.
The end result would be like getting multiple Xnests of Ion, and bear some similarity to the way some IDEs such as Eclipse, and Visual Studio work, but with a greater emphasis on multiple parent windows.
This would make sense if the normal workflow would involves many projects, and a lot of inter-project work.
* It's very orthogonal, and it lets the user configure their window layout to be exactly what they want. Lots of flexibility.
But, this idea has some difficulties:
* How does the user open different sequences and elements of the many projects? In IDEs, the answer is to have a project browser which usually remains open all the time. The user then double clicks on source files to open them. This takes up a lot of screen real estate, but in IDEs this doesn't matter; I think in lumiera we don't want to spend space on this. The alternative would be to put the sequence list into a menu somewhere, but this would quickly become cumbersome even for medium complexity projects.
* Every single panel will have to explicitly state which project it's connected to. It might be possible that this text could double as a drop-down selector, but even so that's pretty cumbersome for something that would otherwise be implicit.
* Closing one of the projects would cause many panels to disappear which would leave a nasty mess behind in UI. The user would have to waste time clearing it up.
* From a usability perspective it's not necessarily desirable to allow various mix-n-match UI because it allows the user to enter a create confusing mixture, where different parts of different project are shown in different places. Even for simple projects the user may end up having to spend a lot of time tending to the window layout - tweaking it. I'd prefer the user not to have to think about that.
* This may not be very helpful for viewing multiple projects which are _not_ inter-connected. It would be very easy for projects which are isolated to end up being mixed panel-wise, and acquiring weird dependencies on each other.
Paradigm 2: SDI Style
~~~~~~~~~~~~~~~~~~~~~
In this approach, every project gets it's own main window. It would be possible to create multiple main windows connected to a single project with View>New Window, but still no more than one project per window. This style is basically Single Document Interface (SDI), as seen in many applications: e.g. Inkscape.
I believe this makes sense if we think that projects are first class citizens. So a given feature film really would just be one project. In this case you'd really never want to look at more than one project at once. Complex projects would have have many sequences, so we'd need to have a good way to make sure the user doesn't get swamped.
Doing inter-project work would require the user to spend time arranging windows, but this paradigm assumes you very rarely want to. The payoff of it is simplicity - the panels of projects are kept together in one place.
joelholdsworths's Conclusion
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I favour this paradigm #2. The freedom from paradigm #1 enables some extra possibilities for window arrangement, but at the cost of a lot of extra complexity, and at the cost of allowing some pretty ugly configurations that both the programmer and the user would rather not have to think about. It seems to me that if you're doing a lot of inter-project work, you can drag windows into a formation - that's pretty normal for this rare case.