Discussion:
Installer UI help (take 2)
Frederico Muñoz
2005-04-05 17:53:42 UTC
Permalink
Hello all,

After reading the previous thread about the general UI strategy I have decided for the "old" NeXT non-sequential menu. Both ways have advantages, but I find that this is the most non-intrusive one.

The general look of with with Nesedah is at Loading Image...

I find it better than the tabs becaus the tabs somewhat indicated that all tab views were equally relevant, when only the first "Information" view is really important. The others are there for "advanced" or "custom" usage.

The way the UI works is (and some of this isn't yet reflected in the code):

* The popup changes the installation view between Info (main), progress and log
* Buttons on top allow for specific actions like Install, View Files, View Licence.

I didn't yet have the buttons in the shot, but you get the idea. I also need to decide if I'll put the Installation preferences in a popup view or in a new window via a button. Maybe in a view isn't a bad idea, still not sure how it fits better.

So, I have made the choice. The problem is that my generally ability to actually design a UI falls way short of what I need. So I am asking for specific advices regarding the UI (taking as more or less granted the above). Mockups and icons would also be *highly* appreciated (hi there Jesse! :) ).

The Installer code is at the Étoilé CVS. The gorm files still have a lot of cruft, I need to clean it up a bit, but the UI is there if anyone what's to look at it.



Best regards,

--
fsmunoz
Frederico Muñoz
Jesse Ross
2005-04-05 18:02:59 UTC
Permalink
Post by Frederico Muñoz
So, I have made the choice. The problem is that my generally ability to
actually design a UI falls way short of what I need. So I am asking for
specific advices regarding the UI (taking as more or less granted the
above). Mockups and icons would also be *highly* appreciated (hi there
Jesse! :) ).
What are your buttons labels and what do the buttons actually do?

Could any of the icons be part of the stock icon set <
http://www.gnustep.org/resources/documentation/Developer/UserExperience/default-icons.html
Post by Frederico Muñoz
?
When do you want to release this? I still owe a bunch of people icons, but
I'll add it to the list and prioritize based on release date from there.


J.
Frederico Muñoz
2005-04-06 11:16:20 UTC
Permalink
Post by Jesse Ross
Post by Frederico Muñoz
So, I have made the choice. The problem is that my generally ability to
actually design a UI falls way short of what I need. So I am asking for
specific advices regarding the UI (taking as more or less granted the
above). Mockups and icons would also be *highly* appreciated (hi there
Jesse! :) ).
What are your buttons labels and what do the buttons actually do?
You can see the present way it is in http://www.gesal.org/gnustep/ ,
look for the *new2,3,4. The 3 and 4 were made yesterday, with and
without Camaelon. As you can see it is still very rough, I just did
the bare minimum needed to convert from one way to the other.

The buttons and labels there are Install, Files, Licence. This is
however something I'm also asking some input. What buttons should be
there, in what order,with what disposition. Actually, although I
singled you out because of the icons (see below) my needs are at this
stage a bit "conceptual". For the release icons will of course be
needed, but I still have work to do on the overall UI before that.

Also, I don't know if a toolbar would be indicated in this situation
or not... they will open new windows when clicked, except perhaps
Install which will change the view below.
Post by Jesse Ross
Could any of the icons be part of the stock icon set <
http://www.gnustep.org/resources/documentation/Developer/UserExperience/default-icons.html
Post by Frederico Muñoz
?
Well, if I put the installation preferences a button I could use the
Preferences button. But I have doubts that it is the right place. I
guess I'm just horribly confused :/
Post by Jesse Ross
When do you want to release this? I still owe a bunch of people icons, but
I'll add it to the list and prioritize based on release date from there.
Good question. The first "release" will not actually be a release, but
a mail to the lists saying for people to test it so I can quash the
major stuff and get a feel for the common requestes.

Having said that it is begining to approach a usable state, especially
when this UI stuff gets better. It's intrumental to have a good UI to
be able to really realease it as a "user app".

So don't waste yout ime yet with icons for it, since at this stage I'm
still unsure of how many buttons should I have. You can however help
me by making general remarks about the way it is and the way it could
be improved, how the actions get mapped to the UI, etc.


Best Regards,

fsmunoz
M. Uli Kusterer
2005-04-06 14:21:15 UTC
Permalink
Post by Frederico Muñoz
The buttons and labels there are Install, Files,
Licence. This is however something I'm also
asking some input. What buttons should be there,
in what order,with what disposition. Actually,
although I singled you out because of the icons
(see below) my needs are at this stage a bit
"conceptual". For the release icons will of
course be needed, but I still have work to do on
the overall UI before that.
It would really help to instead know what
*functionality* the app will provide. Not just
what button names you see now. Could you give us
a more high-level overview? I.e., try to describe
this like a user. What can they use your app for?
They can open a package, view its file list, view
its Readme...?

Also, remember that this is for end-users. Most
of them will want to quickly get through this.
I.e. the GUI should invite users to just open
package -> read readme -> install -> quit. These
are the most important tasks, and thus must be
obvious the moment Installer.app opens.

I've mentioned before that, for the latter, a
single-window-approach with a bullet list of
available pages in their ideal sequence sounds
like the best option.

OTOH, for the advanced features (like listing
package contents, installing/uninstalling parts
of the wholöe package), having separate windows
seems okay to me. So, as a first mockup of how
I'd imagine Installer.app if I were writing it,
see:

<Loading Image...>

A quick walkthrough:

-> The boxes on the left aren't checkboxes,
they're some special type of "bullet list" items
(we'd need a Jesse-Design(tm) for that, if you
want it). The current one is blue, others are
grey, and unavailable ones are disabled (like
"Installing", which obviously isn't available).
Although this could be implemented as an
NSTabView variant, they have different uses. This
kind of bullet list is intended to make it easy
for the user to see a recommended order in which
to work through this list (though you can access
them out of order, if you want to). I'll
elaborate on this later, if there is a demand.

-> The "continue" and "back" buttons are an
inherent part of the "bullet list table view".
Note that, on the last page, the "continue"
button should actually say "Install", and
clicking it would enable and make current the
"Installing" page.

-> What Installer.app right now has in the "Info"
tab would go into a separate "Package Info"
window that can be brought up via the first of
the persistent items in the "Window" menu.

-> What Installer.app has as "Contents" or "File
Listing" tabs right now would be in the "Content
Inspector" window, though with a better UI. I'd
probably use an NSOutlineView to list the files
as pretty columns and rows, with icons and stuff
for read/write permissions, and an "Install"
button to install files from the package alone
and whatever else advanced users would do. So,
essentially advanced users would use the "Content
Inspector" to install stuff if the defaults don't
serve them.

-> The "Read Me" pane is the
pre-installation-info page. It would also include
any licenses or whatever. IMHO a "Read Me" that
doesn't mention the purpose and distribution
terms of a product is pointless anyway.

-> "Select Destination" lets you select the drive
on which to install. So, if you have several
partitions with GNUstep installed on them, you
could select one here.

-> The "Installation Type" pane allows for
(limited) selection of what parts you wish to
install. There should be *no* way to cause an
invalid installation using the options on this
pane, and it should only use terms that users can
be expected to know. E.g. for network
Client/Server apps, you could make installing the
Server an optional install so you can have one
installer for everything.

-> "Open Package" menu item: When you open a
package, you get a window like "Install Frobnitz"
in this example. "New Package" would only be
there if you want to integrate the tool for
creating packages into Installer.app. Personally,
I don't think that would be a good idea, since
most installer users won't ever make installers
themselves and we'd only confuse them with all
the options for package creation and editing. But
I needed something to fill the menu for this
mock-up.

-> The "Installer" menu: This is actually a
general GNUstep change I'm proposing: This is
basically the "Info" menu renamed to the name of
the current application. The "Quit" menu item
would be moved in there, because after all it is
used very rarely compared to all other menu items
in the application, which are typically used
several times during the app's lifetime (while
"quit", by definition, is only used once). But
note that I've been swayed by comments here and I
actually left "Hide" and "New" in there, as those
are used very frequently. To help distinguish
submenus from menu items that do something,
submenus' names are printed bold.

Disclaimer: This is only a mock-up. Jesse will
probably scream when I sees what I did to his
nice theme, and others will probably complain
that the main menu shouldn't have a close box and
that all menus look like they're main. I just
couldn't get the same shade Jesse used or that
would be brighter, and I left the widgets on
there out of laziness.

Hope these thoughts help. What do you others think?
--
Cheers,
M. Uli Kusterer
------------------------------------------------------------
"The Witnesses of TeachText are everywhere..."
http://www.zathras.de
Frederico Muñoz
2005-04-06 16:42:11 UTC
Permalink
Hi Uli,

*Many* thanks for your mockup, I can see you have talent for it.
The buttons and labels there are Install, Files, Licence. This is however
something I'm also asking some input. What buttons should be there, in what
order,with what disposition. Actually, although I singled you out because
of the icons (see below) my needs are at this stage a bit "conceptual". For
the release icons will of course be needed, but I still have work to do on
the overall UI before that.
It would really help to instead know what *functionality* the app will
provide. Not just what button names you see now. Could you give us a more
high-level overview? I.e., try to describe this like a user. What can they
use your app for? They can open a package, view its file list, view its
Readme...?
Yes, you're right, I assumed too much and wrote too little.

