Le 7 mars 05, à 20:30, Stefan Urbanek a écrit :

I will stop on the last bullet - the document window. Let me explain:

Current state:
- user launches an "application"
- user uses the application to "create a document"
- user uses the application to "open a document"
- Edit, save, close
- Use another application to edit different document
- Use "import" feature to include product of one application into the
another.

How it should be in a document based environment:
- user "creates a document container" (from the environment)
- user adds "document parts" to the container
- user uses "document part editors" to edit components of the document
- "part editors" can save the parts

"document part" can be a text, diagram, spreadsheet,... and it is edited
in a window. Difference is, that the window is not owned by an
application, but by an environment or document manager.

Well, the problem I have with this approach, is that it only really works for DTP works. Which is fine, and is one important aspect of using a computer. But sometimes you really just want applications, not generating documents; other times you want to generate documents, but the DTP-metaphor is not as easy to implements.. what I mean is, if your goal is to produce paper, it's easy to imagine how can a document-oriented environment works -- you have a base DTP app, where you can embed objects that can be external to the original DTP app. That is easily doable using NSDataLink, which is a magnitude simpler solution than OLE (and probably better, imho, because you still works with applications on a separate object, which is a cleaner separation). But in fact, that metaphor is only evident with DTP -- for other medias than "producing paper document" it breaks a bit. For example, if your goal is to create *images*, then you don't want the embedded component approach.. hmm.. you would probably want some kind of filtering pipeline process... If your goal is to create movie, you want base tools (timeline, etc.), filters.. What I want to highlight is that the classical approach you and Quentin describes works well for something we know it works -- DTP. For other media, we need a bit more thinking. And sometimes anyway you really want an application, because you want to do an action, not produce a document. So thinking that a document-based environment will just throw any application concept is imho wrong.


To make transition easier say we keep applications. We only change them
to editors of those "document parts". From the beginning, only a kind of
"binder" application would be necessary. And this is important: to move
from application focused environment to the document focused environment we should go step-by-step to allow users adapt to the new paradigm. Only
then it will be accepted.

agree.


I would rather keep away from hanging the menu depending on selected
object, like it is done by OLE. This will bring only confusion, as users
are focused on the application. You will break their thoughts and make
them ask "where i am?" Context (document) sensitive changes can be done
only when it is clear that the environment is document oriented and that
there are no applications, but document part editors.

Nope. If we use NSDataLink, and to take the example of a DTP application, the DTP app will act completely normally, the user will use the app and stay in the app. Only when (s)he will want to *edit* the object, the editing application for this object will be launched.

yes. That part is not handled by NSDatalink. Personally I think that
such a OLE-like technology it's not _that_ useful for having a
document-based UI -- NSDatalink or something similar will work
reasonably the same, yet is magnitude simpler to have.
But of course, an OLE-like architecture (even better hopefully ;-)
also has its place and would be nice to have. It would be interesting
to have a look to KParts too..

Well, such components idea is only partially related to document
orientation : it would just improves the felling you get by the fact
your won't be using monolithic applications, then your workflow would
be way more less bound to applications (I mean the application concept
and the packaged features of your applications).


With process and application oriented operating environments you will
gain a little with this component architecture - you can not easily
compose those components to cooperate on a single task, then decompose
them. But what can you do currently is to have many small applications
that can edit pieces of a document. Call those applications
"components" :)

Well, what we want is encourage reusability :-)
The difficulty, as always, is to know how to have a good design for that -- and it's not easy :-) The whole NSPasteboard mechanism is rather brilliant though, and is a good enough to support NSDataLink, NSFilter ... it seems to me as a good, general, way of handling communication between applications / exchanging datas. The only thing I can see we would want is probably a more powerful NSFilter mechanism, or a similar mechanism (that would be useful for imaging applications for example, but not only -- NSFilter can be used to create representations of objects as simple Images, thus enabling the pasting of objects that are complex, without having an application to know how to display the original object).


<snip>

Again, if you decide to go in the directon of document orientation, then
go there slowly and try to use anything that is currently available
(like start by breaking applications and making them cooperate).

agree.. that's why NSDataLink is a good approach imho, because it leverages the existing GNUstep applications and GNUstep mechanism. Go gregory ! ;-)


Regards,

Stefan Urbanek

p.s.: I have related problem with StepTalk, where i wanted to finally
create "the application glue". It can be solved by a helper tool that
will create a separate process holding current state of a scripting
environment. Process = object memory = scripting environment = user task = user context = user thoughts. Similar attitude can be used in document
oriented environment, i think.

Cheers,

--
Nicolas Roard
"Any sufficiently advanced technology is indistinguishable from magic."
 -Arthur C. Clarke


Reply via email to