Hi,

On the issue of /usr/sfw.. the problem for users and companies alike is that 
you don't see /usr/sfw on any other UNIX or UNIX-like system. It's not 
something people would even think of looking at, unless they took the time to 
explore.

However, to suggest that /usr/bin, /usr/sbin, /sbin, /bin, /usr/X*/bin, etc. 
are somehow outdated is a bit unfounded. Users, sys-admins, and developers 
alike are familiar with these directories on other platforms, so they are very 
relevant. The biggest compliant I've seen in large shops about S10 is how all 
the *desktop* stuff has been dumped into /usr/bin, specifically Gnome. As a 
result, many shops un-install these components to *clean* things up and then 
wonder why things are broken when they try to login to Gnome. 

And there are plenty of shops that go install things like the blastwave 
packages to give everyone the choice of things like a newer version of Gnome, 
KDE, xfce, etc. Does it make sense to put Gnome in /usr/bin for customers who 
want the flexibility to install or roll their own?

The real problem that's coming out of this is.. who is our target audience? Are 
we trying to cater to the Linux crowd? Realistically, we'll probably never 
convert them as a whole to Solaris. Just as you can't expect every Windows user 
to switch to Mac OS X. But those who do make the switch do so because it's 
different and because it provides value. The goal here should be to provide 
real differentiating value. Solaris has stood out in the sense that it embraces 
standards at the API and ABI level. We should build upon that, not emulate 
another OS just to be the *same*. 

Overall, I think we can agree there are definitely some out-dated components, 
conventions, and directories in Solaris. Perhaps things like /usr/games, 
/usr/sfw, or /usr/sadm don't make a lot of sense. However, there are items that 
exist for compatibility, standards, and compliance. We supply personalities.. 
/usr/gnu, /usr/xpg4, /usr/xpg6, /usr/ucb. Why? To give customers choice.

Users know that they have to change their $PATH to get the desired result. To 
assume that customers at some level don't understand the use of $PATH, is a bit 
short sighted and perhaps even insulting. There will always be a user that 
needs help with things like this, but that is why sys-admins and application 
owners (web admins, db admins, etc.) are employed.

Now, does that mean we shouldn't bother making it easier for users? Of course 
not. But, I am deeply concerned that we may take things to the extreme and 
ultimately make /usr/bin a nightmare for both users, sys-admins, and developers 
alike. I'd hate for users to complain that there's "too much stuff" in /usr/bin 
and that they can't *find* the command they're looking for. This only leads to 
users requesting the amount of stuff to be cut back.. which means extra cycles 
spent by sys-admins creating a scaled down OS install. Not my idea of fun!

If we're trying to make Gnome better, then perhaps we need to make better $PATH 
statements in the login session that users inherit? Perhaps we need to include 
more of the GUI tools in the Gnome menus. I don't see dhcpmgr, printmgr, or smc 
in the Gnome menus for example. And the menus are not dependent upon $PATH. 
Wouldn't it be easier to have better default $PATH statements? The concept that 
was mentioned earlier of having an AUTOPATH was interesting. 

Another way to look at this is.. when customers install something like Oracle 
or Weblogic for example.. they don't install it into /usr/bin. Why is that? If 
we were to apply the logic of throwing everything into /usr/bin to make life 
easier, shouldn't those binaries go into /usr/bin? The answer is simple. It is 
generally accepted that /usr/bin contains OS tools and commands, not 3rd party 
apps or non-OS related items. Directories and paths are used to separate tools, 
apps, data, etc. just in the same way that humans have organized everything 
from libraries and filing cabinets to cities and governments. To not separate 
things in some logical manner is counter intuitive. The mind seeks 
organization:)

We are in this quandary because we are including more components into Solaris 
that are not really related to the core OS functionality and need some way of 
making it easier for users to find those items. 

When users login from the command line, we have standard methods for setting 
things like $PATH, for example /etc/profile. When users log into CDE or Gnome, 
there is a multitude of shell variables that are set automatically. If we 
leveraged these tools, is there a real need for having everything in /usr/bin??

So where do we draw the line? How do we determine what should go into /usr/bin 
vs. /usr/sbin or /usr/<app>/<version>/bin? Kinda brings us back to what I had 
suggested earlier..