The functionality is obvious, to install packages. To do this the user can select install (I'll use select from now on to mean some way to indicate the option, be it menu, button, anything). Additionaly the user can view the Readme, the licence and the file list. Wheter or not they will see Welcome.txt is open for debate, since this makes more sense in a sequential installer. If they do it can I think be presented in the same window as the Readme (tab view, for example) or some other solution.

The cannot "open" a package, for that they can use GWorkspace. The extra information they have is described above.
Aditionaly they have 3 "views": the main one, which shows all essential information (see shots), which for 95% of the cases should be enough for the user. There is also the progress view, that contains a progress bar and that is automatically switched to upon selecting install. There is the log view that allows a more barebones view of the process.

So we have 2 different things: the views the user is presented with, defaulting to the "main" one which again is probably all that is needed for the large majority of the cases, and the extra information the user can request. These, being different in nature are not in the popup list that changed the view, so I was thinking of having them accessible in some other way, and thus the buttons you see on the shot. This follows closely the NeXT UI for Installer
Also, remember that this is for end-users. Most of them will want to quickly
get through this. I.e. the GUI should invite users to just open package ->
read readme -> install -> quit. These are the most important tasks, and thus
must be obvious the moment Installer.app opens.
This is an important point: I don't want users to "get trought it", they should be able to just select install, see some progress update, and be done with it, I.e. it should be non-sequential. The main view already presents the import information. Installation preferences should be accessible trough some way (similar to the files and licence).
I've mentioned before that, for the latter, a single-window-approach with a
bullet list of available pages in their ideal sequence sounds like the best
option.
Yes, and it's a good idea, but if at all possible I would like to try to avoid presenting the process as a fixed sequential process. There is some value in allowing the user to simply install it.
OTOH, for the advanced features (like listing package contents,
installing/uninstalling parts of the wholöe package), having separate windows
seems okay to me. So, as a first mockup of how I'd imagine Installer.app if I
<http://www.zathras.de/GNUstep_Nesedah_Installer.jpg>
First of all, it looks great.
-> The boxes on the left aren't checkboxes, they're some special type of
"bullet list" items (we'd need a Jesse-Design(tm) for that, if you want it).
The current one is blue, others are grey, and unavailable ones are disabled
(like "Installing", which obviously isn't available). Although this could be
implemented as an NSTabView variant, they have different uses. This kind of
bullet list is intended to make it easy for the user to see a recommended
order in which to work through this list (though you can access them out of
order, if you want to). I'll elaborate on this later, if there is a demand.
My main problem here is the actual implementation. Sticking to standard controls would be better for me since quite honestly it would mean less effort.
-> The "continue" and "back" buttons are an inherent part of the "bullet list
table view". Note that, on the last page, the "continue" button should
actually say "Install", and clicking it would enable and make current the
"Installing" page.
Makes sense.
-> What Installer.app right now has in the "Info" tab would go into a
separate "Package Info" window that can be brought up via the first of the
persistent items in the "Window" menu.
-> What Installer.app has as "Contents" or "File Listing" tabs right now
would be in the "Content Inspector" window, though with a better UI. I'd
probably use an NSOutlineView to list the files as pretty columns and rows,
with icons and stuff for read/write permissions, and an "Install" button to
install files from the package alone and whatever else advanced users would
do. So, essentially advanced users would use the "Content Inspector" to
install stuff if the defaults don't serve them.
I like this Content Inspector idea. THat is something that I can use at once.
-> The "Read Me" pane is the pre-installation-info page. It would also
include any licenses or whatever. IMHO a "Read Me" that doesn't mention the
purpose and distribution terms of a product is pointless anyway.
-> "Select Destination" lets you select the drive on which to install. So, if
you have several partitions with GNUstep installed on them, you could select
one here.
-> The "Installation Type" pane allows for (limited) selection of what parts
you wish to install. There should be *no* way to cause an invalid
installation using the options on this pane, and it should only use terms
that users can be expected to know. E.g. for network Client/Server apps, you
could make installing the Server an optional install so you can have one
installer for everything.
-> "Open Package" menu item: When you open a package, you get a window like
"Install Frobnitz" in this example. "New Package" would only be there if you
want to integrate the tool for creating packages into Installer.app.
Personally, I don't think that would be a good idea, since most installer
users won't ever make installers themselves and we'd only confuse them with
all the options for package creation and editing. But I needed something to
fill the menu for this mock-up.
Eheh, right. I will make a separate app for making packages, but I agree that it is better to keep them entirely separated.
-> The "Installer" menu: This is actually a general GNUstep change I'm
proposing: This is basically the "Info" menu renamed to the name of the
current application. The "Quit" menu item would be moved in there, because
after all it is used very rarely compared to all other menu items in the
application, which are typically used several times during the app's lifetime
(while "quit", by definition, is only used once). But note that I've been
swayed by comments here and I actually left "Hide" and "New" in there, as
those are used very frequently. To help distinguish submenus from menu items
that do something, submenus' names are printed bold.
I like the menu; I only add that every option in the main WIndow should also be accessable via the menu.
Disclaimer: This is only a mock-up. Jesse will probably scream when I sees
what I did to his nice theme, and others will probably complain that the main
menu shouldn't have a close box and that all menus look like they're main. I
just couldn't get the same shade Jesse used or that would be brighter, and I
left the widgets on there out of laziness.
They help a lot, really. Overall my only concern is that I want to keep it non-sequential by nature. Changes to the installation, for example, are only needed if the user really wants them and knows that he really wants to change the defaults, otherwise a regular user shouldn't be presented with it. I want to minimize the time needed to install a package, but allow for people that want more info or have special needs to access "advanced" functionality. The idea is that "less is more". It should ideally allow for "double click, press Install, Quit" since people when using an installer are not interest in the Installer but in using the packaged application.

A possbile exception would be to integrate a closely related option into the main Info view. After the Location there could be a button "Change Location...", after the Software For there could be a "Choose Platforms to be installed...", etc. Don't know if this is a good idea though since it woulkd clutter the main view.

Do you think you can "merge" some of your ideas with this kind of interface? You seem to have good capabilities in imagining the overall structure of an app. What the app does and what are the different options I have said above. There are probably some features that I won't add at once, since I plan on starting with the bare basics, but again I can structure it as:

Views
* Main Package Information View
* Log View
* Progress View

and

Actions
* Install (and later on possibly Upgrade and Uninstall, but only one at a time will be present)
* View Files
* View Readme / Welcome
* View Licence
* Set Installation Preferences (this contains at a basic level the Location, Languages and Platforms (these later 2 are not implemented but I'm aiming at them). More "advanced" could be stuff like "Abort on overwrite", "Preserve permissions", etc).


Agan, many thanks for you mockup, I know it takes time. I eagerly await your comments.

Best Regards,


fsmunoz
--
Frederico Muñoz
M. Uli Kusterer
2005-04-07 14:36:45 UTC
Permalink
Post by Frederico Muñoz
The functionality is obvious, to install
packages. To do this the user can select install
(I'll use select from now on to mean some way to
indicate the option, be it menu, button,
anything). Additionaly the user can view the
Readme, the licence and the file list. Wheter or
not they will see Welcome.txt is open for
debate, since this makes more sense in a
sequential installer. If they do it can I think
be presented in the same window as the Readme
(tab view, for example) or some other solution.
The problem with tabs and page-switcher popup
buttons is that it isn't obvious to the user
which of these pages are important and which
aren't, and whether the pages are alternatives to
each other or complement each other.

A tabbed interface, due to its hiding of
information (only 1 page is visible at a time,
after all), looks more complex to the user at
first sight. So, I'd suggest we avoid *any*
multi-page design. The bullet-list design was my
attempt at a compromise, because it obviously is
a sequence (and that's supported by the
"continue" and "back" buttons), and sequences are
easier to understand and look less complex to
users. That's why Wizards are in principle a good
idea, even though most executions are lacking.
Post by Frederico Muñoz
The cannot "open" a package, for that they can
use GWorkspace. The extra information they have
is described above.
Well, if they can open a package in GWorkspace,
there should probably also be an "open" menu item
in Installer.app, just in case someone opens
Installer.app itself in GWorkspace.
Post by Frederico Muñoz
Aditionaly they have 3 "views": the main one,
which shows all essential information (see
shots), which for 95% of the cases should be
enough for the user. There is also the progress
view, that contains a progress bar and that is
automatically switched to upon selecting
install. There is the log view that allows a
more barebones view of the process.
Just to avoid misunderstandings:

These views should *not* be modeled as tabs.
Tabs are different pages of the same book. Not
different editions of the same basic text (or
content). The concept of "views" is actually a
very computer-centric thing, and as such should
not be used outside this discussion here (= no
menu item or button in the GUI should say "log
view" or "progress view").

-> The progress bar is only shown once the
installation has been started. As such, it should
probably be a modal window that is shown after
the user has clicked "Install". Adding a third
page for "Progress" to the tab view would be
useless. The user can't interact with it, and
it'll always display "0% complete". There's no
use in seeing it unless it's needed.

-> The "Log View" could easily be implemented as
an additional item in the modal progress window.
You could just have a "More Info" button (or
disclosure triangle, or whatever) that makes the
progress window taller and shows the log below
the progress bar. "Progressive Disclosure".
People who don't want or understand the log will
keep it hidden (like it is by default), and
others can show it during installation. -- Does
that work, or am I understanding the purpose of
this log wrongly? What exactly is the log for?
Just let users know what we're doing with their
system? Or more?
Post by Frederico Muñoz
So we have 2 different things: the views the
user is presented with, defaulting to the "main"
one which again is probably all that is needed
for the large majority of the cases, and the
extra information the user can request. These,
being different in nature are not in the popup
list that changed the view, so I was thinking of
having them accessible in some other way, and
thus the buttons you see on the shot. This
follows closely the NeXT UI for Installer
You did it the wrong way around. Buttons are
easier to access, and easier to see. Popups, on
the other sand, need to be clicked once only to
show what options are available. So, if at all,
you'd want to do it the other way round: Put the
advanced options in the popup, and the stuff most
users will use on friendly buttons that can all
be spotted the moment the app has started.

The ideal application starts up and the user
immediately knows what can be done with it and
what can't. (applications that serve more than
one task may have to make trade-offs here, but an
Installer is the prototypical single-task tool)
Post by Frederico Muñoz
Post by M. Uli Kusterer
Also, remember that this is for end-users.
Most of them will want to quickly
Post by M. Uli Kusterer
get through this. I.e. the GUI should invite users to just open package ->
read readme -> install -> quit. These are the most important tasks, and thus
must be obvious the moment Installer.app opens.
This is an important point: I don't want users
to "get trought it", they should be able to just
select install, see some progress update, and be
done with it, I.e. it should be non-sequential.
That's what "get through it" means. They want to
get it over with, they want it to be finished as
quickly as possible. They also don't want to
learn more about installation than is absolutely
needed. So, when they come in it should be
obvious to them what to do.
Post by Frederico Muñoz
The main view already presents the import
information. Installation preferences should be
accessible trough some way (similar to the files
and licence).
"import" = "important", right?
Post by Frederico Muñoz
Post by M. Uli Kusterer
I've mentioned before that, for the latter, a single-window-approach with a
bullet list of available pages in their ideal sequence sounds like the best
option.
Yes, and it's a good idea, but if at all
possible I would like to try to avoid presenting
the process as a fixed sequential process. There
is some value in allowing the user to simply
install it.
Let me assure you I agree that installers (like
all software) need to get out of the way. The
users want to get *their* work done, not manage
the computer. Here's my rationale why my attempts
may seem overly complicated to you right now:

If the installer is really so simple that all
that's needed is one click of a button, the
installer shouldn't have a GUI. It doesn't need
one. When you open such an installer package, you
essentially already gave that one command and it
should just start the installation (after asking
the user for confirmation).

We already have drag & drop installation for
simple GNUstep apps, and we talked (on
GNUstep-discuss?) about how we could have
built-in installers that are run the first time
an application is launched. They don't need a
GUI, they just drop needed components in the
requisite system directories and that's it.

So, the Installer.app GUI would ideally *only*
be used for installers that need to provide more
options. And I don't see how your simple design
would handle those. Yes, we could use tabs, but
that would provide less guidance and make the
fact less obvious that one of these pages
contains important options the user will want to
specify.

I guess this is where I provide a better
description of my "bullet list" view. The
important thing about it is that it can do
*everything* a tab view can do. You can click one
of the bullet-items and it will show that page
(if it isn't disabled). It could even give pages
you already viewed a "visited" color, like we
have it for web links. The whole point of it is
to encourage just going through all the pages in
sequence until you're finished, but to get out of
the way of power users who may know that the
defaults are what they need on two pages and let
them advance directly to the third.

Of course, the way I've designed it right now
has two small usability issues in need of fixing.
1) "Installing" is disabled -- this could be
mis-read as meaning "can't install". 2) If the
"Continue" button turns into "Install" on the
last page, this makes it kind of hard to find the
"Install" button for people who don't go through
it sequentially. This could maybe be fixed by
just having an "Install" page, though, and
placing the progress bar and "Install" button on
that, and not disabling this page.
Post by Frederico Muñoz
Post by M. Uli Kusterer
seems okay to me. So, as a first mockup of
how I'd imagine Installer.app if I
First of all, it looks great.
That wasn't really the point ;-) But thanks, it's appreciated.
Post by Frederico Muñoz
Post by M. Uli Kusterer
-> The boxes on the left aren't checkboxes, they're some special type of
"bullet list" items (we'd need a
Jesse-Design(tm) for that, if you want it).
Post by M. Uli Kusterer
The current one is blue, others are grey, and unavailable ones are disabled
(like "Installing", which obviously isn't available). Although this could be
implemented as an NSTabView variant, they have different uses. This kind of
bullet list is intended to make it easy for the user to see a recommended
order in which to work through this list (though you can access them out of
order, if you want to). I'll elaborate on this later, if there is a demand.
My main problem here is the actual
implementation. Sticking to standard controls
would be better for me since quite honestly it
would mean less effort.
Well, good GUI takes some effort. Also, it
wouldn't be too hard. You could just use a
tabless NSTabView for now, and maybe a
transparent NSTableView to its left for switching
pages. Or maybe an NSMatrix of radio button cells
with custom images.
Post by Frederico Muñoz
I like this Content Inspector idea. THat is something that I can use at once.
One note: "Inspector" was a bad choice of word
on my part. That term is usually used for a
floating panel that shows the selection's
attributes. Maybe "Content Browser" or just
"Package Browser" would be a better choice.
Post by Frederico Muñoz
I like the menu; I only add that every option in
the main WIndow should also be accessable via
the menu.
Can you elaborate? I wouldn't want *everything*
we have in the window to be in the menu. The
reason why menus were introduced was that there
were too many options and actions to put them all
in the main window. Then later someone realized
that some commands (but different ones for each
user) are used fairly commonly, and so toolbar
buttons were added that are configurable
on-demand shortcuts to certain menu items.

While I agree that everything in the toolbar and
everything in context menus should have an
original in the menu that is guaranteed to be
available, I don't think we should do that for
*everything*. Toolbar items may have been removed
by the user, and context menus may be un-obvious
to the user, and require right-clicks on the
right items to be found to even know they
*exist*. OTOH, prominent buttons in a
(effectively) permanent main window like we have
it in the installer won't go away, and are
constantly in view. It would only mean cluttering
the menu needlessly to duplicate those.
Post by Frederico Muñoz
They help a lot, really. Overall my only concern
is that I want to keep it non-sequential by
nature. Changes to the installation, for
example, are only needed if the user really
wants them and knows that he really wants to
change the defaults, otherwise a regular user
shouldn't be presented with it. I want to
minimize the time needed to install a package,
but allow for people that want more info or have
special needs to access "advanced"
functionality. The idea is that "less is more".
It should ideally allow for "double click, press
Install, Quit" since people when using an
installer are not interest in the Installer but
in using the packaged application.
As I said, if you double click, click install,
quit, you're using an installer with a GUI where
you should be using one without. I think this
should be the domain of the "embedded installer"
we mentioned elsewhere. If you actually end up
with the Installer.app GUI, I think you either
*need* some options, or you *want* them. For the
second case, we have the "Content Browser" and
the "Open" menu item. Users can just use those to
open any (even embedded) installer and view its
contents, install/uninstall single files and do
whatever they want.

So, the only case our GUI still needs to cover
is the case where you *need* to specify some
options. In that case, we shouldn't have need for
more options than the "Installation Type" pane in
my example.

Another option I thought about was stuffing all
of this into a single window, with "More Info"
(or "Advanced Options") buttons that make the
window larger (and turn into "Less Info"/"Less
Options").

Correct me if I'm omitting something, but the
minimal installation info would be:

Readme/License (short form, and a verbose version)
-----
Destination (sensible default for current system, button to change)
-----
Installation Type: (short blurb on default install, "Advanced" button)
-----
[Install]

The Readme would be in a text field. The short
field would be *forced* to non-scrolling, and
there would be strict guidelines on what kind of
information should go in there. It may have a
button to show a more verbose version for those
that want it in a scrolling field...

Destination would essentially be a "Choose
Folder" or "Choose Drive" button. It would have
sensible defaults (usually "/GNUstep/Library/"
and "/GNUstep/Applications/" if you're root, and
the proper user-specific directories if you
aren't, where possible.

Installation Type would just provide the default
install, with a *short* blurb on what this will
install. In some cases this might also mention
that a certain popular component won't be
installed unless you use Advanced install, but
this really should be an exception.

In some cases, there may be two options or three
here, i.e. essentially the radio buttons in my
sample "Installation Type" in the mockup, where
the checkboxes under "Advanced" would only be
visible if you click the "Advanced" button.
Post by Frederico Muñoz
A possbile exception would be to integrate a
closely related option into the main Info view.
After the Location there could be a button
"Change Location...", after the Software For
there could be a "Choose Platforms to be
installed...", etc. Don't know if this is a good
idea though since it woulkd clutter the main
view.
Do we need Platform selection in there? How
common is it that people choose on a per-package
basis to install for a certain platform or not?

I'd say platform selection should default to the
current platform (which surely the Installer can
find out, maybe even already at compile-time).
We'd put a "Platforms to install:" list of
checkboxes into the Preferences. I.e., this is an
installer-wide setting (of course, if a platform
isn't available, it won't be installed).

So, if you're managing a server, you'd install
platform variants for all kinds of computers that
access your server, while if your computer is a
client, you'd keep the default which just
installs the variant you actually need.
Post by Frederico Muñoz
Do you think you can "merge" some of your ideas with this kind of interface?
See above. Is that better?
Post by Frederico Muñoz
Actions
* Install (and later on possibly Upgrade and
Uninstall, but only one at a time will be
present)
Danger, Will Robinson! While "Upgrade" and
"Uninstall" are only needed when you already have
an installation, "Install" should stay available,
for the cases where you want to install on
several partitions or so (if Installer.app
supports that, that is).
Post by Frederico Muñoz
* View Files
This is advanced, right?
Post by Frederico Muñoz
* View Readme / Welcome
* View Licence
I tend to lump these together into one item.
Keep it short, sweet, and informative. Too many
readmes contain company philosophy, "thanks to"
lists and internal details, which isn't important
for an installer. Instead, we'll want "What does
this app do?", "Are there any dangers?" (I.e.
systems where it's not recommended to install),
"What rights do I have?". The latter would
essentially be a short Creative-Commons-Style
summary of the license (+ a button or link for
calling up the full license).

The "Dangers" might also be conditionalized,
i.e. what do I care whether it's dangerous to
install Zork.app on a PDP-11 if I'm running
GNUstep on a C64.
Post by Frederico Muñoz
* Set Installation Preferences (this contains at
a basic level the Location, Languages and
Platforms (these later 2 are not implemented but
I'm aiming at them). More "advanced" could be
stuff like "Abort on overwrite", "Preserve
permissions", etc).
Again, in most cases those would be app-wide
Preferences, I guess. With well-written installer
packages, this should "just work". Depending on
usage patterns, it may be worth considering the
introduction of different "classes" of programs,
though. In that case, "Preference Sets" could be
saved by Admins, to decide how to install a
package, and then selected. But I wouldn't worry
about such a feature too much yet.

I hope this helps some.
--
Cheers,
M. Uli Kusterer
------------------------------------------------------------
"The Witnesses of TeachText are everywhere..."
http://www.zathras.de
Frederico Muñoz
2005-04-07 23:51:52 UTC
Permalink
Hi,
Post by Frederico Muñoz
The functionality is obvious, to install packages. To do this the user can
select install (I'll use select from now on to mean some way to indicate
the option, be it menu, button, anything). Additionaly the user can view
the Readme, the licence and the file list. Wheter or not they will see
Welcome.txt is open for debate, since this makes more sense in a sequential
installer. If they do it can I think be presented in the same window as the
Readme (tab view, for example) or some other solution.
The problem with tabs and page-switcher popup buttons is that it isn't
obvious to the user which of these pages are important and which aren't, and
whether the pages are alternatives to each other or complement each other.
This is why I stoped using the tabs. But popup switching is less intrusive and makes the
initial view stand out in relation to the others. At least it looks that way to me when looking at it.

In the case of the Readme I still think that it could be an option, mainly because the different "documents" being presented are indeed of equal importance, so a tab view would probably work. But I can also see it working without them, so I don't have a rigid opinion on this part, whatever works better.
A tabbed interface, due to its hiding of information (only 1 page is visible
at a time, after all), looks more complex to the user at first sight. So, I'd
suggest we avoid *any* multi-page design. The bullet-list design was my
attempt at a compromise, because it obviously is a sequence (and that's
supported by the "continue" and "back" buttons), and sequences are easier to
understand and look less complex to users. That's why Wizards are in
principle a good idea, even though most executions are lacking.
Well, there are two ways to look at this, using a sequential process and not using one. It is my opinion that a wizard is not needed and that it makes a sequential process exist artifically. See more below.
Post by Frederico Muñoz
The cannot "open" a package, for that they can use GWorkspace. The extra
information they have is described above.
Well, if they can open a package in GWorkspace, there should probably also
be an "open" menu item in Installer.app, just in case someone opens
Installer.app itself in GWorkspace.
Yes, that's possible, I'll just say to NSWorkspace to open the app bundle.
Post by Frederico Muñoz
Aditionaly they have 3 "views": the main one, which shows all essential
information (see shots), which for 95% of the cases should be enough for
the user. There is also the progress view, that contains a progress bar and
that is automatically switched to upon selecting install. There is the log
view that allows a more barebones view of the process.
These views should *not* be modeled as tabs. Tabs are different pages of the
same book. Not different editions of the same basic text (or content). The
concept of "views" is actually a very computer-centric thing, and as such
should not be used outside this discussion here (= no menu item or button in
the GUI should say "log view" or "progress view").
I didn't modeled them as tabs, unless you group popup switching and tabs as the
same overall design. I changed from tabs to popup switching for the reasons above.
I think that it makes the initial presentation simple and easy to understand while
making available other ways of viewing the installation process, but without imposing
them. This allows the user to "grow", as it were, in his usage of the application, *if*
he wishes to do so. It also follows a general way of presenting things relating to a
single thing, namely in the inspectors, etc.

The menu thing is separate, and stems from my idea that nothing should be only
available via buttons on the main window but also on the menu.
-> The progress bar is only shown once the installation has been started. As
such, it should probably be a modal window that is shown after the user has
clicked "Install". Adding a third page for "Progress" to the tab view would
be useless. The user can't interact with it, and it'll always display "0%
complete". There's no use in seeing it unless it's needed.
Again, tabs != switch view via popup. But the progress is indeed at 0%, and if the
user choses a small-footprint option named "Progress" before installing the application
that is what he should expect to see. The main thing here is that I find that the popup
switch is non-intrusive enough and that it makes the default initial view the one that
gets the user attention (tabs, on the other hand, since they display the topics at the
top, gives an idea of equal importance.

Another thing to consider is the pervasiveness of the popup switch in GNUstep to deal
with this kind of situations. The user, after seing the way things work, should feel more
comfortable with it since it is present in other apps. That's one of the strenghts NeXT
had IMHO, the design choices were consistent.
-> The "Log View" could easily be implemented as an additional item in the
modal progress window. You could just have a "More Info" button (or
disclosure triangle, or whatever) that makes the progress window taller and
shows the log below the progress bar. "Progressive Disclosure". People who
don't want or understand the log will keep it hidden (like it is by default),
and others can show it during installation. -- Does that work, or am I
understanding the purpose of this log wrongly? What exactly is the log for?
Just let users know what we're doing with their system? Or more?
No, you are understanding it correctly, the log just says what it the program is doing
(Writing file XXX to YYY...). What you prupose is certainly a way to do it (I think it is the
way GNOME does it IIRC).

I actually had a NSPanel poping up to show the progress bar, but I removed it. I found
it awkward to use, but this can be related to my general dislike for popup windows that
could be avoided. In this specific situation

But this specific pont is something that has been bothering me. As I said, I initially went for
the NSPanel version. Maybe I didn't like my particular way of doing it, but what you propose
makes sense and is maybe the most logical way to put it.
Post by Frederico Muñoz
So we have 2 different things: the views the user is presented with,
defaulting to the "main" one which again is probably all that is needed for
the large majority of the cases, and the extra information the user can
request. These, being different in nature are not in the popup list that
changed the view, so I was thinking of having them accessible in some other
way, and thus the buttons you see on the shot. This follows closely the
NeXT UI for Installer
You did it the wrong way around. Buttons are easier to access, and easier to
see. Popups, on the other sand, need to be clicked once only to show what
options are available. So, if at all, you'd want to do it the other way
round: Put the advanced options in the popup, and the stuff most users will
use on friendly buttons that can all be spotted the moment the app has
started.
Actually this is exactly why I did it: the buttons (with Install at the head) get more
attention than the popup switcjer that changes views, This is intended.
The ideal application starts up and the user immediately knows what can be
done with it and what can't. (applications that serve more than one task may
have to make trade-offs here, but an Installer is the prototypical
single-task tool)
Post by Frederico Muñoz
Also, remember that this is for end-users. Most of them will want to
quickly
get through this. I.e. the GUI should invite users to just open package ->
read readme -> install -> quit. These are the most important tasks, and thus
must be obvious the moment Installer.app opens.
This is an important point: I don't want users to "get trought it", they
should be able to just select install, see some progress update, and be
done with it, I.e. it should be non-sequential.
That's what "get through it" means. They want to get it over with, they want
it to be finished as quickly as possible. They also don't want to learn more
about installation than is absolutely needed. So, when they come in it should
be obvious to them what to do.
Exactly.
Post by Frederico Muñoz
The main view already presents the import information. Installation
preferences should be accessible trough some way (similar to the files and
licence).
"import" = "important", right?
Yes, sorry, I must begin to review my mails before sending.
Post by Frederico Muñoz
I've mentioned before that, for the latter, a single-window-approach
with a
bullet list of available pages in their ideal sequence sounds like the best
option.
Yes, and it's a good idea, but if at all possible I would like to try to
avoid presenting the process as a fixed sequential process. There is some
value in allowing the user to simply install it.
Let me assure you I agree that installers (like all software) need to get
out of the way. The users want to get *their* work done, not manage the
computer. Here's my rationale why my attempts may seem overly complicated to
If the installer is really so simple that all that's needed is one click of
a button, the installer shouldn't have a GUI. It doesn't need one. When you
open such an installer package, you essentially already gave that one command
and it should just start the installation (after asking the user for
confirmation).
It is so simple that it might be used that way, but it could also be used with different options. However simple the package is the interface presented must be the same. I'm strictly speaking of Installer here, not of alternative methods of installation that can use Installer or it's bundles.
We already have drag & drop installation for simple GNUstep apps, and we
talked (on GNUstep-discuss?) about how we could have built-in installers that
are run the first time an application is launched. They don't need a GUI,
they just drop needed components in the requisite system directories and
that's it.
Yes, see above. We talked about it, I think it is great, but is something that I will only work upon after I have the "standard" Installer more or less ready to be used. So in this view you shouldn't expect special treatment for simple packages. You can even assume that the package contains an app that shouldn't need to be packaged but it was nonetheless. The interface we are talking about should be the same for simple and complex packages, but that doesn't mean we should assume that the simple ones won't need any UI interaction.
So, the Installer.app GUI would ideally *only* be used for installers that
need to provide more options.
See above. Even with the "automatic" methods you mentioned a use could actually prefer to use the installer Application for some reason (i.e. not use Installer to do the automatic installation but use the full app).
And I don't see how your simple design would
handle those. Yes, we could use tabs, but that would provide less guidance
and make the fact less obvious that one of these pages contains important
options the user will want to specify.
No tabs... You do raise a valid objection, I haven't thought about meta packages (custom install comes into play here) and the way to install those is indeed hard to do with my current UI.
I guess this is where I provide a better description of my "bullet list"
view. The important thing about it is that it can do *everything* a tab view
can do. You can click one of the bullet-items and it will show that page (if
it isn't disabled). It could even give pages you already viewed a "visited"
color, like we have it for web links. The whole point of it is to encourage
just going through all the pages in sequence until you're finished, but to
get out of the way of power users who may know that the defaults are what
they need on two pages and let them advance directly to the third.
Wouldn't this also work the other way around? Power users would be more likely to what to change the defaults, while regular users would justt go nex, nex, next, next, install
?
Of course, the way I've designed it right now has two small usability issues
in need of fixing. 1) "Installing" is disabled -- this could be mis-read as
meaning "can't install". 2) If the "Continue" button turns into "Install" on
the last page, this makes it kind of hard to find the "Install" button for
people who don't go through it sequentially. This could maybe be fixed by
just having an "Install" page, though, and placing the progress bar and
"Install" button on that, and not disabling this page.
Post by Frederico Muñoz
seems okay to me. So, as a first mockup of how I'd imagine Installer.app
if I
First of all, it looks great.
That wasn't really the point ;-) But thanks, it's appreciated.
Post by Frederico Muñoz
-> The boxes on the left aren't checkboxes, they're some special type of
"bullet list" items (we'd need a Jesse-Design(tm) for that, if you want
it).
The current one is blue, others are grey, and unavailable ones are disabled
(like "Installing", which obviously isn't available). Although this could be
implemented as an NSTabView variant, they have different uses. This kind of
bullet list is intended to make it easy for the user to see a recommended
order in which to work through this list (though you can access them out of
order, if you want to). I'll elaborate on this later, if there is a demand.
My main problem here is the actual implementation. Sticking to standard
controls would be better for me since quite honestly it would mean less
effort.
Well, good GUI takes some effort. Also, it wouldn't be too hard. You could
just use a tabless NSTabView for now, and maybe a transparent NSTableView to
its left for switching pages. Or maybe an NSMatrix of radio button cells with
custom images.
One thing I think is important is that the UI should use the controls and presentation commonly used in other apps. It must not introduce a special way to present things. Installer is by definition something that should take advantage of the already known way that things work in other apps. This is actually my largest concern, as you will see below.
Post by Frederico Muñoz
I like this Content Inspector idea. THat is something that I can use at once.
One note: "Inspector" was a bad choice of word on my part. That term is
usually used for a floating panel that shows the selection's attributes.
Maybe "Content Browser" or just "Package Browser" would be a better choice.
Post by Frederico Muñoz
I like the menu; I only add that every option in the main WIndow should
also be accessable via the menu.
Can you elaborate? I wouldn't want *everything* we have in the window to be
in the menu. The reason why menus were introduced was that there were too
many options and actions to put them all in the main window. Then later
someone realized that some commands (but different ones for each user) are
used fairly commonly, and so toolbar buttons were added that are configurable
on-demand shortcuts to certain menu items.
I distinctly remember the fact that no option should be accessible only trough controls in certain contexts. I might be wrong about it, but if you look at e.g. GNUMail everything you can do on every window can be done via the menu. This is on purpose for that reason. This is something that must indeed be clarified since it is of interest not only for Installer but all the apps.
While I agree that everything in the toolbar and everything in context menus
should have an original in the menu that is guaranteed to be available, I
don't think we should do that for *everything*. Toolbar items may have been
removed by the user, and context menus may be un-obvious to the user, and
require right-clicks on the right items to be found to even know they
*exist*. OTOH, prominent buttons in a (effectively) permanent main window
like we have it in the installer won't go away, and are constantly in view.
It would only mean cluttering the menu needlessly to duplicate those.
True, I was thinking more about context and toolbar.
Post by Frederico Muñoz
They help a lot, really. Overall my only concern is that I want to keep it
non-sequential by nature. Changes to the installation, for example, are
only needed if the user really wants them and knows that he really wants to
change the defaults, otherwise a regular user shouldn't be presented with
it. I want to minimize the time needed to install a package, but allow for
people that want more info or have special needs to access "advanced"
functionality. The idea is that "less is more". It should ideally allow for
"double click, press Install, Quit" since people when using an installer
are not interest in the Installer but in using the packaged application.
As I said, if you double click, click install, quit, you're using an
installer with a GUI where you should be using one without. I think this
should be the domain of the "embedded installer" we mentioned elsewhere. If
you actually end up with the Installer.app GUI, I think you either *need*
some options, or you *want* them. For the second case, we have the "Content
Browser" and the "Open" menu item. Users can just use those to open any (even
embedded) installer and view its contents, install/uninstall single files and
do whatever they want.
So, the only case our GUI still needs to cover is the case where you *need*
to specify some options. In that case, we shouldn't have need for more
options than the "Installation Type" pane in my example.
Again, I really want a generic solution that works equaly well in both cases.
Another option I thought about was stuffing all of this into a single
window, with "More Info" (or "Advanced Options") buttons that make the window
larger (and turn into "Less Info"/"Less Options").
I never done this, and I don't know if it is something that is used in other apps. I prefer using something already known to the user if possible. Everything in a window seems weird to me, I prefer your mockup.
Correct me if I'm omitting something, but the minimal installation info
Readme/License (short form, and a verbose version)
-----
Destination (sensible default for current system, button to change)
-----
Installation Type: (short blurb on default install, "Advanced" button)
-----
[Install]
The minimal info is what you see in the shots I sent in the original mail, i.e. those you mentioned plus Sizes and Platforms. Description is also there, but the info is taken from the Readme.
The Readme would be in a text field. The short field would be *forced* to
non-scrolling, and there would be strict guidelines on what kind of
information should go in there. It may have a button to show a more verbose
version for those that want it in a scrolling field...
Important point: I must assume that no specific information particular to my Installer is given. I must try to work with the information defined in the spec.
Destination would essentially be a "Choose Folder" or "Choose Drive" button.
It would have sensible defaults (usually "/GNUstep/Library/" and
"/GNUstep/Applications/" if you're root, and the proper user-specific
directories if you aren't, where possible.
Yes, and the package itself gives a default (not required, but many do in case of non.relocatable, multi directory apps)
Installation Type would just provide the default install, with a *short*
blurb on what this will install. In some cases this might also mention that a
certain popular component won't be installed unless you use Advanced install,
but this really should be an exception.
Yes, this for metapackages, normal packages can't be split.
In some cases, there may be two options or three here, i.e. essentially the
radio buttons in my sample "Installation Type" in the mockup, where the
checkboxes under "Advanced" would only be visible if you click the "Advanced"
button.
Post by Frederico Muñoz
A possbile exception would be to integrate a closely related option into
the main Info view. After the Location there could be a button "Change
Location...", after the Software For there could be a "Choose Platforms to
be installed...", etc. Don't know if this is a good idea though since it
woulkd clutter the main view.
Do we need Platform selection in there? How common is it that people choose
on a per-package basis to install for a certain platform or not?
I'd say platform selection should default to the current platform (which
surely the Installer can find out, maybe even already at compile-time). We'd
put a "Platforms to install:" list of checkboxes into the Preferences. I.e.,
this is an installer-wide setting (of course, if a platform isn't available,
it won't be installed).
So, if you're managing a server, you'd install platform variants for all
kinds of computers that access your server, while if your computer is a
client, you'd keep the default which just installs the variant you actually
need
Yes, this option should be set in the Installer Preferences, not by package.
Post by Frederico Muñoz
Do you think you can "merge" some of your ideas with this kind of interface?
See above. Is that better?
Yes, you've sorted out several things that I didn't knew were to put :). See below for my final analysis.
Post by Frederico Muñoz
Actions
* Install (and later on possibly Upgrade and Uninstall, but only one at a
time will be present)
Danger, Will Robinson! While "Upgrade" and "Uninstall" are only needed when
you already have an installation, "Install" should stay available, for the
cases where you want to install on several partitions or so (if Installer.app
supports that, that is).
Even if it doesn't, it should. You are right, it should be there. This raises several problems though, since the receipt will already exist. How does OSX deal with this?
Post by Frederico Muñoz
* View Files
This is advanced, right?
Yes.
Post by Frederico Muñoz
* View Readme / Welcome
* View Licence
I tend to lump these together into one item. Keep it short, sweet, and
informative. Too many readmes contain company philosophy, "thanks to" lists
and internal details, which isn't important for an installer. Instead, we'll
want "What does this app do?", "Are there any dangers?" (I.e. systems where
it's not recommended to install), "What rights do I have?". The latter would
essentially be a short Creative-Commons-Style summary of the license (+ a
button or link for calling up the full license).
The problem is that I can't control what people put into them. The Welcome file should however contain very basic info, since it is meant to be displayed in OSX's Installer first view.
The "Dangers" might also be conditionalized, i.e. what do I care whether
it's dangerous to install Zork.app on a PDP-11 if I'm running GNUstep on a
C64.
Ehehehe.
Post by Frederico Muñoz
* Set Installation Preferences (this contains at a basic level the
Location, Languages and Platforms (these later 2 are not implemented but
I'm aiming at them). More "advanced" could be stuff like "Abort on
overwrite", "Preserve permissions", etc).
Again, in most cases those would be app-wide Preferences, I guess. With
well-written installer packages, this should "just work". Depending on usage
patterns, it may be worth considering the introduction of different "classes"
of programs, though. In that case, "Preference Sets" could be saved by
Admins, to decide how to install a package, and then selected. But I wouldn't
worry about such a feature too much yet.
Yes, it should be like the platform selection and language selection, set in Installer preferences and used for all packages.
I hope this helps some.
Yes it does, again, thanks a lot.

The points were I don't agree in the begining of the mail are not to be taken as a dismissal of your proposals. I can change several things in the UI, indeed that's why I sent the original mail.

My only standing points are that the navigation/interaction should make use of standard controls and usage patterns, it should be possible to install the package without navigating trough several screens... and that's pretty much it. All the other things, including the progress, I can agree with and make sense to me.

I don't know if there is some way to do this, but I think that it should be possible. There must be a way to integrate your design taking into consideration this two points... what do you think?

It could be possible to make some adjustments and even making it preference: even is some steps are necessary there should be a view that contains the essential info, much like you made in your mockup. Then the user could choose if he begins at that view or if he begins in a previous one, thus making it more wizard-like but still retaining the single step install... I like your idea of making the order appear as prefered, but not demanded. It makes it possible to retain the simplicity of one step install with the guidance of sequential install.

So, with some tweaks on the "navigation/selection" part and on the buttons maybe something similar with your proposal would be ideal.

Best regards,

fsmunoz
--
Frederico Muñoz
M. Uli Kusterer
2005-04-08 02:36:05 UTC
Permalink
Post by Frederico Muñoz
This is why I stoped using the tabs. But popup
switching is less intrusive and makes the
initial view stand out in relation to the
others. At least it looks that way to me when
looking at it.
A popup, for the purposes of this discussion,
doesn't have any advantage over a tab view. It
also hides the other pages away, and thus
displays only a fraction of available info. To
say it in an exaggerated way: Half your users
will simply overlook the popup (while a tab
control is at least obvious enough it can't be
missed), while the other half will have to try
each menu item and look at each page to find out
they really don't need it. Okay, maybe if you put
a label on the popup you could improve that a
little, but I don't think either of these
navigation schemes are a good fit in this case.
Post by Frederico Muñoz
In the case of the Readme I still think that it
could be an option, mainly because the different
"documents" being presented are indeed of equal
importance, so a tab view would probably work.
But I can also see it working without them, so I
don't have a rigid opinion on this part,
whatever works better.
The problem with these documents is that
actually, most of the information in them is
probably useless to people using the installer. A
regular "Readme" contains contact information,
web site URLs, and lots of other info you don't
care about in an installer. If you want people to
create good installers, you may probably want to
encourage them to write sensible text specific to
the installer. Otherwise, half of the Readmes
will be overly verbose and misleading.
Post by Frederico Muñoz
Post by Frederico Muñoz
The cannot "open" a package, for that they can use GWorkspace. The extra
information they have is described above.
Well, if they can open a package in GWorkspace, there should probably also
be an "open" menu item in Installer.app, just in case someone opens
Installer.app itself in GWorkspace.
Yes, that's possible, I'll just say to NSWorkspace to open the app bundle.
Not sure I understand this. My point is simply
that pretty much all apps let you double-click
them and then choose "Open" to pick a document
and open it. Installer shouldn't be an exception
here. An installer package is just another kind
of document. Just base your app on NSDocument and
let AppKit take care of all of this for you.
Post by Frederico Muñoz
I think that it makes the initial presentation
simple and easy to understand while
making available other ways of viewing the
installation process, but without imposing
them. This allows the user to "grow", as it
were, in his usage of the application, *if*
he wishes to do so.
There are better ways to do this. E.g. MacOS
supports "disclosure triangles" that are at the
bottom of the window, and enlarge the window when
"opened" to show more options. This works very
well, and expands on an existing concept people
also find in NSOutlineView. Using a tab view or a
switcher popup actually raises expectations in
your users that the app is more complex than it
seems.
Post by Frederico Muñoz
It also follows a general way of presenting things relating to a
single thing, namely in the inspectors, etc.
I'm sorry, I don't understand this sentence. Can
you provide some more context? What "single
thing"? I'm lost.
Post by Frederico Muñoz
-> The progress bar is only shown once the
installation has been started. As
such, it should probably be a modal window that is shown after the user has
clicked "Install". Adding a third page for "Progress" to the tab view would
be useless. The user can't interact with it, and it'll always display "0%
complete". There's no use in seeing it unless it's needed.
(...) But the progress is indeed at 0%, and if the
user choses a small-footprint option named
"Progress" before installing the application
that is what he should expect to see.
Why? What does the user care where this progress
indicator will be, if all it is is dead weight?
Try to see this as a user: Would you open an
application, and want to see a progress bar (as a
self-sufficient task)? One that you *know* will
be at 0%? Where in your feature list does it say
"The user needs to be able to look at an inactive
progress bar"?

It simply says the user should be able to
install stuff. If you follow Human Interface
Guidelines, you will notice that the user wants
to know when the computer is busy and won't
accept input, and how long it will take until the
computer is finished executing the user's
command. That is the purpose of a progress bar
and of your detailed log. To inform the user
*while* something is happening, *that* it is
happening, and *what* is happening.

While the installation is in progress, the user
shouldn't be able to work in the installer (or at
least not with that particular window). A modal
panel seems the natural choice.
Post by Frederico Muñoz
The main thing here is that I find that the popup
switch is non-intrusive enough and that it makes
the default initial view the one that
gets the user attention (tabs, on the other
hand, since they display the topics at the
top, gives an idea of equal importance.
I'm not sold we even need the pages you have
right now. As you may have noticed, the pages my
mockup has are completely different. What you had
as pages, I have in separate windows that you can
call up from the "Window" menu.
Post by Frederico Muñoz
Another thing to consider is the pervasiveness
of the popup switch in GNUstep to deal
with this kind of situations. The user, after
seing the way things work, should feel more
comfortable with it since it is present in other
apps. That's one of the strenghts NeXT
had IMHO, the design choices were consistent.
There's always something to be said for
consistency, and there's no need to reinvent the
wheel if there already is a control for this
function. However, programmers tend to use views
that have the same implementation (and thus are
superficially similar in functionality) but
different semantics as if they were exchangeable.
A (by now) obvious but still common example of
this mistake is the use of checkboxes for
mutually-exclusive choices, or the use of
radiobuttons for non-exclusive choices.

Similarly, a page-switcher popup or tab view
doesn't have the right semantics for my initial
idea of a sequential installation process.
However, you said you didn't want that
sequentiality, so let's not dwell on that. We
don't need several pages here, because pages
aren't supposed to be different views on the same
content, but rather pages are supposed to differ
in content.

To switch views, there are much better
approaches, like disclosure triangles (or buttons
that perform the same function), additional
windows, or a set of mutually exclusive
push-and-lock buttons.
Post by Frederico Muñoz
No, you are understanding it correctly, the log
just says what it the program is doing
(Writing file XXX to YYY...). What you prupose
is certainly a way to do it (I think it is the
way GNOME does it IIRC).
I actually had a NSPanel poping up to show the
progress bar, but I removed it. I found
it awkward to use, but this can be related to my
general dislike for popup windows that
could be avoided. In this specific situation
But this specific pont is something that has
been bothering me. As I said, I initially went
for
the NSPanel version. Maybe I didn't like my
particular way of doing it, but what you propose
makes sense and is maybe the most logical way to put it.
You could also disable the window contents and
put a progress bar at the bottom, but I
personally don't like that because it is easy for
novice users to miss that the progress bar became
active (newbies tend to have a sort of
tunnel-view of the screen, and often miss things
happening at a distance from where they currently
are reading or where the mouse is, while with
more practice users tend to develop a better
peripheral view of the screen).

If this was MacOS X, I'd have two other options:

1) Do an animated resize of the window to make it
smaller and replace its contents with the
contents for the progress panel. I don't know
whether GNUstep can support animated resizes,
though... But this would both get rid of the
installer window contents (which the user
shouldn't use while it's being installed anyway)
and make it obvious it is in progress now. And
animated changes are harder to miss, because they
happen over a longer stretch of time. It would
also replace the modal panel, and thus allow the
user to run other installers simultaneously.

2) Use a progress sheet instead of the modal
panel. Sheets are window-modal, not
application-modal, and thus let you open and
launch another installer while this one is busy,
just like #1.

OTOH, it is hard to write the installer that can
run two installations simultaneously, so it would
probably be better to just go with the modal
panel and forget all of this again.
Post by Frederico Muñoz
Actually this is exactly why I did it: the
buttons (with Install at the head) get more
attention than the popup switcjer that changes views, This is intended.
Sadly, the buttons are for advanced options that
will confuse newbies. As such, their spot at the
top of the window is way too prominent. The user
will wonder whether they need to do anything with
these when the installer opens.

The top of a window is the first place a user
will look at when a new window opens. That's why
mode indicators and toolbars with commonly used
commands go there. The bottom of the window is
the place where the user's eyes end up when she
has finished looking at a window's contents,
that's why the exit buttons ("OK", "Cancel") go
there. Both of these places aren't really good
spots for advanced options. I'd just put those in
a menu (though I'm not married to using "Window"
for that).
Post by Frederico Muñoz
It is so simple that it might be used that way,
but it could also be used with different
options. However simple the package is the
interface presented must be the same. I'm
strictly speaking of Installer here, not of
alternative methods of installation that can use
Installer or it's bundles.
I don't think you're understanding me. The point
I'm making is that, since it would only be good
UI to have no UI on very simple installers, we
shouldn't optimize our installer UI for this
case. The Installer UI that is displayed by
default on opening a package should manage the
cases of complex installations only, however it
will only cover the common cases. Any odd cases
or hacker-ish uses of the installer by
knowledgeable people will require the use of the
Content Browser.
Post by Frederico Muñoz
Yes, see above. We talked about it, I think it
is great, but is something that I will only work
upon after I have the "standard" Installer more
or less ready to be used. So in this view you
shouldn't expect special treatment for simple
packages. You can even assume that the package
contains an app that shouldn't need to be
packaged but it was nonetheless. The interface
we are talking about should be the same for
simple and complex packages, but that doesn't
mean we should assume that the simple ones won't
need any UI interaction.
I guess we have different levels of granularity here. I see:

SIMPLE
drop-install, or installer that doesn't require
options and is run at first launch. We don't need
a UI for this, except for maybe confirming to the
user that this stuff is to be installed at all --
the majority of packages

COMPLEX
Complex package structure for which we provide a
simplified UI that covers common cases, but which
may not allow all variations that advanced users
may want.

Note that the only thing I know that needs a GUI
(apart from deciding what to install and where)
is configuration. I.e. the stuff that goes in
"Preferences". And that needn't be done in the
Installer at all. The user will have to learn
where to change an app's preferences anyway, so
installation should simply put all needed
components in the right places and get the app
into a state which lets the user open it and open
its Preferences window. Saves us a lot of code
duplication, and the user only has to learn one
settings interface.

I hate it when I install an app, configure it
using its "Installation Wizard" and then later
come back and have to dig through its menus and
panels to find out where to find the first
setting in the installer in there. And I don't
want to re-run the installation wizard for fear
it will reset any of my settings.

You may have noticed that nobody ever went and
seriously complained about how simple Apple's
installer is. The only reasons why people use
different installers are when they want special
features like web download, deployment on MacOS 9
or support for some special compression scheme.
If you design your installer package carefully,
you will hardly need more than Apple's installer
provides.
Post by Frederico Muñoz
See above. Even with the "automatic" methods you
mentioned a use could actually prefer to use the
installer Application for some reason (i.e. not
use Installer to do the automatic installation
but use the full app).
For what reason? And I don't understand that
sentence in the brackets... can you re-phrase?
Post by Frederico Muñoz
You do raise a valid objection, I haven't
thought about meta packages (custom install
comes into play here) and the way to install
those is indeed hard to do with my current UI.
Well, Meta-Packages are probably the only
complex case an installer has to cope with. Most
other cases simply consist of copying files in
the right places and running some scripts. Is
there anything else an installer has to do that
needs user interaction at the level we are
talking right now?
Post by Frederico Muñoz
I guess this is where I provide a better description of my "bullet list"
view. The important thing about it is that it can do *everything* a tab view
can do. You can click one of the bullet-items and it will show that page (if
it isn't disabled). It could even give pages you already viewed a "visited"
color, like we have it for web links. The whole point of it is to encourage
just going through all the pages in sequence until you're finished, but to
get out of the way of power users who may know that the defaults are what
they need on two pages and let them advance directly to the third.
Wouldn't this also work the other way around?
Power users would be more likely to what to
change the defaults, while regular users would
justt go nex, nex, next, next, install
?
Isn't that what I wrote? Let me re-phrase and
annotate: "The whole point of it [the
bullet-list-view] is to encourage just going
through all the pages in sequence until you're
finished [if you are a regular user], *and* to
get out of the way *for power users*."
Post by Frederico Muñoz
One thing I think is important is that the UI
should use the controls and presentation
commonly used in other apps. It must not
introduce a special way to present things.
Installer is by definition something that should
take advantage of the already known way that
things work in other apps. This is actually my
largest concern, as you will see below.
As I said above, there are moments where it is
necessary to invent your own controls. Usually,
it's a good idea to borrow metaphors from the
real world in those cases, though. Bullet lists
are one of those. But maybe it would be a less
fancy version where you just have a bullet
character and a regular, NSTableView-style
selection.

If you want an example from GUI history of a
similar case: MacOS versions prior to 8.0 didn't
have sliders. Some programmers just used
scrollers, which, while it used an existing
control, was totally wrong. Scrollers are
"miniature views of the whole document and my
view into it", sort of a stylized version of
Photoshop's "Navigator" palette. OTOH Sliders are
tools for specifying a numeric value from a range.
Post by Frederico Muñoz
I distinctly remember the fact that no option
should be accessible only trough controls in
certain contexts.
"in certain contexts" is the important point.
Post by Frederico Muñoz
This is something that must indeed be clarified
since it is of interest not only for Installer
but all the apps.
Anybody taking notes for the GNUstep Human
Interface Guidelines? ;-) Anyway, the general
rule is simply that the user should be able to
see all commands available to them at a time.
This works for buttons in windows and menu items,
but shortcuts (like "shortcut menus" as Windows
calls them) and toolbar items don't count because
they are not obvious (or may be removed by the
user) and thus aren't always visible. That's the
main rationale here. To ensure visibility, they
should also be available from menus or permanent
buttons, or panels that can be called up in
response to those.

Does that help put the guideline in context?
Post by Frederico Muñoz
So, the only case our GUI still needs to
cover is the case where you *need*
to specify some options. In that case, we shouldn't have need for more
options than the "Installation Type" pane in my example.
Again, I really want a generic solution that works equaly well in both cases.
I hope my descriptions above clarified why this
is really unnecessary. It's okay to use the
non-GUI parts of the installer for these cases,
but if all the installation involves is the
installation process itself, why present a GUI at
all?

If there are several choices, provide a sensible
default, and keep the really complicated stuff
hidden.
Post by Frederico Muñoz
I never done this, and I don't know if it is
something that is used in other apps. I prefer
using something already known to the user if
possible. Everything in a window seems weird to
me, I prefer your mockup.
It would pretty much look like any options
panel. I don't think this would really be
anything new. The disclosure of additional info
may be kinda new to GNUstep, but wouldn't be that
hard to get used to, and may actually make its
way into other apps.
Post by Frederico Muñoz
Correct me if I'm omitting something, but the minimal installation info
Readme/License (short form, and a verbose version)
-----
Destination (sensible default for current system, button to change)
-----
Installation Type: (short blurb on default install, "Advanced" button)
-----
[Install]
The minimal info is what you see in the shots I
sent in the original mail, i.e. those you
mentioned plus Sizes and Platforms. Description
is also there, but the info is taken from the
Readme.
So, did I miss anything? I've obviously included
everything I understood in your screen shots,
though I may have changed some groupings. *I*
wouldn't be able to tell whether *I*'ve missed
something. That's why I'm asking you :-p
Post by Frederico Muñoz
The Readme would be in a text field. The short field would be *forced* to
non-scrolling, and there would be strict guidelines on what kind of
information should go in there. It may have a button to show a more verbose
version for those that want it in a scrolling field...
Important point: I must assume that no specific
information particular to my Installer is given.
I must try to work with the information defined
in the spec.
What spec?

That said, remember that most of these packages
will be built for GNUstep, so I think you *can*
actually expect them to include info for your
installer that you need. If MacOS X porters have
a good Readme or Welcome file, they could
probably just use that for the short readme (or
an excerpt from that), but should we really throw
over board usability advances just to stay
compatible with OS X?
Post by Frederico Muñoz
Yes, this for metapackages, normal packages can't be split.
Then I guess normal packages would fall under
"Simple" installation anyway. I mean, if you
can't split them, the only thing you can do is
install or uninstall. No need for a GUI there.
Post by Frederico Muñoz
Danger, Will Robinson! While "Upgrade" and
"Uninstall" are only needed when
you already have an installation, "Install" should stay available, for the
cases where you want to install on several
partitions or so (if Installer.app
supports that, that is).
Even if it doesn't, it should. You are right, it
should be there. This raises several problems
though, since the receipt will already exist.
How does OSX deal with this?
Are you saying we should allow to install
something twice? I'd say this is an error for any
users but advanced ones.
Post by Frederico Muñoz
I tend to lump these together into one item. Keep it short, sweet, and
informative. Too many readmes contain company philosophy, "thanks to" lists
and internal details, which isn't important for an installer. Instead, we'll
want "What does this app do?", "Are there any dangers?" (I.e. systems where
it's not recommended to install), "What rights do I have?". The latter would
essentially be a short Creative-Commons-Style summary of the license (+ a
button or link for calling up the full license).
The problem is that I can't control what people
put into them. The Welcome file should however
contain very basic info, since it is meant to be
displayed in OSX's Installer first view.
Well, this is open source. Everybody eventually
does what they want. However, you can write down
best practices and the motivation behind those
and hope that at least GNUstep developers will
heed them. It would be kind of funny if the
packages ported from MacOS X were the ones that
had bad usability. iTunes for Windows wouldn't be
that alone anymore :-)
Post by Frederico Muñoz
My only standing points are that the
navigation/interaction should make use of
standard controls and usage patterns, it should
be possible to install the package without
navigating trough several screens... and that's
pretty much it. All the other things, including
the progress, I can agree with and make sense to
me.
Well, then I guess the
single-page-everything-together approach might be
the best way to take. I may make another mock-up
to illustrate this better, but now I really gotta
get some sleep.
--
Cheers,
M. Uli Kusterer
------------------------------------------------------------
"The Witnesses of TeachText are everywhere..."
http://www.zathras.de
Frederico Muñoz
2005-04-08 10:37:48 UTC
Permalink
Post by Frederico Muñoz
This is why I stoped using the tabs. But popup switching is less intrusive
and makes the
initial view stand out in relation to the others. At least it looks that
way to me when looking at it.
A popup, for the purposes of this discussion, doesn't have any advantage
over a tab view. It also hides the other pages away, and thus displays only a
fraction of available info. To say it in an exaggerated way: Half your users
will simply overlook the popup (while a tab control is at least obvious
enough it can't be missed), while the other half will have to try each menu
item and look at each page to find out they really don't need it. Okay, maybe
if you put a label on the popup you could improve that a little, but I don't
think either of these navigation schemes are a good fit in this case.
I was hoping that the half that overlooked it was the half that didn't actually have
any need to see the extra info, while the half that went trough it was the half that
might have some use for it :) Probably wishful thinking.
Post by Frederico Muñoz
In the case of the Readme I still think that it could be an option, mainly
because the different "documents" being presented are indeed of equal
importance, so a tab view would probably work. But I can also see it
working without them, so I don't have a rigid opinion on this part,
whatever works better.
The problem with these documents is that actually, most of the information
in them is probably useless to people using the installer. A regular "Readme"
contains contact information, web site URLs, and lots of other info you don't
care about in an installer. If you want people to create good installers, you
may probably want to encourage them to write sensible text specific to the
installer. Otherwise, half of the Readmes will be overly verbose and
misleading.
Yes, the Readmes I've seen are indeed verbose and have a disparity in content. See
below for more on this.
Post by Frederico Muñoz
Post by Frederico Muñoz
The cannot "open" a package, for that they can use GWorkspace. The extra
information they have is described above.
Well, if they can open a package in GWorkspace, there should probably also
be an "open" menu item in Installer.app, just in case someone opens
Installer.app itself in GWorkspace.
Yes, that's possible, I'll just say to NSWorkspace to open the app bundle.
Not sure I understand this. My point is simply that pretty much all apps let
you double-click them and then choose "Open" to pick a document and open it.
Installer shouldn't be an exception here. An installer package is just
another kind of document. Just base your app on NSDocument and let AppKit
take care of all of this for you.
Ok, I see we are talking about different things. When they doublt click on a package in
Workspace they don't see the contents, sonce the package is a bundle. It appears as
a file, and Installer is called. I assumed you were refering to way to see the contents of
the bundle within Installer, and replied that if they really want to do that they can use the
"Open as Directory" option in e.g. GWorkspace. So, by default, the package is a black box
to the user, it doesn't have any content in view and behaves a a single file (as other
bundles).
Post by Frederico Muñoz
I think that it makes the initial presentation simple and easy to
understand while
making available other ways of viewing the installation process, but
without imposing
them. This allows the user to "grow", as it were, in his usage of the
application, *if*
he wishes to do so.
There are better ways to do this. E.g. MacOS supports "disclosure triangles"
that are at the bottom of the window, and enlarge the window when "opened" to
show more options. This works very well, and expands on an existing concept
people also find in NSOutlineView. Using a tab view or a switcher popup
actually raises expectations in your users that the app is more complex than
it seems.
Well, is there is some clever way to to this in GNUstep that is consistent with the overall
UI I'm interested.
Post by Frederico Muñoz
It also follows a general way of presenting things relating to a
single thing, namely in the inspectors, etc.
I'm sorry, I don't understand this sentence. Can you provide some more
context? What "single thing"? I'm lost.
Single thig == single selection of e.g. a file. THe way the GW Inspector works, for example, the
Inspector has 4 views, all showing different levels of information about the same thing.
Post by Frederico Muñoz
-> The progress bar is only shown once the installation has been
started. As
such, it should probably be a modal window that is shown after the user has
clicked "Install". Adding a third page for "Progress" to the tab view would
be useless. The user can't interact with it, and it'll always display "0%
complete". There's no use in seeing it unless it's needed.
(...) But the progress is indeed at 0%, and if the
user choses a small-footprint option named "Progress" before installing the
application
that is what he should expect to see.
Why? What does the user care where this progress indicator will be, if all
it is is dead weight? Try to see this as a user: Would you open an
application, and want to see a progress bar (as a self-sufficient task)? One
that you *know* will be at 0%? Where in your feature list does it say "The
user needs to be able to look at an inactive progress bar"?
I've said that I'm open to this change :)
It simply says the user should be able to install stuff. If you follow Human
Interface Guidelines, you will notice that the user wants to know when the
computer is busy and won't accept input, and how long it will take until the
computer is finished executing the user's command. That is the purpose of a
progress bar and of your detailed log. To inform the user *while* something
is happening, *that* it is happening, and *what* is happening.
While the installation is in progress, the user shouldn't be able to work in
the installer (or at least not with that particular window). A modal panel
seems the natural choice.
Right, that was what I had.
Post by Frederico Muñoz
The main thing here is that I find that the popup
switch is non-intrusive enough and that it makes the default initial view
the one that
gets the user attention (tabs, on the other hand, since they display the
topics at the
top, gives an idea of equal importance.
I'm not sold we even need the pages you have right now. As you may have
noticed, the pages my mockup has are completely different. What you had as
pages, I have in separate windows that you can call up from the "Window"
menu.
The "pages" I have right now are subject to change... I guess that I have also adapted
what I show to make it work in the current UI, which is a mistake. You don't have to work
with the pages I have now, only with the information they contain, the way this information
is presented is what we're discussing.
Post by Frederico Muñoz
Another thing to consider is the pervasiveness of the popup switch in
GNUstep to deal
with this kind of situations. The user, after seing the way things work,
should feel more
comfortable with it since it is present in other apps. That's one of the
strenghts NeXT
had IMHO, the design choices were consistent.
There's always something to be said for consistency, and there's no need to
reinvent the wheel if there already is a control for this function. However,
programmers tend to use views that have the same implementation (and thus are
superficially similar in functionality) but different semantics as if they
were exchangeable. A (by now) obvious but still common example of this
mistake is the use of checkboxes for mutually-exclusive choices, or the use
of radiobuttons for non-exclusive choices.
Similarly, a page-switcher popup or tab view doesn't have the right
semantics for my initial idea of a sequential installation process. However,
you said you didn't want that sequentiality, so let's not dwell on that. We
don't need several pages here, because pages aren't supposed to be different
views on the same content, but rather pages are supposed to differ in
content.
Wait a second, I haven't ruled out the sequential process... I personally would like a way to make it single-step install, but that doesn't mean it can't also behave sequentially. For example, if in a sequence the final step shows the required minimum information I can perfectly see it being used both sequentially and non-sequentially, depending on the user needs.
To switch views, there are much better approaches, like disclosure triangles
(or buttons that perform the same function), additional windows, or a set of
mutually exclusive push-and-lock buttons.
Post by Frederico Muñoz
No, you are understanding it correctly, the log just says what it the
program is doing
(Writing file XXX to YYY...). What you prupose is certainly a way to do it
(I think it is the
way GNOME does it IIRC).
I actually had a NSPanel poping up to show the progress bar, but I removed
it. I found
it awkward to use, but this can be related to my general dislike for popup
windows that
could be avoided. In this specific situation
But this specific pont is something that has been bothering me. As I said,
I initially went for
the NSPanel version. Maybe I didn't like my particular way of doing it, but
what you propose
makes sense and is maybe the most logical way to put it.
You could also disable the window contents and put a progress bar at the
bottom, but I personally don't like that because it is easy for novice users
to miss that the progress bar became active (newbies tend to have a sort of
tunnel-view of the screen, and often miss things happening at a distance from
where they currently are reading or where the mouse is, while with more
practice users tend to develop a better peripheral view of the screen).
Yes, I also thought about his, but I didn't liked the idea of having it there, it seems
that it gets a bit lost.
1) Do an animated resize of the window to make it smaller and replace its
contents with the contents for the progress panel. I don't know whether
GNUstep can support animated resizes, though... But this would both get rid
of the installer window contents (which the user shouldn't use while it's
being installed anyway) and make it obvious it is in progress now. And
animated changes are harder to miss, because they happen over a longer
stretch of time. It would also replace the modal panel, and thus allow the
user to run other installers simultaneously.
Don't know if it is possible, I think Banlu did some of those effects in his login app.
This isn't something easy though. Still, can be an option.
2) Use a progress sheet instead of the modal panel. Sheets are window-modal,
not application-modal, and thus let you open and launch another installer
while this one is busy, just like #1.
OTOH, it is hard to write the installer that can run two installations
simultaneously, so it would probably be better to just go with the modal
panel and forget all of this again.
Yes, I'm with you here. I'm happy with this solution.
Post by Frederico Muñoz
Actually this is exactly why I did it: the buttons (with Install at the
head) get more
attention than the popup switcjer that changes views, This is intended.
Sadly, the buttons are for advanced options that will confuse newbies. As
such, their spot at the top of the window is way too prominent. The user will
wonder whether they need to do anything with these when the installer opens.
The top of a window is the first place a user will look at when a new window
opens. That's why mode indicators and toolbars with commonly used commands go
there. The bottom of the window is the place where the user's eyes end up
when she has finished looking at a window's contents, that's why the exit
buttons ("OK", "Cancel") go there. Both of these places aren't really good
spots for advanced options. I'd just put those in a menu (though I'm not
married to using "Window" for that).
Ok, I see.
Post by Frederico Muñoz
It is so simple that it might be used that way, but it could also be used
with different options. However simple the package is the interface
presented must be the same. I'm strictly speaking of Installer here, not of
alternative methods of installation that can use Installer or it's bundles.
I don't think you're understanding me. The point I'm making is that, since
it would only be good UI to have no UI on very simple installers, we
shouldn't optimize our installer UI for this case. The Installer UI that is
displayed by default on opening a package should manage the cases of complex
installations only, however it will only cover the common cases. Any odd
cases or hacker-ish uses of the installer by knowledgeable people will
require the use of the Content Browser.
I'm understanding you :)
Post by Frederico Muñoz
Yes, see above. We talked about it, I think it is great, but is something
that I will only work upon after I have the "standard" Installer more or
less ready to be used. So in this view you shouldn't expect special
treatment for simple packages. You can even assume that the package
contains an app that shouldn't need to be packaged but it was nonetheless.
The interface we are talking about should be the same for simple and
complex packages, but that doesn't mean we should assume that the simple
ones won't need any UI interaction.
SIMPLE
drop-install, or installer that doesn't require options and is run at first
launch. We don't need a UI for this, except for maybe confirming to the user
that this stuff is to be installed at all -- the majority of packages
Here is the thing, you are making an assumption that such a mechanism is available and
is already a default. THere is a different between something being tought a good idea and
assuming it is something that must be present. In this initial stage my Installer will behave
like a regular Installer, not more, not less. The oce that goes into that will of course be
instrumental to make that mechanism work later. But the basic fact is that it will first allow for
regular package installation and only after that can other mechanism ber used on top of it.
COMPLEX
Complex package structure for which we provide a simplified UI that covers
common cases, but which may not allow all variations that advanced users may
want.
Note that the only thing I know that needs a GUI (apart from deciding what to
install and where) is configuration. I.e. the stuff that goes in
"Preferences". And that needn't be done in the Installer at all. The user
will have to learn where to change an app's preferences anyway, so
installation should simply put all needed components in the right places and
get the app into a state which lets the user open it and open its Preferences
window. Saves us a lot of code duplication, and the user only has to learn
one settings interface.
Actually the information about the package is also important. If I send someone
FooBar.pkg and just say "very cool", I want to see what it is and what it does. The normal
required Information fields are very useful to know what the program intends to do.

The changing of the Preferences I was thinking of was in line with the rest of that apps...
you go to the menu, chose preferences, and it's done. This can also be set using some
kind of Preferences.app module is needed.
I hate it when I install an app, configure it using its "Installation Wizard"
and then later come back and have to dig through its menus and panels to find
out where to find the first setting in the installer in there. And I don't
want to re-run the installation wizard for fear it will reset any of my
settings.
You may have noticed that nobody ever went and seriously complained about how
simple Apple's installer is. The only reasons why people use different
installers are when they want special features like web download, deployment
on MacOS 9 or support for some special compression scheme. If you design your
installer package carefully, you will hardly need more than Apple's installer
provides.
Yes, I'm not even aiming at providing more, at least for now.
Post by Frederico Muñoz
See above. Even with the "automatic" methods you mentioned a use could
actually prefer to use the installer Application for some reason (i.e. not
use Installer to do the automatic installation but use the full app).
For what reason? And I don't understand that sentence in the brackets... can
you re-phrase?
The user can prefer, for some reason, to, even if the automatic install that you talk
about is available, prefer the regular Installer interface. It should be avaialble ans work
normally with every package, regardless of complexity. This is especially important since
in the begining there won't be metapackage support, so only single packages can be
installed (in the begining being the time Installer is being tested to deal with the simple
packages, since it's better to have that working robustly first to tackle metapackages when
the basics are set).
Post by Frederico Muñoz
You do raise a valid objection, I haven't thought about meta packages
(custom install comes into play here) and the way to install those is
indeed hard to do with my current UI.
Well, Meta-Packages are probably the only complex case an installer has to
cope with. Most other cases simply consist of copying files in the right
places and running some scripts. Is there anything else an installer has to
do that needs user interaction at the level we are talking right now?
Seing the information and deciding were to put it comes to mind. Again, the fact that there
could be automatic methods to do this doesn't mean that the app shouldn't support it.
Post by Frederico Muñoz
I guess this is where I provide a better description of my "bullet
list"
view. The important thing about it is that it can do *everything* a tab view
can do. You can click one of the bullet-items and it will show that page (if
it isn't disabled). It could even give pages you already viewed a "visited"
color, like we have it for web links. The whole point of it is to encourage
just going through all the pages in sequence until you're finished, but
to
get out of the way of power users who may know that the defaults are what
they need on two pages and let them advance directly to the third.
Wouldn't this also work the other way around? Power users would be more
likely to what to change the defaults, while regular users would justt go
nex, nex, next, next, install
?
Isn't that what I wrote? Let me re-phrase and annotate: "The whole point of
it [the bullet-list-view] is to encourage just going through all the pages in
sequence until you're finished [if you are a regular user], *and* to get out
of the way *for power users*."
And I wrote the opposite: power users would probably make more use of the extra steps
than the regular user that doesn't need to see anything else since he will press "Next"
every time. But this is a non-issue in a streamlined UI, I don't think you mockups imposes too
much on the user. I just wanted a refined way to allow for, within a sequence orientated Installer,
easy onse step install with the basics if needed.
Post by Frederico Muñoz
One thing I think is important is that the UI should use the controls and
presentation commonly used in other apps. It must not introduce a special
way to present things. Installer is by definition something that should
take advantage of the already known way that things work in other apps.
This is actually my largest concern, as you will see below.
As I said above, there are moments where it is necessary to invent your own
controls. Usually, it's a good idea to borrow metaphors from the real world
in those cases, though. Bullet lists are one of those. But maybe it would be
a less fancy version where you just have a bullet character and a regular,
NSTableView-style selection.
If you want an example from GUI history of a similar case: MacOS versions
prior to 8.0 didn't have sliders. Some programmers just used scrollers,
which, while it used an existing control, was totally wrong. Scrollers are
"miniature views of the whole document and my view into it", sort of a
stylized version of Photoshop's "Navigator" palette. OTOH Sliders are tools
for specifying a numeric value from a range.
Post by Frederico Muñoz
I distinctly remember the fact that no option should be accessible only
trough controls in certain contexts.
"in certain contexts" is the important point.
Post by Frederico Muñoz
This is something that must indeed be clarified since it is of interest not
only for Installer but all the apps.
Anybody taking notes for the GNUstep Human Interface Guidelines? ;-) Anyway,
the general rule is simply that the user should be able to see all commands
available to them at a time. This works for buttons in windows and menu
items, but shortcuts (like "shortcut menus" as Windows calls them) and
toolbar items don't count because they are not obvious (or may be removed by
the user) and thus aren't always visible. That's the main rationale here. To
ensure visibility, they should also be available from menus or permanent
buttons, or panels that can be called up in response to those.
Does that help put the guideline in context?
Oh, I understand it. I'll do whatever is deemed as a guideline.
Post by Frederico Muñoz
So, the only case our GUI still needs to cover is the case where you
*need*
to specify some options. In that case, we shouldn't have need for more
options than the "Installation Type" pane in my example.
Again, I really want a generic solution that works equaly well in both cases.
I hope my descriptions above clarified why this is really unnecessary. It's
okay to use the non-GUI parts of the installer for these cases, but if all
the installation involves is the installation process itself, why present a
GUI at all?
For the reasons I said above. If you find them debatable take this as the only dogma
that I proclame :) Anyway this is being blown ou of proportion, your mockup allows for
simple packages to be installed, that isn't the issue.
If there are several choices, provide a sensible default, and keep the
really complicated stuff hidden.
Post by Frederico Muñoz
I never done this, and I don't know if it is something that is used in
other apps. I prefer using something already known to the user if possible.
Everything in a window seems weird to me, I prefer your mockup.
It would pretty much look like any options panel. I don't think this would
really be anything new. The disclosure of additional info may be kinda new to
GNUstep, but wouldn't be that hard to get used to, and may actually make its
way into other apps.
Ok, I was refering exactly to the factr that it isn't used in GNUstep, and as such I suspect
it lacks appropriate ways to do it. I'm open to suggestions on the best way to use that feature.
Post by Frederico Muñoz
Correct me if I'm omitting something, but the minimal installation info
Readme/License (short form, and a verbose version)
-----
Destination (sensible default for current system, button to change)
-----
Installation Type: (short blurb on default install, "Advanced" button)
-----
[Install]
The minimal info is what you see in the shots I sent in the original mail,
i.e. those you mentioned plus Sizes and Platforms. Description is also
there, but the info is taken from the Readme.
So, did I miss anything? I've obviously included everything I understood in
your screen shots, though I may have changed some groupings. *I* wouldn't be
able to tell whether *I*'ve missed something. That's why I'm asking you :-p
You asked and I replied... "... i.e. those you mentioned plus Sizes and Platforms. Description
is also there, but the info is taken from the Readme".
Post by Frederico Muñoz
The Readme would be in a text field. The short field would be *forced* to
non-scrolling, and there would be strict guidelines on what kind of
information should go in there. It may have a button to show a more verbose
version for those that want it in a scrolling field...
Important point: I must assume that no specific information particular to
my Installer is given. I must try to work with the information defined in
the spec.
What spec?
The best practices documents on Apple's site about what should go into each file; a file
named ReadMe shouldn't probably contain a jpg, and I can take for granted that the
packager will use the file in a sensible way, If he doesn't, it isn't my fault.
That said, remember that most of these packages will be built for GNUstep,
so I think you *can* actually expect them to include info for your installer
that you need. If MacOS X porters have a good Readme or Welcome file, they
could probably just use that for the short readme (or an excerpt from that),
but should we really throw over board usability advances just to stay
compatible with OS X?
We shouldn't throw them away, but if we can get the same information using what already is
there we should. If there is something that you find really adds to the experience I will add it to
the list of keys/files that my Installer uses. So I'm not fixed on only using OSX's information, just
think that if it is there we should used it instead of making our own. If OSX ReadMes and Welcome
files aren't good enough then I agree that a new file or key should be created (probably a key
that corresponds to the Description field on old NeXT packages). Better yet, check for it, and if it
isn't there, use a OSX file. What do you think?
Post by Frederico Muñoz
Yes, this for metapackages, normal packages can't be split.
Then I guess normal packages would fall under "Simple" installation anyway.
I mean, if you can't split them, the only thing you can do is install or
uninstall. No need for a GUI there.
By now you are probably tired of me repeating the "not assume that there is automatic installation
methods" mantra :)
Post by Frederico Muñoz
Danger, Will Robinson! While "Upgrade" and "Uninstall" are only needed
when
you already have an installation, "Install" should stay available, for the
cases where you want to install on several partitions or so (if
Installer.app
supports that, that is).
Even if it doesn't, it should. You are right, it should be there. This
raises several problems though, since the receipt will already exist. How
does OSX deal with this?
Are you saying we should allow to install something twice? I'd say this is
an error for any users but advanced ones.
Well, that is how I understood your sentence of installing an application on several partitions...
what exactly did you mean?
Post by Frederico Muñoz
I tend to lump these together into one item. Keep it short, sweet, and
informative. Too many readmes contain company philosophy, "thanks to" lists
and internal details, which isn't important for an installer. Instead, we'll
want "What does this app do?", "Are there any dangers?" (I.e. systems where
it's not recommended to install), "What rights do I have?". The latter would
essentially be a short Creative-Commons-Style summary of the license (+ a
button or link for calling up the full license).
The problem is that I can't control what people put into them. The Welcome
file should however contain very basic info, since it is meant to be
displayed in OSX's Installer first view.
Well, this is open source. Everybody eventually does what they want.
However, you can write down best practices and the motivation behind those
and hope that at least GNUstep developers will heed them. It would be kind of
funny if the packages ported from MacOS X were the ones that had bad
usability. iTunes for Windows wouldn't be that alone anymore :-)
Yes, you're right, I can say what Installer expects and let the devs follow it. If they don't, well,
it's their business :)
Post by Frederico Muñoz
My only standing points are that the navigation/interaction should make
use of standard controls and usage patterns, it should be possible to
install the package without navigating trough several screens... and that's
pretty much it. All the other things, including the progress, I can agree
with and make sense to me.
Well, then I guess the single-page-everything-together approach might be the
best way to take. I may make another mock-up to illustrate this better, but
now I really gotta get some sleep.
Well, you don't need to drop your initial idea. By now I can see some beneficts on your approach.
So I can perfectly live with a more sequential process. The only thing I really want is a way to bypass
it, but your initial approach could be made to do that...

The thing here is, I really liked your mockup. It's clean, and it seemed sensible and easy to understand.
I think that based on it we can work out some middle ground between my main concerns and your
proposal.

THe only thing that I think must be thought about is the naviation part... It's a tricky thing because
quite honestly there isn't any app that I've seen on GNUstep that needs to provide this kind of
interface. I can perfectly live with a more sequential process, and your additional clarifications lead
me to think that with some balanced between the buttons on the bottom and some preferences
settings we could achieve something that can work sequentially and also allow for people to just
get it done. Indeed, that was your initial idea also.

To summarize, there is no need for a totally new mockup... I'm convinced of many things you said.
I still retain some concerns about some others, but I really think that that mockup can be made to
address these.

I thank you for your feedback up until now, and encourage you to continue :). It's really helpful.

best regards,


fsmunoz
--
Frederico Muñoz
Frederico Muñoz
2005-04-08 12:15:16 UTC
Permalink
Hi,

Sorry for replying to myself
Post by Frederico Muñoz
To summarize, there is no need for a totally new mockup... I'm convinced of
many things you said. I still retain some concerns about some others, but I
really think that that mockup can be made to address these.
Actually I've been analysing the mockup, and the one thing that I think it is missing,
and this is probably why I've been sugesting several things, is the "Information"-like
view, i.e. inside the box there should be a view that more or less summarizes the
app name, version, etc. Something like the shot I sent, something less free-format.
With this in place I think all other things can be worked upon. This and the best way
to put the "navigation" buttons on the left are I think the points I feel more strongly
about. So, in the end, most of your mockup has passed trough, as it were.

Best regards,

fsmunoz
--
Frederico Muñoz
M. Uli Kusterer
2005-04-08 15:37:50 UTC
Permalink
Okay, first: Gratuitous eye-candy:

<Loading Image...>

I've also made two slight changes to the initial mock-up at

<http://www.zathras.de/GNUstep_Nesedah_Installer.jpg>
Post by Frederico Muñoz
Ok, I see we are talking about different things.
When they doublt click on a package in Workspace
they don't see the contents, sonce the package
is a bundle. It appears as a file, and
Installer is called. I assumed you were refering
to way to see the contents of the bundle within
Installer, and replied that if they really want
to do that they can use the "Open as Directory"
option in e.g. GWorkspace. So, by default, the
package is a black box to the user, it doesn't
have any content in view and behaves a a single
file (as other
bundles).
Ah, that explains why you seemed to make no
sense :-) No, I was just talking about a regular
"Open" menu item.
Post by Frederico Muñoz
Well, is there is some clever way to to this in
GNUstep that is consistent with the overall UI
I'm interested.
Well, for now I just went with regular buttons
labeled "Other...". Click one, and that area of
the window is replaced with advanced options. If
I remember correctly how .pkg installers work,
for the "Destination:" section, this would
probably just replace the drive selector with a
"Choose Root Folder..." button. The point is that
the "non-advanced" option shouldn't let you
specify any destination that doesn't make sense.
I.e. if there was no GNUstep installation on
drive z:, it wouldn't show up in the list (or
maybe show up with a badge saying "unavailable").

