Le 21 nov. 05 à 23:30, Nicolas Roard a écrit :
While we (the project) make regular progress (at least judging from
commits ;-) it seems to me that we are a bit lacking in actual
objectives -- that is, we have a rough idea of what we would like,
grand plan about very sophisticated architectures, but nothing very
well defined short and mid term.
That's true.
And most of the work so far has been
about frameworks, not applications -- the wished workflow / UI vision
is rather fuzzy.
I have a rather precise vision (at least not so much fuzzy ;-) but I
haven't take time to completelety write it down on Étoilé wiki or
here on etoile-dev. I have discussed it a bit with Jesse some times
ago, but I have to put it clearly somewhere in a well thought manner.
I think it could be good to try something on the
application side as well :-) and before doing that, we should have
precise idea of what we want to do, and how we want to do it.
Let me cite the wishlist (from
http://dromasoftware.com/etoile/mediawiki/index.php?
title=EtoileWiki:About):
1 - Light, focused applications, cooperating together to provide a
rich user experience, using GNUstep services and our own Services
model
2 - Fast, simple data sharing between tasks and documents without
involving lot of context switches (between applications, windows,
selection etc.)
3 - Facility provided by default to composite, layout unrelated
elements in first-class objects like documents, folders etc.
4 - Workflow based on project inspired management (versioning,
indexing, sharing etc.)
5 - Easy communication/collaboration among users, where users are
first-class objects in the environment
6 - Assistant technology similar to the Newton's approach.
I have reformulated recently our About section with this wishlist to
allow more precise ideas to emerge and be discussed. I'm happy to see
it is useful :-)
how can we actually fulfill these goals ? What I think is important
(in contrast to existing desktop such as KDE/GNOME) is the emphasis
on:
- project management
- versioning
- first class objects (e.g., persons, locations, devices, etc.)
- indexing and search
For me, it is also very important to have very streamlined
Preferences/Setup UI because that's one area where KDE/GNOME are
really lagging behind when you compare them to Mac OS X.
For versioning, I think we should have a specific framework to manage
that, that applications and the filemanager can relay on to
retrieve/commit modifications. Such a framework will very likely relay
itself on libsvn or equivalent for other versioning systems. The
framework could also provides distributed features that way.
Yes, libsvn may be a good choice but I would be curious to know how
it could compare to ZFS (snapshot, journaling etc. features),
moreover at low level ZFS seems to behave like a database by
implementing FS semantic on top in an optional layer, which is quite
interesting I would say.
libsvn and ZFS are both different kind of beast, and ZFS would need
to be extended to support a simple versioning scheme, so libsvn is
probably a better choice initially (moreover it is available on most
usual OS).
About ZFS : http://www.opensolaris.org/os/community/zfs/
Basic UI
=======
Here is the UI I propose:
1) a file manager (GWorkspace for the moment) to present the
filesystem. You can present a folder content using different kind of
representations (list, icons, mini icons, "spatial", etc.)
I don't think it is a wise idea to include GWorkspace, because it
conflicts at many levels with our goals (index/search model, both
spatial and non spatial, one shelf by window, nextish UI etc.)
Moreover I really don't like the way it is coded.
As a temporary solution, we could include Saso's Workspace because it
is less featured but lighter and cleaner. However it doesn't really
fit with Étoilé vision, and when I looked at the code my initial
impression was it would be difficult to evolve it in the way I would
like (without rewriting most parts).
2) a tabbed shelf where you can drag and drop anything on it, not just
applications (although of course it will be used mainly to put and
access applications). The existence of tabs let you categorize easily
the applications, and have specific tabs for holding running apps for
example. Basically I want that:
http://www.roard.com/screenshots/Dock6.png
Yes, such tabbed shelf will be used in a way or another so we need
one for sure. I don't really like the screenshot look and feel but
I'm sure Jesse might be able to fix it ;-)
You should take a look at GWorkspace tabbed shelf, it may be reusable
without lot of refactorings but I'm not sure.
3) a desktop area where you can drag and drop objects (more on that
later)
You interact with folders and files on your computer via the
filemanager. Indexing/search can also allow for categorizing and
"intelligent folders" (showing the result of a search).
I would say a desktop view rather than a simple desktop area because
imho it should be just another Workspace related views like icon or
list view, but with the possibility to pin it on the background. In
my notes, I have thought about something similar under 'Work Table
view' term (this is inspired by Aperture Light Table).
My objection is more about the way it runs and interacts with
Workspace, I think it should be part of Workspace and not a separated
application.
Project Management:
================
In addition to that basic model, a folder could be a "project" -- a
bit like an application on GNUstep is a "special" folder, which
contains the binary and the resources of the application.
Now, if you open such a project bundle, what does it contains ? Well,
it will contains all the files you use for this particular project,
plus a certain number of specific information for managing the
project. So in a way, it's really "just" a normal folder, with some
structure/specific files. The kind of informations a project can
contains is, for example, the list of applications used in the project
(with their windows position, etc.) so that they can be restarted
automatically, the persons working on the project, possibly all that
hosted on a svn repository, etc.
When you actually open the project, it doesn't open in the filemanager
though. Its content is displayed.. on the desktop itself. So the
desktop is NOT a global area like on MacOS/Windows/KDE/GNOME -- it's
the content of a project.
I would prefer it can be browsed/visited like a normal folder, but
when it is maximized (which means pinned) in one way or another, its
content is then displayed on the desktop and the content of the
screen is itself reorganised to fit the project settings as when you
switch from one user account to another one on the fly.
In addition, the desktop should be able to display more than simple
icons -- it should display images, specific objects (draw lines, type
some text, etc), or even "mini apps" ala Konfabulator.
Mini apps would be an optional way to launch Étoilé components which
supports it; such components would support to be loaded anywhere
(inside documents, folders, projects) unless we decide to restrict
their use in project areas only.
In that way, opening a project will actually put you back where you
were; and the desktop can finally be again used as a *work* desktop,
where you can drag and drop stuff you're working on, organizing them
(we could have some things like what aperture does, or piles, etc.).
Yes. Aperture seems to rock I agree :-D
With support from the window manager, the projects will in fact be
able to act as virtual desktop, and you could easily switch from one
project to another.
hmm, projects should act as virtual desktop (or rather "virtual
account") by default in my opinion.
First Class Objects
==============
For managing first class object, I'm thinking of a very simple
mechanism. Basically, when we talk about that, we want to have
"objects" we interact with, represented as icons most of the time.
What we should have then is a specific role for an application, in
addition to the current Editor/Viewer roles defined and used by
GNUstep.
Yes, data objets like documents would have an UTI (Uniform Type
Identifier), applications/services would have an URI (Uniform Role
Identifier) ;-) We need to find another acronym here !
We could simply have a "Well" role, where anything drag and dropped
*on* such a proxy icon will be passed over to the corresponding
application in the "well" role.
Same way, double-clicking on such proxy icon should launch an
associated application with the file as parameter.
Good idea.
Proposed steps
============
For now, unless somebody wants to work on other things, I think we
could simply focus on the basic desktop elements:
- the desktop
- the shelf
- the filemanager
- a display manager for X
I basically agree, but you are forgetting Preferences related
applications :-) I outline it because I have spent most of my time
recently working on them.
I would be more precise, we need :
- tabbed shelf
- generic layout view à la InDesign or others (but far more limited)
- custom layout view tailored for project areas (inspired by Aperture
probably)
- workspace / file manager (with support for features introduced in
previous lines, but not immediately I would say)
- window manager
- session system
- preferences utilities
We could include too :
- services bar (NSStatusBar, NSStatusItem)
- Workspace related frameworks which supports indexing/searching,
versioning, FS operations, metadatas support on first-class objects
(for now named CoreObject and ExtendedWorkspaceKit)
- few extra applications would be welcome
For the display manager, garma had one that we could possibly reuse;
It is not in a usable state, but if someone is interesting to work on
it, it may be a good choice. At later point, it would be cool to
provide the possibility to run Étoilé in a closed virtual environment
(may be by developing a minimalistic OpenGL window server :-)… this
would be cool, because you would be able to run Étoilé on Mac OS X
without X11 beast to take an example, if we reuse cairo library for
the graphics engine it could be not much worse than writing a
complete Quartz backend .
For the shelf and desktop elements, .. well, that's
what we need to do :-)
Before starting anything though, what are your opinions about what I
outlined ? Specifically, the desktop/project management and the first
class objects ?
Very good, we will be able polish UI when we will have some elements
to combine together for experiments.
If everybody agrees to this outline, I can probably start coding a
shelf (I wrote one a long time ago which was half-working ;-) , well,
after I move forward wrt camaelon/gnustep (but definitely before the
fosdem).
Good idea.
The goal would be a major release of étoilé before the fosdem. A
release of the current frameworks could also be nice before that !
Yes I hope too.
Thanks,
Quentin.
--
Quentin Mathé
[EMAIL PROTECTED]