1. If an app is to go into /usr/bin, it must meet these requirements:
- It is not an administrative command that requires privs. If so, it may have 
to go into /usr/sbin.
- Its name does not conflict with a standard command already located in /usr/bin
-It does not conflict with the default Solaris behavior. If so, it should be 
located in the appropriate/usr/<behavior> name space, (/usr/gnu, /usr/ucb, 
/usr/xpg4, /usr/xpg6).
- It does not require the support of multiple versions.
-It is not a large suite of software (i.e. X11, Gnome, CDE, OpenWindows, 
Postgres,MySQL, Apache, Sun Cluster, etc.).If so, it should be located 
in/usr/<app name>/<version>/ directory.

2. If an app is to be sym-linked into /usr/bin, it must meet these requirements:
-It must be appropriate for general consumption by users and otherapplications 
(i.e. mv, ls , pgrep, soffice, firefox, gcc, cc)
- Itis part of a larger suite of software, located in /usr/<appname>/<version>, 
that is appropriate for general consumptionby users and other applications 
(i.e. StarOffice, Gnome applications,Firefox, gcc, cc, perl, java). This does 
not include application leveladministrative/priv binaries (i.e. Xsun, httpd, 
scinstall, gdm, xdm).
- The latest version is sym-linked without a version number. For example, 
/usr/bin/java would link to java 6, and /usr/bin/java1.5 would link to java 1.5.

This would lead to things like:

/usr/gnome/<version>
/usr/kde/<version>
/usr/apache/<version>
/usr/mysql/<version>
/usr/postgres/<version>
/usr/JES/<version>
/usr/webmin/<version>
etc. 

Of course, this could lead to a larger /usr. For example, it would be silly to 
separate out the JES software since all the components are part of a larger 
suite. So there is possibility for some consolidation. 

This seems like a more reasonable approach when combined with proper $PATH and 
shell environmental variables. The concept of having auto-discovery is 
interesting. Perhaps something like /etc/auto{path, man, lib, etc.} would make 
sense. That way when software is installed, it updates those configuration 
files. If someone wants to use those variables, they can set a variable, like 
"export AUTODISCOVERY=true" in their profile. Perhaps make it the default or a 
GUI option in Gnome? 



*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Octave J. Orgeron
Solaris Systems Engineer
http://www.opensolaris.org/os/community/sysadmin/
http://unixconsole.blogspot.com
unixconsole at yahoo.com
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

----- Original Message ----
From: Bart Smaalders <bart.smaald...@sun.com>
To: Garrett D'Amore <gdamore at sun.com>
Cc: Danek Duvall <Danek.Duvall at sun.com>; Octave Orgeron <unixconsole at 
yahoo.com>; Shawn Walker <swalker at opensolaris.org>; PSARC-ext at sun.com; 
Joseph Kowalski <jek3 at sun.com>
Sent: Monday, March 10, 2008 12:04:32 PM
Subject: Re: Nethack 3.4.3 [PSARC/2008/172 FastTrack timeout 03/11/2008]

Garrett D'Amore wrote:

> There's another performance aspect though.  Searching through 
> directories is proportional to the number of entires in it.

If you're using UFS.  On ZFS, no.


>  One could 
> argue that the most frequently accessed stuff should be in /usr/bin, and 
> other, less frequently accessed stuff, could live in directories that 
> appeared later in the search path, or were more easily pruned from 
> user's paths.

Given that the next release of Solaris will use ZFS as it's root filesystem,
any arguments about lookup performance are moot.   (They're moot on
UFS, too, of course, because of the DNLC.)

-There is no good reason to place commands in multiple existing directories.

There is REALLY no good reason to propose new directories.

Using directory location as an indexing method for software makes
no sense, because the user and system admin cost is so high when
someone decides to add a new directory - every Solaris user around the
world would need his/her path variables changed to see the new software.

Ask around and find out how many people never discovered that gcc
was present on every S10 full install in /usr/sfw.

If you want better indexing and information on available commands,
fine.  Build better docs, help tools, etc - _don't_ try to implement 
this via
adding more directories in the user's path.

- Bart


-- 
Bart Smaalders            Solaris Kernel Performance
barts at cyber.eng.sun.com        http://blogs.sun.com/barts
"You will contribute more with mercurial than with thunderbird."





      
____________________________________________________________________________________
Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs

Reply via email to