When you click "Other..." for the type, it would
replace the radio buttons and checkboxes with a
more detailed list of components, sub-packages or
whatever, and let you check/uncheck them to
specify what gets installed. Note that this would
not let you turn off required components, and
would also prevent users from activating
conflicting components. (how it would do this is
a discussion for another day)

The downside of this approach is that the window
tends to become rather tall. The mockup was
originally 800x600 :-(
Post by Frederico Muñoz
Single thig == single selection of e.g. a file.
THe way the GW Inspector works, for example, the
Inspector has 4 views, all showing different
levels of information about the same thing.
The point is, it's not different *levels*, it's
different *pieces* of information. Different
*properties* of the objects. That's why switchers
work there. A view means I'm viewing the same
thing in a different way. E.g. if I have my phone
bill, there could be a list view showing each
item as a name/price pair, and a pie chart view
that shows each item as a slice of my complete
phone bill. But it'd still need to be the same
information.

That's why your switched design isn't
homogeneous. The first page shows the installer's
options, and the second and third show two
different views of the installation status. The
installer options page is the odd one out here.
Post by Frederico Muñoz
Right, that was what I had.
Well, okay, so I guess we agree the modal progress panel is back in.
Post by Frederico Muñoz
The "pages" I have right now are subject to
change... I guess that I have also adapted
what I show to make it work in the current UI,
which is a mistake. You don't have to work
with the pages I have now, only with the
information they contain, the way this
information
is presented is what we're discussing.
Well, okay, so just to clarify: "Package Info"
would be a separate window containing all the
info-y stuff, i.e. what platforms it contains,
(no need for the status, you can see that by
looking what buttons are available) what version
it is, sizes etc. and "Content Browser" would be
a separate window with a list of everything in
the package, permissions etc... [1]

Add to that the Readme/Destination/Type sections
in the main installer window and the modal
progress panel (with a button to also show the
log), and we should have all the functionality
covered, right?
Post by Frederico Muñoz
Wait a second, I haven't ruled out the
sequential process... I personally would like a
way to make it single-step install, but that
doesn't mean it can't also behave sequentially.
For example, if in a sequence the final step
shows the required minimum information I can
perfectly see it being used both sequentially
and non-sequentially, depending on the user
needs.
The sequential process isn't intended for
advanced users. Yes, advanced users may change
more of the options and thus visit all the pages,
but they will know where they have to look, which
means they'll jump around and won't likely miss
anything. OTOH beginners will simply want to step
through these options in sequence to read what
they *could* do, find out the defaults are what
they want, and finish.
Post by Frederico Muñoz
Here is the thing, you are making an assumption
that such a mechanism is available and is
already a default. THere is a different between
something being tought a good idea and assuming
it is something that must be present. In this
initial stage my Installer will behave like a
regular Installer, not more, not less. The oce
that goes into that will of course be
instrumental to make that mechanism work later.
But the basic fact is that it will first allow
for regular package installation and only after
that can other mechanism ber used on top of it.
I never said it *must* be present. The installer
will work just fine for small packages, it will
simply be as annoying as other installers are
when used for such simple cases. The good UI
we're trying to build manages the more complex
cases. Yes, it will annoy our users to have to go
through four steps when a click in "Install"
would have sufficed, but since we *eventually*
plan to use the
no-GUI-install-on-startup-approach, it's an
annoyance we can live with.

If we try to make the installer cope with such
simple cases more elegantly right now, we'll
probably have to make compromises when it comes
to more complex behavior. Or if we don't, we'll
spend lots of time implementing stuff that will
soon be replaced by the no-GUI stuff. I'd suggest
we focus our development efforts on the end
product for now, not on an intermediate stage
that will only be used for two weeks during 0.5...
Post by Frederico Muñoz
Actually the information about the package is
also important. If I send someone
FooBar.pkg and just say "very cool", I want to
see what it is and what it does. The normal
required Information fields are very useful to
know what the program intends to do.
That's what the readme/welcome text should be
doing. If it doesn't, it is insufficient. The
rest of the package information is really only
needed when you *have* such a defective readme.
And in that case, the user can show the Info
window to find out.

Many developers don't realize that they became
publishers the moment they laid out a GUI and
wrote the first line of text in it. Thus they
fail to behave like publishers and don't
proofread. They don't ask people with layout,
writing or design skills to review their work.
Just because they make that mistake doesn't mean
we should aim low with the installer design.

If we set down clear guidelines [2], developers
(or rather, packagers) will either spend a little
time up front polishing their short readme so it
works in the installer, or they will spend it
later answering tech support messages from users
who are confused what this thing does, every time
answering "Choose 'Info' from the 'Window' menu".

I'm okay with that. :-p
Post by Frederico Muñoz
The changing of the Preferences I was thinking
of was in line with the rest of that apps...
you go to the menu, chose preferences, and it's
done. This can also be set using some kind of
Preferences.app module is needed.
What "that apps" ??? I'm sorry, I can't parse
that. Are you talking about prefs in the
installed app, or in the installer? I don't have
a clue what point you're trying to make here.
Post by Frederico Muñoz
The user can prefer, for some reason, to, even
if the automatic install that you talk about is
available, prefer the regular Installer
interface.
Can you name a reason? There is no point in
supporting hypothetical scenarios. There are
enough real-life issues the app will need to
handle.

I once wrote a blog posting on why I think users
actually *do not* want to use installers [3]. If
a user has a need to use an installer, that
usually implies that there is a design flaw in
the application, or something got screwed up in
the system. We can't really help with that.
Post by Frederico Muñoz
It should be avaialble ans work normally with
every package, regardless of complexity.
True. If I came across like I wanted that, then
I must have mis-phrased. As I said above, the
installer *will* work fine for that, but it will
require a few steps too much. That's okay,
because most users who actively try to dig out a
non-GUI installer embedded in an application are
bound to be advanced. They'll probably use the
Content Browser for whatever oddity they want to
commit anyway.
Post by Frederico Muñoz
This is especially important since in the
begining there won't be metapackage support, so
only single packages can be installed (in the
begining being the time Installer is being
tested to deal with the simple packages, since
it's better to have that working robustly first
to tackle metapackages when the basics are set).
As I said, there's no use optimizing the GUI for
uses that won't be relevant once we ship
Installer.app 1.0. And 1.0 should have
metapackages, IMHO.
Post by Frederico Muñoz
Is there anything else an installer has to
do that needs user interaction at the level we are talking right now?
Seing the information and deciding were to put
it comes to mind. Again, the fact that there
could be automatic methods to do this doesn't
mean that the app shouldn't support it.
Seeing /what/ information? If you mean finding
out what the installer package will do, that is
an advanced use. As such, we can expect the user
to be able to use the Installer's "Open" menu
item to open a Content Browser for the desired
application's embedded package. We could even
have apps with embedded packages show up just
like other documents, so the user doesn't have to
dig into it.
Post by Frederico Muñoz
I just wanted a refined way to allow for, within
a sequence orientated Installer, easy onse step
install with the basics if needed.
Okay. I already said above why I think we shouldn't optimize for that case.
Post by Frederico Muñoz
Ok, I was refering exactly to the factr that it
isn't used in GNUstep, and as such I suspect it
lacks appropriate ways to do it. I'm open to
suggestions on the best way to use that feature.
Well, the GNUstep web site *is* mentioning that
there's interest in tracking new developments in
Cocoa, and Cocoa has at least two kinds of
disclosure button controls. So, if we implemented
one of those, it'd probably just be a patch on
NSButton that would also attract Cocoa -> GNUstep
porters. Or maybe one of them even already
submitted such a patch.

And as my mockup shows, just a regular button would work as well.
Post by Frederico Muñoz
We shouldn't throw them away, but if we can get
the same information using what already is there
we should. If there is something that you find
really adds to the experience I will add it to
the list of keys/files that my Installer uses.
So I'm not fixed on only using OSX's
information, just
think that if it is there we should used it
instead of making our own. If OSX ReadMes and
Welcome files aren't good enough then I agree
that a new file or key should be created
(probably a key that corresponds to the
Description field on old NeXT packages). Better
yet, check for it, and if it
isn't there, use a OSX file. What do you think?
It's a matter of politics. If we display MacOS
X-specific files, we encourage people porting
packages to just use the same file for both OSs,
which is bound to result in confusion and lots of
irrelevant information (i.e. OS X info on
GNUstep, and GNUstep info on OS X). So, I
actually think it may be better to explicitly
*not* support this.

OTOH, if we don't display MacOS X-style files,
we're causing more work for packagers porting
their installers. From a usability point of view,
OS X compatibility isn't desirable on that level,
even though it *is* rather fascist to turn off
that feature just to avoid *possible* errors in
Readmes. But really, a readme is a very simple
file, while the hard work went into the actual
package. So, in this case I'd take usability over
convenience.
Post by Frederico Muñoz
Are you saying we should allow to install
something twice? I'd say this is
an error for any users but advanced ones.
Well, that is how I understood your sentence of
installing an application on several
partitions...
what exactly did you mean?
I meant that as a feature for users that have
several bootable partitions. E.g. if you have
Darwin-GNUstep, Debian-GNUstep and
Windows-GNUstep installations on three
partitions, you may want to boot into Debian,
launch the installer and then install the same
app on all three partitions. For such cases,
selecting the drive would be useful (or even if
you have two Debian-GNUstep installations, maybe
mirrored).

For cases where the installed thing is simply an
application without any system support files,
there would probably only be a button to choose a
directory, defaulting to ~/Applications or
whatever... but it's arguable whether you'd want
an installer for those in the first place.
Post by Frederico Muñoz
Yes, you're right, I can say what Installer
expects and let the devs follow it. If they
don't, well, it's their business :)
Exactly. The whole GNUstep-UI crowd will wait at
their doors with baseball bats and ... ummm...
nevermind. ;-)
Post by Frederico Muñoz
I can perfectly live with a more sequential
process. The only thing I really want is a way
to bypass it, but your initial approach could be
made to do that...
It would definitely be a more effective use of
screen space. Maybe we could have an "Other..."
button on the "Installation Type" page, to allow
for more control. If it's a very simple
installation, we could probably just leave out
pages. I suppose for very simple cases, you could
merge "Readme" and "Select Destination", and drop
"Installation Type" completely. That would
essentially give you one window with a Readme, a
"Select Destination" button below it, and an
"Install" button.

