extragear/sdk/kdevplatform/shell

David Nolden zwabel at googlemail.com
Mon Dec 7 20:24:10 UTC 2009


Am Montag 07 Dezember 2009 20:47:46 schrieb Alexander Dymo:
> понеділок, 07-гру-2009 15:40:10 Niko Sams ви написали:
> > I think we first should define the use cases sessions are good for,
> > find a common scenario
> > and support that optimally.
> 
> And for that we need to let people use KDevelop4 for a while. They will
> eventually start asking :)
> 
> I'd say let's not get into a discussion about sessions (and not do any
> significant changes). We just don't understand well how people are going to
> use KDevelop.
> 

That doesn't make sense. There is requirements that need to be satisfied, that 
can only be satisfied by sessions:

Consider a developer working in two completely different areas. In his day-job 
he works on 2 php applications at the same time called "delta" and "omega", 
that depend on each other.

In private, he works on kdevelop, which includes kdevelop, kdevplatform, and 
sometimes kdelibs.

For each of the setups, a distinct set of run-targets, working-sets, set of 
currently open files, and eventually other configurations makes sense.

The disadvantages of the current approach where working-sets, current-open-
files, currently-open-projects, etc. are shared are obvious. Whenever the user 
switches from his day-job stuff to his private stuff, he has to close all 
projects manually, and reopen the other related projects manually. The 
management of the open files would be nearly acceptable here due to working 
sets, but still there will be unrelated working-sets for the day-job even when 
he really works on the private stuff, which reduces productivity.

To make such setups manageable conveniently, well-implemented implicit 
session-management could be used. So lets simulate the sequence how the user 
would discover the implicit session management:

A)
The user discovers kdevelop during his day-job. When he starts it up, there is 
an empty session without any projects, and he opens the "delta" + "omega" 
projects. When he's ready, he closes kdevelop, having effectively created a 
new "delta + omega" session.
A)
The user comes home in the evening to work on private stuff. KDevelop reloads 
the "delta + omega" session. The user isn't aware of session-management yet, 
so he clicks "Projects -> Close All Open Projects [alternative name: Close 
Session]", which also starts a new KDevelop window without any projects and 
files with a new empty unnamed session. Then he loads the kdevelop + 
kdevplatform + kdelibs projects, and has thereby created a non-empty session.
B)
Next day, the user wants to start on his work session again. He's not aware of 
sessions yet, so he just starts KDevelop, and selects the project "delta". 
However since last time the session was stored, KDevelop now asks "There is 
already a session containing the projects delta + omega, open the session?" 
The user clicks YES, and sits in front of his omega+delta session exactly the 
way he left it the day before.
C)
The user comes home again, and wants to work on kdevelop again. Now he 
remembers that all the stuff is stored in sessions, and clicks "Sessions -> 
kdevelop + kdevplatform + kdelibs" to load his session again the same way he 
left it the evening before.

That's my ideas of how sessions should work, and it's wouldn't be that hard to 
implement.

Greetings, David




More information about the KDevelop-devel mailing list