ARC Major Release Familiarity changes
From Genunix
PSARC has recently had a discussion on the topic, "If we determined that we would allow changes with Major Release Binding (i.e. incompatible changes) that provided a system that was more familiar to users of other open source OS'es (BSDs and Linux), what changes would we want?"
This page captures brainstorming on this topic - it is not a proposal, not a case under review, not a definitive plan, just a place to collect our thoughts before determining if we want to do any of those. Changes with mitigation plans for users who really do want old behaviour are more likely to happen than those which don't. (This lists /usr/has/bin as a directory for backwards compatible versions since that's the name used in OpenSolaris 2008.05, but /usr/old or any other directory name could be dropped in it's place - focus on the idea, not the implementation.)
Commands
- Replace /bin/sh with ksh93.
- Already done in OpenSolaris 2008.05
- TBD: What breaks?
- Mitigation: Provide /usr/has/bin/sh for old scripts.
- Replace /bin/ksh (currently ksh88) with ksh93
- Already done in OpenSolaris 2008.05
- Known incompatibilities: List from David Korn
- Mitigation: Provide /bin/ksh88 as non-redistributable binary from Sun-only repo?
- Replace /usr/bin/vi with vim. Same for ex & view.
- Already done in OpenSolaris 2008.05
- TBD: What breaks?
- Mitigation: Provide /usr/has/bin/vi,ex,view for users who prefer old versions.
- Change the /usr/bin/df default output mode to -h or -k.
- TBD: What breaks?
- Mitigation: Provide /usr/has/bin/df for those who really want the AT&T output form.
- Allow chmod 2755 to set the setgid bit on directories, instead of requiring chmod g+s
- This has been filed as CR 4067561, which is closed as Not A Defect with the evaluation:
Doing what is being suggested here would not make the system more user friendly. It would create chaos as regular users accidentally change the way group IDs are set when subdirectories are created. The current method of only changing the GID inheritance mode when done by symbolic mode changes was done as a result of a user interface design study. It may seem strange to users who are not used to systems that allow the user to specify whether subdirectories are to be created with the group ID of the creating process or the group ID of the containing directory. Switching the behavior to allow absolute mode changes (as well as symbolic mode changes) to set and clear the set-GID bit on directories should only be done if using the set-GID bit on a directory to determine which group-ID assignment to use on subdirectories is removed from the system at the same time. Since there has been no suggestion that this capability should be removed from Solaris systems, I am closing this bug again as Not A Defect.
However, Linux has the same semantics for the setgid bit on directories and allows chmod 2755 to set them.
- Put /usr/gnu/bin first in default $PATH.
- Already done in OpenSolaris 2008.05
- This change in OpenSolaris 2008.05 has resulted in several bug reports filed against utilities in the default path not handling ZFS acl's. Work will need to be done to update the GNU utilities to support the extensions the ZFS & CIFS projects added to the Solaris utilities for this to be possible.
- Defect #592: PATH=/usr/gnu/bin:$PATH & coreutils in /usr/gnu breaks ls(1)
- Defect #947: /usr/gnu/bin/chmod doesn't work. PATH=/usr/gnu/:$PATH breaks ZFS.
- Mitigation: Users who prefer Solaris classic utilities can change their $PATH in their dotfiles.
- Allow make to expand $< in explicit rules (CR 6474905)
- Currently requires setenv SUN_MAKE_COMPAT_MODE GNU
- Mitigation: restore old behavior with setenv SUN_MAKE_COMPAT_MODE OLD_SUN
- Replace /usr/bin/patch with gpatch (CR 4961759)
- Mitigation: /usr/has/bin/patch
Libraries
Changes that break library compatibility are less likely to be allowed, even in a Major release, unless there's a definite advantage and simple mitigation options.
- Make stdio able to handle more than 255 FILE's in 32-bit applications.
- Current workaround: PSARC 2006/162: Extended FILE space for 32-bit Solaris processes
- Remove SunOS 4.x binary compatibility libraries
- Remove all a.out (rather than ELF) capability
- Remove UCB compatibility headers and libs
Other
- Stop supporting "split" / and /usr
- Undoes the need for separate /lib and /usr/lib
- Allow user names longer than 8 characters (CR 4109819)
- Security community evaluation: http://www.opensolaris.org/os/community/security/library/long_usernames/
darrenm: This doesn't require a major release if we only go as far as 32 char usernames since utmpx already supports that length and the old 8 char limted utmp has already gone in a previous minor release. I don't think that even going beyond 32 would require a major release.
alanc: would the effects on output formats of commands like ps & ls when we adjust the column layouts cause compatibility issues though?