Though I wouldn't bother with that, as it'll
mostly be irrelevant once we hit 1.0.
Post by Frederico Muñoz
THe only thing that I think must be thought
about is the naviation part... It's a tricky
thing because quite honestly there isn't any app
that I've seen on GNUstep that needs to provide
this kind of interface. I can perfectly live
with a more sequential process, and your
additional clarifications lead
me to think that with some balanced between the
buttons on the bottom and some preferences
settings we could achieve something that can
work sequentially and also allow for people to
just get it done. Indeed, that was your initial
idea also.
*sigh* you're still not understanding me.
sequential = get it done. Non-sequential = out of
order = advanced. Single-click = simplest case.

-----
1) Note that you could share a lot of code
between the "advanced" Installation Type view and
the Content Browser. They'd operate on the same
model, just that the browser would use accessors
that don't perform conflict checks. Come to think
of it, you could even just get rid of the Content
Browser and just have a checkbox "Check for
conflicts" that *really* advanced users can turn
off.

2) Of course, we can also aid them by giving our
installer-maker a good GUI that encourages doing
things right and reminds people of best practices.

3) "The Best Installer is one you don't use"
<http://zathras.de/angelweb/x2005-03-10.htm>
--
Cheers,
M. Uli Kusterer
------------------------------------------------------------
"The Witnesses of TeachText are everywhere..."
http://www.zathras.de
Frederico Muñoz
2005-04-08 17:54:26 UTC
Permalink
Post by M. Uli Kusterer
<http://www.zathras.de/GNUstep_Nesedah_Installer2.jpg>
I've also made two slight changes to the initial mock-up at
<http://www.zathras.de/GNUstep_Nesedah_Installer.jpg>
Ok. Now I'm at an impass, since I like them both :/
Post by M. Uli Kusterer
Post by Frederico Muñoz
Ok, I see we are talking about different things. When they doublt click on
a package in Workspace they don't see the contents, sonce the package is a
bundle. It appears as a file, and Installer is called. I assumed you were
refering to way to see the contents of the bundle within Installer, and
replied that if they really want to do that they can use the "Open as
Directory" option in e.g. GWorkspace. So, by default, the package is a
black box to the user, it doesn't have any content in view and behaves a a
single file (as other
bundles).
Ah, that explains why you seemed to make no sense :-) No, I was just talking
about a regular "Open" menu item.
Oh, right, that clears it up.
Post by M. Uli Kusterer
Post by Frederico Muñoz
Well, is there is some clever way to to this in GNUstep that is consistent
with the overall UI I'm interested.
Well, for now I just went with regular buttons labeled "Other...". Click
one, and that area of the window is replaced with advanced options. If I
remember correctly how .pkg installers work, for the "Destination:" section,
this would probably just replace the drive selector with a "Choose Root
Folder..." button. The point is that the "non-advanced" option shouldn't let
you specify any destination that doesn't make sense. I.e. if there was no
GNUstep installation on drive z:, it wouldn't show up in the list (or maybe
show up with a badge saying "unavailable").
This can be expanded to only show the volumes with enoogh free space available.
Post by M. Uli Kusterer
When you click "Other..." for the type, it would replace the radio buttons
and checkboxes with a more detailed list of components, sub-packages or
whatever, and let you check/uncheck them to specify what gets installed. Note
that this would not let you turn off required components, and would also
prevent users from activating conflicting components. (how it would do this
is a discussion for another day)
Right.
Post by M. Uli Kusterer
The downside of this approach is that the window tends to become rather
tall. The mockup was originally 800x600 :-(
Oh, I see. Since it has to be able to acomodate just about everything in the same window.
Post by M. Uli Kusterer
Post by Frederico Muñoz
Single thig == single selection of e.g. a file. THe way the GW Inspector
works, for example, the Inspector has 4 views, all showing different levels
of information about the same thing.
The point is, it's not different *levels*, it's different *pieces* of
information. Different *properties* of the objects. That's why switchers work
there. A view means I'm viewing the same thing in a different way. E.g. if I
have my phone bill, there could be a list view showing each item as a
name/price pair, and a pie chart view that shows each item as a slice of my
complete phone bill. But it'd still need to be the same information.
That's why your switched design isn't homogeneous. The first page shows the
installer's options, and the second and third show two different views of the
installation status. The installer options page is the odd one out here.
Just to clarify, the view you refer to as the option's one is really the information one.
There isn't any way to set options there, it just present information about the package.
Post by M. Uli Kusterer
Post by Frederico Muñoz
Right, that was what I had.
Well, okay, so I guess we agree the modal progress panel is back in.
Ok.
Post by M. Uli Kusterer
Post by Frederico Muñoz
The "pages" I have right now are subject to change... I guess that I have
also adapted
what I show to make it work in the current UI, which is a mistake. You
don't have to work
with the pages I have now, only with the information they contain, the way
this information
is presented is what we're discussing.
Well, okay, so just to clarify: "Package Info" would be a separate window
containing all the info-y stuff, i.e. what platforms it contains, (no need
for the status, you can see that by looking what buttons are available) what
version it is, sizes etc. and "Content Browser" would be a separate window
with a list of everything in the package, permissions etc... [1]
I think that at least the package name and version should be displayed to the user
without needing any further action. The platforms and sizes can be relegated to a
secondary position, but the version number is important.
Post by M. Uli Kusterer
Add to that the Readme/Destination/Type sections in the main installer
window and the modal progress panel (with a button to also show the log), and
we should have all the functionality covered, right?
Yes, I think so.
Post by M. Uli Kusterer
Post by Frederico Muñoz
Wait a second, I haven't ruled out the sequential process... I personally
would like a way to make it single-step install, but that doesn't mean it
can't also behave sequentially. For example, if in a sequence the final
step shows the required minimum information I can perfectly see it being
used both sequentially and non-sequentially, depending on the user needs.
The sequential process isn't intended for advanced users. Yes, advanced
users may change more of the options and thus visit all the pages, but they
will know where they have to look, which means they'll jump around and won't
likely miss anything. OTOH beginners will simply want to step through these
options in sequence to read what they *could* do, find out the defaults are
what they want, and finish.
Well, still, advanced users could like the possibility to avoid stepping trough them.
Post by M. Uli Kusterer
Post by Frederico Muñoz
Here is the thing, you are making an assumption that such a mechanism is
available and is already a default. THere is a different between something
being tought a good idea and assuming it is something that must be present.
In this initial stage my Installer will behave like a regular Installer,
not more, not less. The oce that goes into that will of course be
instrumental to make that mechanism work later. But the basic fact is that
it will first allow for regular package installation and only after that
can other mechanism ber used on top of it.
I never said it *must* be present. The installer will work just fine for
small packages, it will simply be as annoying as other installers are when
used for such simple cases. The good UI we're trying to build manages the
more complex cases. Yes, it will annoy our users to have to go through four
steps when a click in "Install" would have sufficed, but since we
*eventually* plan to use the no-GUI-install-on-startup-approach, it's an
annoyance we can live with.
Ok, I understand your point. But didn't your original idea cover that by allowing the user
to go directly to the last point that showed the basic info anout the package and the
installation?
Post by M. Uli Kusterer
If we try to make the installer cope with such simple cases more elegantly
right now, we'll probably have to make compromises when it comes to more
complex behavior. Or if we don't, we'll spend lots of time implementing stuff
that will soon be replaced by the no-GUI stuff. I'd suggest we focus our
development efforts on the end product for now, not on an intermediate stage
that will only be used for two weeks during 0.5...
I was hoping to be able to make it more elegant for simple cases without affecting the
handling of the more complex ones.
Post by M. Uli Kusterer
Post by Frederico Muñoz
Actually the information about the package is also important. If I send
someone
FooBar.pkg and just say "very cool", I want to see what it is and what it
does. The normal
required Information fields are very useful to know what the program
intends to do.
That's what the readme/welcome text should be doing. If it doesn't, it is
insufficient. The rest of the package information is really only needed when
you *have* such a defective readme. And in that case, the user can show the
Info window to find out.
There is information in the package that is not free-flow text in a file. The Info.plist and Description.plist
contain specific keys to be used by the installer in a well defined way and with a well defined meaning.

This information is more reliable than the included text files, since it is much more restricted in scope. This
works for things like the version number, long application name, etc.
Post by M. Uli Kusterer
Many developers don't realize that they became publishers the moment they
laid out a GUI and wrote the first line of text in it. Thus they fail to
behave like publishers and don't proofread. They don't ask people with
layout, writing or design skills to review their work. Just because they make
that mistake doesn't mean we should aim low with the installer design.
No, but as I said above we get get some information more reliably and without depending
on a text file. This could be used for very specific information on the main window (e.g. version)
and most of the fields can be shown in the Content Viewer... For the information that is
free flow and appears in the main window we should just set guidelines and be done with it.
Post by M. Uli Kusterer
If we set down clear guidelines [2], developers (or rather, packagers) will
either spend a little time up front polishing their short readme so it works
in the installer, or they will spend it later answering tech support messages
from users who are confused what this thing does, every time answering
"Choose 'Info' from the 'Window' menu".
I'm okay with that. :-p
I'm with you on the need to define the objective of the files that Installer checks and
let the packagers worry about it.
Post by M. Uli Kusterer
Post by Frederico Muñoz
The changing of the Preferences I was thinking of was in line with the rest
of that apps...
you go to the menu, chose preferences, and it's done. This can also be set
using some kind of Preferences.app module is needed.
What "that apps" ??? I'm sorry, I can't parse that. Are you talking about
prefs in the installed app, or in the installer? I don't have a clue what
point you're trying to make here.
Yes, ghastly sentence, should be taken out and shot. What I meant is that for things like
"Languages to install", "Platforms to install" and any other more complex option of this kind
I was thinking of using, just like the rest of GNUstep app's that have preferences, a regular
menu entry that would set the behaviour of Installer. This would make changes global
in Installer, not per-package. I hope this is more understandable.
Post by M. Uli Kusterer
Post by Frederico Muñoz
The user can prefer, for some reason, to, even if the automatic install
that you talk about is available, prefer the regular Installer interface.
Can you name a reason? There is no point in supporting hypothetical
scenarios. There are enough real-life issues the app will need to handle.
For example, if any of the advanced features need to be changed it is better
to open it with Installer, change the preferences, and install.
Post by M. Uli Kusterer
I once wrote a blog posting on why I think users actually *do not* want to
use installers [3]. If a user has a need to use an installer, that usually
implies that there is a design flaw in the application, or something got
screwed up in the system. We can't really help with that.
I've read it at the time. I agree with minimizing the need for specific interaction
with an installer, but I think that for several situations it will still be the best
way to let the user install software, more specificaly the programs that have
special needs in directory layout, can be customized, etc.
Post by M. Uli Kusterer
Post by Frederico Muñoz
It should be avaialble ans work normally with every package, regardless of
complexity.
(another sentence that should be the first against the wall when the Revolution comes...)
Post by M. Uli Kusterer
True. If I came across like I wanted that, then I must have mis-phrased. As
I said above, the installer *will* work fine for that, but it will require a
few steps too much. That's okay, because most users who actively try to dig
out a non-GUI installer embedded in an application are bound to be advanced.
They'll probably use the Content Browser for whatever oddity they want to
commit anyway.
Ok, I understand that.
Post by M. Uli Kusterer
Post by Frederico Muñoz
This is especially important since in the begining there won't be
metapackage support, so only single packages can be installed (in the
begining being the time Installer is being tested to deal with the simple
packages, since it's better to have that working robustly first to tackle
metapackages when the basics are set).
As I said, there's no use optimizing the GUI for uses that won't be relevant
once we ship Installer.app 1.0. And 1.0 should have metapackages, IMHO.
I'm not preparing 1.0 yet, I still didnt even made it more or less public. And while
I do think that metapackages are important I don't think they are crucial to a 1.0 release,
since the program can be very useful without metapackages (IIRC NeXT never had mpkg's
and was able to live without them). Well, I can wait for them to release 1.0, but that will mean
that e.g. 0.5 will already be perfectly usable in what single packages are concerned, and 0.6
will allow the automatic feature you talked about.
Post by M. Uli Kusterer
Post by Frederico Muñoz
Is there anything else an installer has to
do that needs user interaction at the level we are talking right now?
Seing the information and deciding were to put it comes to mind. Again, the
fact that there could be automatic methods to do this doesn't mean that the
app shouldn't support it.
Seeing /what/ information? If you mean finding out what the installer
package will do, that is an advanced use. As such, we can expect the user to
be able to use the Installer's "Open" menu item to open a Content Browser for
the desired application's embedded package. We could even have apps with
embedded packages show up just like other documents, so the user doesn't have
to dig into it.
That's a different thing, it is perfectly possible to make an Inspector content viewer for
packages that will allow the user to view the information in the metadata (like seing the ID3
tags of a MP3 file in the Workspace inspector "COntent" view). And the way I was thinking of
doing was using the Inspector view that shows which apps registered for the file type and
having as default the Inspector "wrapper" that makes express installs, but listing the regular one
as a choice. This would allow the user to double click to express install, but to open with Installer
if he chooses.
Post by M. Uli Kusterer
Post by Frederico Muñoz
I just wanted a refined way to allow for, within a sequence orientated
Installer, easy onse step install with the basics if needed.
Okay. I already said above why I think we shouldn't optimize for that case.
Indeed.
Post by M. Uli Kusterer
Post by Frederico Muñoz
Ok, I was refering exactly to the factr that it isn't used in GNUstep, and
as such I suspect it lacks appropriate ways to do it. I'm open to
suggestions on the best way to use that feature.
Well, the GNUstep web site *is* mentioning that there's interest in tracking
new developments in Cocoa, and Cocoa has at least two kinds of disclosure
button controls. So, if we implemented one of those, it'd probably just be a
patch on NSButton that would also attract Cocoa -> GNUstep porters. Or maybe
one of them even already submitted such a patch.
And as my mockup shows, just a regular button would work as well.
Yes. I can work with that. I'm not personally capable to actually add anything to GNUstep
proper, unfortunatly.
Post by M. Uli Kusterer
Post by Frederico Muñoz
We shouldn't throw them away, but if we can get the same information using
what already is there we should. If there is something that you find really
adds to the experience I will add it to the list of keys/files that my
Installer uses. So I'm not fixed on only using OSX's information, just
think that if it is there we should used it instead of making our own. If
OSX ReadMes and Welcome files aren't good enough then I agree that a new
file or key should be created (probably a key that corresponds to the
Description field on old NeXT packages). Better yet, check for it, and if
it
isn't there, use a OSX file. What do you think?
It's a matter of politics. If we display MacOS X-specific files, we
encourage people porting packages to just use the same file for both OSs,
which is bound to result in confusion and lots of irrelevant information
(i.e. OS X info on GNUstep, and GNUstep info on OS X). So, I actually think
it may be better to explicitly *not* support this.
Umm, that is a bit to extreme. If the packagers that the effort to make a GNUstep
package then surely they could make the included files more neutral if needed to.
Post by M. Uli Kusterer
OTOH, if we don't display MacOS X-style files, we're causing more work for
packagers porting their installers. From a usability point of view, OS X
compatibility isn't desirable on that level, even though it *is* rather
fascist to turn off that feature just to avoid *possible* errors in Readmes.
But really, a readme is a very simple file, while the hard work went into the
actual package. So, in this case I'd take usability over convenience.
I don't agree here... even if we use another file nothing guarantees that the packager
will not rename the existing Readme. This is just to show that whatever the file name we
support the responsability to write it according to our needs is of the packager. With this in
mind it would be better to use the same files as in OSX if the purpose is the same. The
responsability of making them work well with our Installer is theirs, and since they did
package it for GNUstep than they should be able to make a few changes.

Optionaly we could use a specific file if present, and fallback to another if not. I still prefer
giving specific guidelines on what the files should contain though.
Post by M. Uli Kusterer
Post by Frederico Muñoz
Are you saying we should allow to install something twice? I'd say
this is
an error for any users but advanced ones.
Well, that is how I understood your sentence of installing an application
on several partitions...
what exactly did you mean?
I meant that as a feature for users that have several bootable partitions.
E.g. if you have Darwin-GNUstep, Debian-GNUstep and Windows-GNUstep
installations on three partitions, you may want to boot into Debian, launch
the installer and then install the same app on all three partitions. For such
cases, selecting the drive would be useful (or even if you have two
Debian-GNUstep installations, maybe mirrored).
This is something that never even crossed my mind... is this a common scenario?
Post by M. Uli Kusterer
For cases where the installed thing is simply an application without any
system support files, there would probably only be a button to choose a
directory, defaulting to ~/Applications or whatever... but it's arguable
whether you'd want an installer for those in the first place.
Post by Frederico Muñoz
Yes, you're right, I can say what Installer expects and let the devs follow
it. If they don't, well, it's their business :)
Exactly. The whole GNUstep-UI crowd will wait at their doors with baseball
bats and ... ummm... nevermind. ;-)
Eheheh.
Post by M. Uli Kusterer
Post by Frederico Muñoz
I can perfectly live with a more sequential process. The only thing I
really want is a way to bypass it, but your initial approach could be made
to do that...
It would definitely be a more effective use of screen space. Maybe we could
have an "Other..." button on the "Installation Type" page, to allow for more
control. If it's a very simple installation, we could probably just leave out
pages. I suppose for very simple cases, you could merge "Readme" and "Select
Destination", and drop "Installation Type" completely. That would essentially
give you one window with a Readme, a "Select Destination" button below it,
and an "Install" button.
We shouldn't change the UI rules depending on the complexity of the package, for that
I prefer the full sequential approach.
Post by M. Uli Kusterer
Though I wouldn't bother with that, as it'll mostly be irrelevant once we hit
1.0.
Post by Frederico Muñoz
THe only thing that I think must be thought about is the naviation part...
It's a tricky thing because quite honestly there isn't any app that I've
seen on GNUstep that needs to provide this kind of interface. I can
perfectly live with a more sequential process, and your additional
clarifications lead
me to think that with some balanced between the buttons on the bottom and
some preferences settings we could achieve something that can work
sequentially and also allow for people to just get it done. Indeed, that
was your initial idea also.
*sigh* you're still not understanding me. sequential = get it done.
Non-sequential = out of order = advanced. Single-click = simplest case.
I am understanding you, it's just that when I refer to non-sequential I'm not refering
to out of order but to simplest case.


