From: Peter <peter@xxxxxxxxxxxxxx> Date: Sat, 09 Jun 2001 13:08:21 +1000 - There is the window within window concept. StarOffice and Microsoft Works both open a window containing multiple windows. I do not like those instances of windows within windows because they group unrelated applications and documents together. I would rather have Word files in a group with RTF documents but not mixed with spread sheets or database files. I personally detest this interface. It pretty much means that I can't do anything else while I'm using whatever application insists on doing this. Fortunately, multiple desktops can make this bearable, but it makes cut & paste between different applications very unpleasant. Something I liked, back in the days when I was learning to tie shoelaces and program in Assembler (which is the easier of the two), OS/360 had what is effectively read only memory for applications. I know 98% of programmers, including most of IBM's, did not understand the concept, but it meant you could load an entire application in to memory, or just the frequently used bits, without executing the program, or using any variables, then reference the code from other tasks, The other tasks would then be extremely small and totally independent, as each would open it's own read/write memory for variables but have almost no code. Writing a well formed program was actually easier than writing the code typically sold by the big software companies. A 100,000 people could use well formed code at the same time and not have a single collision. I do not understand why companies like Netscape work so hard to make one instance crash other or why Jasc have one instance update other. This sounds a lot like how shared libraries (and indeed, shared text in general) work, but it's not enough to solve the problem. If you run multiple copies of an application (on most UNIX-like operating systems, and even Windows is probably smart enough these days), there will be only one copy of read-only memory, and read-write data will be copied on write. That's strictly an efficiency issue, though; it doesn't change the programming model. Netscape actually runs only one instance, with multiple windows (and multiple threads sharing one address space). You'll note that if you try to start a second Netscape from the command line with one running you'll get a warning that it won't be able to use your history, certificates, or anything else. This is because Netscape isn't able to arbitrate between multiple instances modifying the same file concurrently (or even accessing it where one instance might change something). Multi-threaded programming is considerably more difficult than single threaded programming, and I guess Netscape decided to only go so far (make the application MT, but not arbitrate between multiple instances). The problem with MT programming, of course, is that if you get the synchronization wrong things blow up in your face, usually in very hard to debug ways. -- Robert Krawitz <rlk@xxxxxxxxxxxx> http://www.tiac.net/users/rlk/ Tall Clubs International -- http://www.tall.org/ or 1-888-IM-TALL-2 Member of the League for Programming Freedom -- mail lpf@xxxxxxxxxxxx Project lead for Gimp Print/stp -- http://gimp-print.sourceforge.net "Linux doesn't dictate how I work, I dictate how Linux works." --Eric Crampton