Again, many thanks for your work and advice, it has been fruitful. I would like to hear about other
people's view on this, but I guess I will only hear them when it is releases and they don't like it :)

In your opinion, which of the two mockups do you honestly prefer? I like the simplicity of your later mockup,
but after all of this I can also appreciate the arragement of it. They both look nice, so at this point I'm
thorn between the two :/ . I would like to take this out of the way to actually start implementing it.

Best regards,

fsmunoz
--
Frederico Muñoz
Jesse Ross
2005-04-08 18:13:34 UTC
Permalink
Post by Frederico Muñoz
Post by M. Uli Kusterer
<http://www.zathras.de/GNUstep_Nesedah_Installer2.jpg>
I've also made two slight changes to the initial mock-up at
<http://www.zathras.de/GNUstep_Nesedah_Installer.jpg>
Ok. Now I'm at an impass, since I like them both :/
If my opinion carries any weight on this issue, I personally like the new
version. I think it is more attractive, more intuitive, get's all the
important information up front, and satisfies Frederico's requirement for
a (basically) one-click install.

We could do without the large gratuitous header at the top, and that would
save on some height (we could still have a header, but a smaller one...
let me play with this).

The one other thing I would change is the URL embedded in the intro text.
Maybe we can come up with a smarter way to deal with this than simply
incorporating HTML-isms into the workspace.


J.
Frederico Muñoz
2005-04-08 19:32:43 UTC
Permalink
Post by Jesse Ross
Post by Frederico Muñoz
Post by M. Uli Kusterer
<http://www.zathras.de/GNUstep_Nesedah_Installer2.jpg>
I've also made two slight changes to the initial mock-up at
<http://www.zathras.de/GNUstep_Nesedah_Installer.jpg>
Ok. Now I'm at an impass, since I like them both :/
If my opinion carries any weight on this issue,
Don't be modest, of course it carries weight. I'm asking everybodies
opinion on this, and
yours, as the designer of Nesedah, has an added importance.
Post by Jesse Ross
I personally like the new
version. I think it is more attractive, more intuitive, get's all the
important information up front, and satisfies Frederico's requirement for
a (basically) one-click install.
I also like the new one, was just wondering if other people would find
the first one more easy to
navigate, as it were.
Post by Jesse Ross
We could do without the large gratuitous header at the top, and that would
save on some height (we could still have a header, but a smaller one...
let me play with this).
Well, there are certainly details that could be changed in both, I'm
certain that Uli's intention
wasn't to provide a totally ready mockup (think of Nesedah :) ). I
agree with the largeness of
the title, it should be immediatly visible and with emphasis, but
perhaps not so much.
Post by Jesse Ross
The one other thing I would change is the URL embedded in the intro text.
Maybe we can come up with a smarter way to deal with this than simply
incorporating HTML-isms into the workspace.
Doh, didn't even catch that detail. If the idea is to use it as a link
to an included file and not to an
Internet URI then I agree. Also, the GPL is an exception in that it
can be easily refered to, some people
use licences that don't have a specific name. Perhaps a "View License"
button under the description?
Either that or just allow for free flow text and don't even mention a
licence except is the developer decided
to reference it. The licence can be viewed by the content inspector.

Best regards,

fsmunoz
Jesse Ross
2005-04-08 18:43:32 UTC
Permalink
Post by Frederico Muñoz
Post by Jesse Ross
If my opinion carries any weight on this issue,
Don't be modest, of course it carries weight. I'm asking everybodies
opinion on this, and
yours, as the designer of Nesedah, has an added importance.
:)
Post by Frederico Muñoz
I also like the new one, was just wondering if other people would find
the first one more easy to
navigate, as it were.
I think the new version is much easier to navigate, as there is
essentially no navigation (ie: non sequential).
Post by Frederico Muñoz
Well, there are certainly details that could be changed in both, I'm
certain that Uli's intention wasn't to provide a totally ready mockup
(think of Nesedah :) ). I
Post by Frederico Muñoz
agree with the largeness of the title, it should be immediatly visible
and with emphasis, but
Post by Frederico Muñoz
perhaps not so much.
Yeah -- I didn't assume this was a final design proposal by any means. I
just think that it's a really functional design as is. The fact that the
details I chose to comment on were so minor should be a testament to how
good of a job Uli did in this inital mockup. Good job, Uli!
Post by Frederico Muñoz
Post by Jesse Ross
The one other thing I would change is the URL embedded in the intro
text. Maybe we can come up with a smarter way to deal with this than
simply
Post by Frederico Muñoz
Post by Jesse Ross
incorporating HTML-isms into the workspace.
Doh, didn't even catch that detail. If the idea is to use it as a link
to an included file and not to an
Internet URI then I agree. Also, the GPL is an exception in that it can
be easily refered to, some people
use licences that don't have a specific name. Perhaps a "View License"
button under the description?
I like that idea. Maybe in a format similar to the "Other" buttons.

J.
M. Uli Kusterer
2005-04-09 09:48:46 UTC
Permalink
Post by Frederico Muñoz
I also like the new one, was just wondering if
other people would find the first one more easy
to
navigate, as it were.
It depends on whether the installer stays this
simple. If it does, the second design will
probably be easier. If we get more complexity, we
may want to do things differently.
Post by Frederico Muñoz
Well, there are certainly details that could be
changed in both, I'm certain that Uli's
intention wasn't to provide a totally ready
mockup (think of Nesedah :) ). I agree with the
largeness of the title, it should be immediatly
visible and with emphasis, but perhaps not so
much.
See my other message on what this actually is.
That said, I forgot to mention that we don't need
"package name" and "version" fields at all. We
can just display them in the window title.
Post by Frederico Muñoz
Doh, didn't even catch that detail. If the idea
is to use it as a link to an included file and
not to an Internet URI then I agree.
It was intended to allow for both, though with
URLs being as transitory as they are, having a
copy inside the package is definitely more
desirable. I think it would be handy to support
URLs in the description for other reasons as well.
Post by Frederico Muñoz
Also, the GPL is an exception in that it can be easily refered to, some people
use licences that don't have a specific name.
Perhaps a "View License" button under the
description?
Either that or just allow for free flow to
reference it. The licence can be viewed by the
content inspector.
There definitely should be a way to quickly and
easily view the license, even without the Content
Browser. Remember, Content Browser is for
advanced uses, but the license is something most
people will want to have read before they install.

The point of not showing the entire license
right away was that, especially in open source,
there are many popular licenses, so once you've
read a license, you won't re-read it every time.
So, I wanted to make sure people could just see
"Ah, the LGPL, I already read that!" or "Geez,
what was the CDDL again?" and skip or read the
license as needed.
Post by Frederico Muñoz
I like that idea. Maybe in a format similar to the "Other" buttons.
Not too similar. While people should be
encouraged to just ignore the "Other" buttons,
the License is a legally binding agreement. They
don't want to overlook it. Of course, we could go
the route most other installers take and show a
modal License window to which they need to agree
before they can install.

Heck, this may even be necessary... I'm no lawyer.
--
Cheers,
M. Uli Kusterer
------------------------------------------------------------
"The Witnesses of TeachText are everywhere..."
http://www.zathras.de
Frederico Muñoz
2005-04-09 14:19:03 UTC
Permalink
I also like the new one, was just wondering if other people would find the
first one more easy to
navigate, as it were.
It depends on whether the installer stays this simple. If it does, the
second design will probably be easier. If we get more complexity, we may want
to do things differently.
True. One of the things I like in your second mockup though is that it at least seems
to cope with the complex things that I can think about, while remaining simple and
straightforward. In more than a way your latest design is give or take what I was
trying to express in my mails (but expressing badly).
Well, there are certainly details that could be changed in both, I'm
certain that Uli's intention wasn't to provide a totally ready mockup
(think of Nesedah :) ). I agree with the largeness of the title, it should
be immediatly visible and with emphasis, but perhaps not so much.
See my other message on what this actually is. That said, I forgot to
mention that we don't need "package name" and "version" fields at all. We can
just display them in the window title.
Ok, true, using the title bar to convey information is a good idea.
Doh, didn't even catch that detail. If the idea is to use it as a link to
an included file and not to an Internet URI then I agree.
It was intended to allow for both, though with URLs being as transitory as
they are, having a copy inside the package is definitely more desirable. I
think it would be handy to support URLs in the description for other reasons
as well.
Also, the GPL is an exception in that it can be easily refered to, some people
use licences that don't have a specific name. Perhaps a "View License"
button under the description?
Either that or just allow for free flow to reference it. The licence can be
viewed by the content inspector.
There definitely should be a way to quickly and easily view the license,
even without the Content Browser. Remember, Content Browser is for advanced
uses, but the license is something most people will want to have read before
they install.
Yes, thatw as my point exactly.
The point of not showing the entire license right away was that, especially
in open source, there are many popular licenses, so once you've read a
license, you won't re-read it every time. So, I wanted to make sure people
could just see "Ah, the LGPL, I already read that!" or "Geez, what was the
CDDL again?" and skip or read the license as needed.
There should be a way to easily read the licence, but the licence shouldn't be imposed
to the user.
I like that idea. Maybe in a format similar to the "Other" buttons.
Not too similar. While people should be encouraged to just ignore the
"Other" buttons, the License is a legally binding agreement. They don't want
to overlook it. Of course, we could go the route most other installers take
and show a modal License window to which they need to agree before they can
install.
Heck, this may even be necessary... I'm no lawyer.
I agree that it shouldn't be to similar... it could be below the text perhaps, and in a way that
makes it more visible than the Other but less visible then the rest.

As for the need to show a licence, I don't think there is one. All of the free licences only apply
on redistribution. If the licence is restictive then it could also be restricted to the person that
will use the software, and this could very well be a different person than the one that installs it.

So, by mentioning the licence in the text the user will, for the software I'm expecting to be packaged
for GNUstep, not need to read the full text since the licence will be known to him (GPL, BSD, etc). If
non-free software gets packaged then I can perhaps add a key to the Info.plist that makes the button
we talked about before blink red or something (I'm half kidding here, you get the idea).

The point is that it is the responsability of the software to display the licence information in a more
direct way if the developer thinks it is necessary. GPL software, for example, has rules to display the
licence in GUI and non-GUI applications. This is the only way to guarantee that the user using the app
knows what the licence is.

Best regards,

fsmunoz
--
Frederico Muñoz
M. Uli Kusterer
2005-04-09 09:35:02 UTC
Permalink
Post by Jesse Ross
If my opinion carries any weight on this issue, I personally like the new
version. I think it is more attractive, more intuitive, get's all the
important information up front, and satisfies Frederico's requirement for
a (basically) one-click install.
A few problems: I wouldn't know what to name the "Other..." button
when it is in "Other"-mode. ("Simple"?). Just have it use "sticky"
highlighting?
Post by Jesse Ross
We could do without the large gratuitous header at the top, and that would
save on some height (we could still have a header, but a smaller one...
let me play with this).
Actually, that header was supposed to be room for a package logo
image. I just didn't bother drawing one...
Post by Jesse Ross
The one other thing I would change is the URL embedded in the intro text.
Maybe we can come up with a smarter way to deal with this than simply
incorporating HTML-isms into the workspace.
Well, I can see your point, though I think most people start using a
computer exactly because of the web and e-mail. So, they'll probably
have learned this already. But of course, a "View License" button
might be even clearer. I just didn't know where to put it.

My sister suggested I may want to try to rotate the layout by 90
degrees. After all, screens are wider than high. That causes other
problems, like where to put the "Other..." buttons so they don't end
up too close to the "Install" button etc...

If anyone wants to give this a try, let me know. I can send you the
PSD files. I'm not ready to try this myself yet, because moving stuff
around is really annoying in Photoshop Elements. It doesn't support
grouping layers, and shift-selection doesn't really work for elements
that are close together. :-(
--
Cheers,
M. Uli Kusterer
------------------------------------------------------------
"The Witnesses of TeachText are everywhere..."
http://www.zathras.de
Frederic Stark
2005-04-11 17:23:41 UTC
Permalink
Post by M. Uli Kusterer
<http://www.zathras.de/GNUstep_Nesedah_Installer2.jpg>
Easy to choose: anything with a Space:1999 background get my vote.

Cheers,

--fred

Loading...