From Fedora Project Wiki
(remove developer assistant, per https://meetbot.fedoraproject.org/teams/workstation/workstation.2015-11-25-15.00.log.html and https://git.fedorahosted.org/cgit/comps.git/commit/?id=3ba95e811800f0dd548b4dfd53c7fcc4b8779667)
(27 intermediate revisions by 3 users not shown)
Line 8: Line 8:


This section should describe the core services of the platform and their intended use. The items here should refer back to the PRD for a functional justification.
This section should describe the core services of the platform and their intended use. The items here should refer back to the PRD for a functional justification.
=== File system ===
The default file system type for workstation installs should be btrfs. Until btrfs is considered ready for this role, we will stay with the current  setup of the desktop spin.


=== Service management ===
=== Service management ===
Line 29: Line 33:
We should detect when the system is on a public or untrusted network and prevent the user from unwanted sharing of e.g. music or other media in
We should detect when the system is on a public or untrusted network and prevent the user from unwanted sharing of e.g. music or other media in
this situation. A firewall (and network zones as currently implemented by firewalld) may or may not be part of a solution to this.
this situation. A firewall (and network zones as currently implemented by firewalld) may or may not be part of a solution to this.
=== SELinux ===
SELinux will be enabled in enforcing mode, using the targeted policy.


=== Problem reporting ===
=== Problem reporting ===
Line 35: Line 43:
journal.
journal.


Sending this information to a central place (like abrt does for crashes today) should be possible, but not mandatory. Depending on the use case, it may be turned off, enabled manually on a case-by-case basis, or entirely automatic without use intervention.
Sending this information to a central place (like abrt does for crashes today) should be possible, but not mandatory. Depending on the use case, it may be turned off, enabled manually on a case-by-case basis, or entirely automatic without user intervention.


=== Session tracking ===
=== Session tracking ===
Line 53: Line 61:
=== Software updates ===
=== Software updates ===


dnf will be used to obtain and install software updates for packaged applications and the OS itself. The recommendation for applications is to use the PackageKit APIs to interact with the underlying packaging system.
gnome-software will use PackageKit with the hawkey backend to obtain and install software updates for packaged applications and the OS itself. The recommendation for applications is to use the PackageKit APIs to interact with the underlying packaging system.


=== Miscellaneous system information ===
=== Miscellaneous system information ===
Line 87: Line 95:
The workstation session will switch to using a Wayland compositor as soon as feasible. Until then, it will be based on X11.
The workstation session will switch to using a Wayland compositor as soon as feasible. Until then, it will be based on X11.
Even after the switch, an X server will be included, so applications can either connect to Wayland natively, or run as an X client.
Even after the switch, an X server will be included, so applications can either connect to Wayland natively, or run as an X client.
It shall be possible to calibrate the screen for accurate color reproduction.


=== Media support ===
=== Media support ===
Line 98: Line 108:
well with this theme, as well as with the high-contrast theme that is used for accessibility. The theme will include a dark variant that applications
well with this theme, as well as with the high-contrast theme that is used for accessibility. The theme will include a dark variant that applications
can opt into using (this is most suitable for certain content-focused applications). The theme also includes an icon theme that provides named icons according to the icon-naming spec, plus symbolic variants.
can opt into using (this is most suitable for certain content-focused applications). The theme also includes an icon theme that provides named icons according to the icon-naming spec, plus symbolic variants.
We will be using the Adwaita theme, with a yet-to-be-written qt variant.


=== Application Integration ===
=== Application Integration ===
Line 107: Line 119:
=== System Installer ===
=== System Installer ===


The desired installation experience for the workstation product is to limit the pre-installation user interaction to the minimum. The storage configuration UI should be focused on the classes of hardware that are expected in workstation-class machines. Package selection is not necessary, the installer will install the workstation product as defined. Tweaks, customizations and software additions should be performed after the installation.
The desired installation experience for the workstation product is to limit the pre-installation user interaction to the minimum. The storage configuration UI should be focused on the classes of hardware that are expected in workstation-class machines. Package selection is not necessary: the installer will install the workstation product as defined. Tweaks, customizations and software additions should be performed after the installation.


One aspect of storage configuration that will be needed is support for dual-boot setups (preserving preexisting Windows or OS X installations), since e.g. students may be required to run software on those platforms for their coursework.
One aspect of storage configuration that will be needed is support for dual-boot setups (preserving preexisting Windows or OS X installations), since e.g. students may be required to run software on those platforms for their coursework.


gnome-initial-setup already provides support for post-install user creation, language selection, timezone configuration, etc. If necessary, it should be extended to cover all required setup tasks.
gnome-initial-setup already provides support for post-install user creation, language selection, timezone configuration, etc. If necessary, it should be extended to cover all required setup tasks.
=== Printing ===
cups will be available to support local and network printers.


=== Other ===
=== Other ===


TBD: containers
TBD: containers, supported languages


== Core Applications ==
== Core Applications ==
Line 151: Line 167:


* non-core, default applications ?  
* non-core, default applications ?  
* developer assistant, other developer-focused software
* other developer-focused software


== Core Package list ==
== Core Package list ==
Line 159: Line 175:
=== Package list ===
=== Package list ===


Here is the full list of packages that are installed as dependencies of
Here is the full list of packages that are installed as dependencies of the various aforementioned packages, in
systemd, gdm, gnome-shell, gtk3, orca, control-center, qt (qt5-qtbase and qt5-qtdeclarative), firewalld, gnome-boxes,
particular
gnome-terminal, firefox, gstreamer1-plugins-good
systemd,
sssd,
selinux-policy-targeted,
gdm,
gnome-shell,
gtk2,
gtk3,
orca,
control-center,
ibus,
qt4 (qt),
qt5 (qt5-qtbase and qt5-qtdeclarative),
libvirt-daemon,
gnome-boxes,
gnome-terminal,
firefox,
gedit,
gnome-software,
devassistant,
pulseaudio,
gstreamer1,
gstreamer1-plugins-good.


<pre>
<pre>
sgabios-bin
abattis-cantarell-fonts
accountsservice
accountsservice-libs
acl
adwaita-cursor-theme
adwaita-gtk2-theme
adwaita-gtk3-theme
alsa-firmware
alsa-lib
alsa-tools-firmware
argyllcms
atk
at-spi2-atk
at-spi2-atk
setup
at-spi2-core
libcgroup
audit-libs
libgusb
augeas-libs
telepathy-filesystem
authconfig
iproute
autogen-libopts
libcanberra-gtk3
avahi
heisenbug-backgrounds-gnome
avahi-autoipd
lvm2
avahi-glib
gnome-keyring
avahi-gobject
linux-firmware
avahi-libs
b43-fwcutter
b43-openfwwf
basesystem
bash
bash-completion
bc
bind-libs
bind-libs-lite
bind-license
bind-utils
binutils
bluez
bluez-libs
bluez-libs
libnm-gtk
boost-system
nss-softokn-freebl
boost-thread
totem-pl-parser
brlapi
gnome-themes-standard
ncurses-libs
numad
pyatspi
pcre
qemu-kvm
libxml2
libgovirt
gnome-session-xsession
libcom_err
tracker
realmd
shared-mime-info
libvirt-client
libsoup
p11-kit
libvirt-daemon
geoclue
libICE
libvirt-daemon-driver-secret
upower
libgcrypt
radvd
xorg-x11-server-utils
freetype
gnome-boxes
kernel
libuuid
fedora-bookmarks
libvisual
libgdata
popt
libsecret
gnome-settings-daemon
hunspell-en-US
libtalloc
libXau
brltty
brltty
libXfixes
bzip2
festival-speechtools-libs
bzip2-libs
libXdamage
festival
libXinerama
python3-gobject
libplist
libwbclient
libtool-ltdl
libunistring
libtasn1
libwnck3
nss-softokn
libgomp
mozjs24
cups-pk-helper
orc
sox
harfbuzz
flite
harfbuzz-icu
libgnomekbd
ca-certificates
ca-certificates
orca
cairo
libXxf86misc
cairo-gobject
xcb-util-renderutil
c-ares
startup-notification
qt5-qtbase-gui
acl
dbus-python
libdb-utils
iptables
desktop-file-utils
ebtables
diffutils
libnl3
mozjs17
caribou
caribou
avahi-libs
caribou-gtk2-module
yajl
caribou-gtk3-module
abattis-cantarell-fonts
cdparanoia-libs
device-mapper-event-libs
celt051
libproxy
ceph-libs
cheese-libs
chkconfig
clutter
clutter-gst2
clutter-gtk
clutter-gtk
libverto
cogl
boost-system
colord
libsamplerate
colord-gtk
gvnc
colord-libs
libxshmfence
color-filesystem
snappy
comps-extras
libthai
control-center
libee
control-center-filesystem
libXdmcp
coreutils
lzop
corosync
openssl-libs
corosynclib
nmap-ncat
cpio
cracklib
cracklib-dicts
cracklib-dicts
spice-server
cronie
libmount
cronie-anacron
crontabs
crontabs
shadow-utils
gnutls-dane
util-linux
cryptopp
cryptopp
libusbx
cryptsetup
iscsi-initiator-utils
cryptsetup-libs
cups
cups-filesystem
cups-filters
cups-filters-libs
cups-libs
cups-libs
logrotate
cups-pk-helper
curl
cyrus-sasl
cyrus-sasl-gssapi
cyrus-sasl-lib
cyrus-sasl-md5
dbus
dbus-glib
dbus-libs
dbus-python
dbus-x11
dconf
deltarpm
desktop-backgrounds-gnome
desktop-file-utils
devassistant
device-mapper
device-mapper-event
device-mapper-event-libs
device-mapper-libs
device-mapper-persistent-data
dhclient
dhcp-common
dhcp-libs
diffutils
dmidecode
dnf
dnsmasq
dosfstools
dotconf
dracut
e2fsprogs
e2fsprogs-libs
ebtables
elfutils
elfutils-libelf
elfutils-libs
emacs-filesystem
enca
enchant
epiphany-runtime
espeak
evolution-data-server
exempi
exiv2-libs
expat
fedora-bookmarks
fedora-logos
fedora-logos
glusterfs
fedora-release
curl
fedora-release-rawhide
qemu-img
festival
newt-python
festival-freebsoft-utils
qemu-common
festival-lib
openssl
festival-speechtools-libs
tcp_wrappers
festvox-slt-arctic-hts
file
file-libs
filesystem
findutils
fipscheck
fipscheck-lib
fipscheck-lib
firefox
firewalld
flac-libs
flite
fontconfig
fontpackages-filesystem
fpaste
fprintd
freerdp
freerdp-libs
freerdp-libwinpr
freetype
fuse
fuseiso
fuse-libs
fuse-libs
cryptsetup-libs
fxload
libexif
gawk
polkit
GConf2
gcr
gd
gdbm
gdisk
gdk-pixbuf2
gdm
gdm-libs
gedit
genisoimage
geoclue
geoclue2
geocode-glib
gettext
gettext-libs
gettext-libs
mesa-libEGL
ghostscript
quota
ghostscript-fonts
pango
giflib
which
git
librsvg2
libgcc
dbus-x11
fontpackages-filesystem
gtk2
filesystem
accountsservice-libs
basesystem
colord-libs
libX11-common
gcr
heisenbug-backgrounds-base
libwacom-data
dconf
mobile-broadband-provider-info
gnome-keyring-pam
hwdata
gnome-bluetooth-libs
ncurses-base
gjs
gjs
glib2
glibc
glibc-common
glibc-common
adwaita-gtk2-theme
glib-networking
libstdc++
glusterfs
glusterfs-api
glusterfs-devel
glusterfs-fuse
glusterfs-libs
glx-utils
gmime
gmp
gnome-backgrounds
gnome-bluetooth
gnome-bluetooth-libs
gnome-boxes
gnome-classic-session
gnome-color-manager
gnome-desktop3
gnome-desktop3
bash
gnome-getting-started-docs
pygobject3
gnome-icon-theme
libsepol
gnome-icon-theme-extras
libselinux
gnome-icon-theme-symbolic
dbus-libs
gnome-initial-setup
rtkit
gnome-js-common
nspr
gnome-keyring
gnome-keyring-pam
gnome-menus
gnome-online-accounts
gnome-session
gnome-session
gnome-session-xsession
gnome-settings-daemon
gnome-shell
gnome-shell-extension-alternate-tab
gnome-shell-extension-apps-menu
gnome-shell-extension-common
gnome-shell-extension-launch-new-instance
gnome-shell-extension-places-menu
gnome-shell-extension-window-list
gnome-software
gnome-terminal
gnome-themes-standard
gnome-user-docs
gnupg2
gnutls
gnutls-dane
gnutls-utils
gobject-introspection
gpgme
graphite2
grep
grilo
groff-base
grub2
grub2-tools
gsettings-desktop-schemas
gsm
gssdp
gstreamer1
gstreamer1-plugins-base
gstreamer1-plugins-good
gtk2
gtk3
gtksourceview3
gtk-vnc2
gupnp
gupnp-av
gupnp-dlna
gutenprint
gutenprint-cups
gvfs
gvfs-afc
gvfs-afp
gvfs-archive
gvfs-devel
gvfs-fuse
gvfs-goa
gvfs-gphoto2
gvfs-mtp
gvfs-smb
gvnc
gzip
hardlink
harfbuzz
harfbuzz-icu
hawkey
heisenbug-backgrounds-base
heisenbug-backgrounds-gnome
hicolor-icon-theme
hostname
hunspell
hunspell-en
hunspell-en-GB
hunspell-en-US
hwdata
ibus
ibus-chewing
ibus-gtk2
ibus-gtk3
ibus-hangul
ibus-kkc
ibus-libpinyin
ibus-libs
ibus-qt
ibus-setup
ibus-wayland
info
info
libwacom
initscripts
iproute
iptables
iptables-services
iputils
ipxe-roms-qemu
iscsi-initiator-utils
iso-codes
iwl1000-firmware
iwl100-firmware
iwl105-firmware
iwl135-firmware
iwl2000-firmware
iwl2030-firmware
iwl3160-firmware
iwl3945-firmware
iwl4965-firmware
iwl5000-firmware
iwl5150-firmware
iwl6000-firmware
iwl6000g2a-firmware
iwl6000g2b-firmware
iwl6050-firmware
iwl7260-firmware
jansson
jasper-libs
jbigkit-libs
json-c
json-glib
kbd
kbd-legacy
kbd-misc
kernel
keyutils
keyutils-libs
kmod
kmod-libs
kpartx
krb5-libs
lcms2
ldns
less
leveldb
libacl
libaio
libao
libarchive
libassuan
libasyncns
libatasmart
libattr
libavc1394
libbasicobjects
libblkid
libbluray
libcacard
libcanberra
libcanberra-gtk3
libcap
libcap-ng
libcdio
libcdio-paranoia
libcgroup
libchewing
libcollection
libcom_err
libcomps
libcroco
libcue
libcurl
libdaemon
libdb
libdb-utils
libdhash
libdmx
libdrm
libdv
libedit
libee
libestr
libevdev
libevent
libexif
libfdt
libffi
libffi
PackageKit-glib
libfontenc
glib2
libfprint
trousers
libgcc
atk
libgcrypt
glib-networking
libgdata
libwayland-client
libgee
libgee06
libgnomekbd
libgnome-keyring
libgomp
libgovirt
libgpg-error
libgphoto2
libgsf
libgtop2
libgudev1
libgusb
libgweather
libgweather
json-glib
libgxps
geocode-glib
libhangul
audit-libs
libibverbs
rest
libical
libICE
libicu
libidn
libiec61883
libimobiledevice
libini_config
libipa_hbac
libiptcdata
libiscsi
libjpeg-turbo
libkkc
libkkc-common
libkkc-data
libldb
liblouis
liblouis-python3
libmbim
libmcpp
libmediaart
libmetalink
libmng
libmnl
libmodman
libmount
libmtp
libndp
libnetfilter_conntrack
libnfnetlink
libnfsidmap
libnl3
libnl3-cli
libnm-gtk
libnotify
liboauth
libogg
libogg
libimobiledevice
libosinfo
libgpg-error
libpath_utils
kpartx
libpcap
libwayland-cursor
libpciaccess
mcpp
libpeas
libpinyin
libpinyin-data
libplist
libpng
libpng
xorg-x11-xinit
libproxy
mesa-libwayland-egl
libpwquality
dracut
libqb
libxkbcommon
libqmi
pulseaudio
libquvi
libquvi-scripts
libraw1394
librdmacm
libref_array
librepo
libreport-filesystem
librsvg2
libsamplerate
libseccomp
libsecret
libselinux
libselinux-python
libselinux-utils
libsemanage
libsepol
libshout
libSM
libSM
gnome-terminal
libsmbclient
gnome-bluetooth
libsndfile
sqlite
libsolv
libsoup
libss
libssh2
libsss_idmap
libsss_nss_idmap
libstdc++
libtalloc
libtasn1
libtdb
libteam
libtevent
libthai
libtheora
libtiff
libtirpc
libtool-ltdl
libudisks2
libunistring
libunwind
libusal
libusbx
libuser
libutempter
libuuid
libv4l
libverto
libvirt-client
libvirt-daemon
libvirt-daemon-driver-interface
libvirt-daemon-driver-network
libvirt-daemon-driver-nodedev
libvirt-daemon-driver-nwfilter
libvirt-daemon-driver-qemu
libvirt-daemon-driver-secret
libvirt-daemon-driver-storage
libvirt-daemon-kvm
libvirt-gconfig
libvirt-glib
libvirt-gobject
libvisual
libvorbis
libvpx
libvpx
gstreamer1-plugins-base
libwacom
libattr
libwacom-data
gnome-online-accounts
libwayland-client
libacl
libwayland-cursor
evolution-data-server
libwayland-server
chkconfig
libwbclient
sed
libwebkit2gtk
gdm-libs
libwebp
libvorbis
libwnck3
libnotify
libwsman1
grep
libX11
gdm
libX11-common
hunspell
libXau
hunspell-en
bzip2-libs
libtevent
libxcb
libxcb
python3
libXcomposite
libXcursor
libXdamage
libXdmcp
libXevie
libXext
libXext
brlapi
libXfixes
libXrender
libXfont
gupnp
libXft
libXi
libXi
libXcomposite
libXinerama
festvox-slt-arctic-hts
libxkbcommon
libXcursor
gupnp-av
libxkbfile
libxkbfile
python3-cairo
libxklavier
telepathy-glib
libxml2
python3-pyatspi
libXmu
mesa-libglapi
libXpm
pytalloc
libXrandr
libicu
libXrender
samba-libs
libcap-ng
libsmbclient
libtdb
wavpack
libical
libXres
libXres
libxshmfence
libxslt
libXt
libXtst
libXv
libXvMC
libXxf86dga
libXxf86misc
libXxf86vm
libXxf86vm
avahi-glib
libyaml
linux-atm-libs
linuxconsoletools
linux-firmware
llvm-libs
lockdev
logrotate
lua
lua
nm-connection-editor
lua-expat
libidn
lua-json
dotconf
lua-lpeg
kmod-libs
lua-socket
rygel
lvm2
redhat-menus
lvm2-libs
libgtop2
lyx-fonts
tcp_wrappers-libs
lzo
libao
lzop
graphite2
festival-freebsoft-utils
pixman
newt
espeak
gnome-menus
python3-speechd
p11-kit-trust
control-center
nettle
xorg-x11-xkb-utils
libXevie
xcb-util
jasper-libs
enchant
libmetalink
libxslt
cyrus-sasl-lib
libtheora
libgee
cpio
make
make
findutils
marisa
xml-common
mcpp
libxklavier
mdadm
psmisc
mesa-libEGL
lyx-fonts
mesa-libgbm
mesa-libGL
mesa-libglapi
mesa-libGLES
mesa-libwayland-egl
mesa-libxatracker
mobile-broadband-provider-info
ModemManager
ModemManager-glib
mokutil
mousetweaks
mozilla-filesystem
mozjs17
mozjs24
mpfr
mtdev
mtools
mutter
mutter-wayland
nautilus
nautilus-extensions
ncurses
ncurses
libmodman
ncurses-base
libpciaccess
ncurses-libs
json-c
netcf-libs
gdbm
net-snmp-libs
libsndfile
nettle
qrencode-libs
NetworkManager
speex
NetworkManager-glib
jbigkit-libs
NetworkManager-openvpn
gdk-pixbuf2
NetworkManager-vpnc
sbc
newt
cdparanoia-libs
newt-python
ustr
nfs-utils
krb5-libs
nmap-ncat
nm-connection-editor
nspr
nss
nss-softokn
nss-softokn-freebl
nss-sysinit
nss-tools
nss-tools
cracklib
nss-util
ntfs-3g
ntfsprogs
numactl-libs
numad
opencc
openjpeg-libs
openldap
openldap
libpwquality
openssh
libuser
openssh-clients
coreutils
openssl
openssl-libs
openvpn
opus
orc
orca
os-prober
p11-kit
p11-kit-trust
PackageKit
PackageKit-glib
PackageKit-gtk3-module
pam
pam
libutempter
pango
nss-sysinit
parted
pciutils
pciutils-libs
pcre
pcsc-lite-libs
perl
perl-Carp
perl-constant
perl-Encode
perl-Error
perl-Exporter
perl-File-Path
perl-File-Temp
perl-Filter
perl-Getopt-Long
perl-Git
perl-HTTP-Tiny
perl-libs
perl-macros
perl-Module-CoreList
perl-parent
perl-PathTools
perl-Pod-Escapes
perl-podlators
perl-Pod-Perldoc
perl-Pod-Simple
perl-Pod-Usage
perl-Scalar-List-Utils
perl-Socket
perl-Storable
perl-TermReadKey
perl-Text-ParseWords
perl-threads
perl-threads-shared
perl-Time-HiRes
perl-Time-Local
perl-version
pinentry
pixman
pkcs11-helper
pkgconfig
plymouth
plymouth-core-libs
plymouth-graphics-libs
plymouth-plugin-label
plymouth-plugin-two-step
plymouth-scripts
plymouth-theme-charge
pm-utils
policycoreutils
polkit
polkit-pkla-compat
poppler
poppler-data
poppler-glib
poppler-utils
popt
ppp
procps-ng
psmisc
pth
pulseaudio
pulseaudio-gdm-hooks
pulseaudio-libs
pulseaudio-libs
alsa-lib
gnome-icon-theme
pulseaudio-libs-glib2
pulseaudio-libs-glib2
pulseaudio-module-bluetooth
pyatspi
pycairo
pygobject3
pygobject3-base
pytalloc
python
python
libssh2
python3
liboauth
python3-brlapi
rpm-libs
python3-cairo
color-filesystem
python3-gobject
pygobject3-base
python3-libs
libXft
python3-pyatspi
authconfig
python3-speechd
procps-ng
python-babel
fipscheck
python-backports
device-mapper-libs
python-backports-ssl_match_hostname
systemd
python-caribou
libgudev1
python-decorator
polkit-pkla-compat
python-hawkey
mesa-libgbm
python-iniparse
libcanberra
python-jinja2
cairo
python-libcomps
cairo-gobject
python-librepo
NetworkManager-glib
python-libs
fuseiso
python-markupsafe
seabios-bin
python-PyGithub
cyrus-sasl-md5
python-setuptools
seavgabios-bin
python-six
linux-atm-libs
python-slip
libcue
python-slip-dbus
device-mapper-persistent-data
python-sssdconfig
net-snmp-libs
PyYAML
corosynclib
qemu-common
lua-socket
qemu-img
libquvi
qemu-kvm
kbd-legacy
initscripts
cyrus-sasl
qemu-system-x86
qemu-system-x86
sheepdog
qpdf-libs
pm-utils
qrencode-libs
poppler-data
qt
poppler-glib
bzip2
gnutls-utils
libvirt-glib
dmidecode
libvirt-daemon-driver-nodedev
libvirt-daemon-driver-interface
libvirt-daemon-driver-storage
libdaemon
libvirt-daemon-driver-network
libvirt-daemon-kvm
cheese-libs
liblouis-python3
qt5-qtbase
qt5-qtbase
xcb-util-image
qt5-qtbase-gui
xcb-util-wm
mesa-libGLES
qt5-qtdeclarative
qt5-qtdeclarative
python-six
qt5-qtxmlpatterns
python-decorator
qt-settings
libnetfilter_conntrack
qt-x11
libselinux-python
quota
python-slip-dbus
firewalld
clutter
caribou-gtk2-module
python-caribou
libiscsi
numactl-libs
usbredir
libibverbs
libpcap
mutter
libevent
iptables-services
libvirt-gconfig
libosinfo
lzo
libtirpc
libwsman1
libestr
leveldb
libgxps
gtk-vnc2
mutter-wayland
ldns
lvm2-libs
clutter-gst2
fedora-release-rawhide
cronie
unbound-libs
libseccomp
dnsmasq
ceph-libs
quota-nls
quota-nls
lua-lpeg
radvd
libusal
readline
realmd
redhat-menus
rest
rpcbind
rpm
rpm-build-libs
rpm-libs
rpm-python
rsync
rsyslog
rsyslog
glusterfs-libs
rsyslog-mmjsonparse
glusterfs-fuse
rtkit
glusterfs-api
rygel
libcacard
samba-common
samba-libs
sbc
SDL
seabios-bin
seavgabios-bin
sed
seed
selinux-policy
selinux-policy-targeted
setup
sgabios-bin
shadow-utils
shared-mime-info
sheepdog
shim
shim-unsigned
skkdic
slang
snappy
sound-theme-freedesktop
sox
speech-dispatcher
speex
spice-glib
spice-gtk3
spice-gtk3
file-libs
spice-server
ipxe-roms-qemu
sqlite
augeas-libs
sssd
exempi
sssd-ad
SDL
sssd-client
parted
sssd-common
giflib
sssd-common-pac
gmime
sssd-ipa
gettext
sssd-krb5
e2fsprogs-libs
sssd-krb5-common
libiptcdata
sssd-ldap
nfs-utils
sssd-proxy
fuse
startup-notification
at-spi2-core
sudo
control-center-filesystem
systemd
libfdt
systemd-libs
accountsservice
taglib
tar
tcp_wrappers
tcp_wrappers-libs
teamd
telepathy-filesystem
telepathy-glib
telepathy-logger
totem-pl-parser
tracker
trousers
ttmkfdir
tzdata
tzdata
enca
udisks2
gtk3
unbound-libs
adwaita-cursor-theme
unzip
lua-expat
upower
bluez
urw-fonts
mozilla-filesystem
usbmuxd
corosync
usbredir
adwaita-gtk3-theme
ustr
emacs-filesystem
util-linux
libquvi-scripts
vim-minimal
colord
vino
glibc
vpnc
hostname
vpnc-script
pycairo
xz-libs
vte3
vte3
zlib
wavpack
kbd
GConf2
nss-util
poppler
ibus-libs
pkgconfig
autogen-libopts
gnutls
gobject-introspection
libvirt-gobject
geoclue2
libwayland-server
libvirt-daemon-driver-nwfilter
usbmuxd
libdb
mtools
libmcpp
gsettings-desktop-schemas
libvirt-daemon-driver-qemu
hardlink
expat
gnome-shell
pulseaudio-module-bluetooth
readline
firefox
webkitgtk3
webkitgtk3
libcap
webrtc-audio-processing
zenity
which
dbus-glib
wpa_supplicant
gstreamer1
xcb-util
pulseaudio-gdm-hooks
xcb-util-image
libjpeg-turbo
xcb-util-keysyms
python3-libs
xcb-util-renderutil
libX11
xcb-util-wm
gssdp
xdg-user-dirs
libXrandr
xdg-user-dirs-gtk
festival-lib
xfsprogs
libXtst
xkeyboard-config
python3-brlapi
xml-common
libXt
xorg-x11-drv-ati
libldb
xorg-x11-drv-evdev
gmp
xorg-x11-drv-fbdev
samba-common
xorg-x11-drv-intel
lcms2
xorg-x11-drv-mga
glx-utils
xorg-x11-drv-modesetting
libXmu
xorg-x11-drv-nouveau
vino
xorg-x11-drv-openchrome
libcroco
xorg-x11-drv-qxl
gupnp-dlna
xorg-x11-drv-synaptics
kmod
xorg-x11-drv-vesa
colord-gtk
xorg-x11-drv-vmmouse
elfutils-libelf
xorg-x11-drv-vmware
slang
xorg-x11-drv-wacom
speech-dispatcher
xorg-x11-fonts-Type1
xorg-x11-font-utils
xorg-x11-glamor
xorg-x11-server-common
xorg-x11-server-utils
xorg-x11-server-Xorg
xorg-x11-utils
xorg-x11-xauth
xorg-x11-xauth
liblouis
xorg-x11-xinit
telepathy-logger
xorg-x11-xkb-utils
qt5-qtxmlpatterns
libXv
xcb-util-keysyms
hunspell-en-GB
libnfnetlink
desktop-backgrounds-gnome
libmnl
flac-libs
python-slip
ModemManager-glib
libevdev
gawk
caribou-gtk3-module
iso-codes
libaio
xz
xz
celt051
xz-libs
webrtc-audio-processing
yajl
librdmacm
zenity
libasyncns
zlib
openjpeg-libs
gsm
opus
keyutils-libs
libarchive
libtiff
libqb
libwebp
rpcbind
libsemanage
boost-thread
gzip
device-mapper-event
systemd-libs
fedora-release
nss
cronie-anacron
libblkid
kbd-misc
fontconfig
libgsf
hicolor-icon-theme
lua-json
python-libs
rsyslog-mmjsonparse
libcurl
glusterfs-devel
rpm
spice-glib
gnome-icon-theme-symbolic
genisoimage
sound-theme-freedesktop
netcf-libs
device-mapper
libnfsidmap
dbus
iputils
libdrm
taglib
mesa-libGL
keyutils
cogl
libdv
gstreamer1-plugins-good
libshout
libv4l
libiec61883
libavc1394
libraw1394
</pre>
</pre>


=== TODOS ===
=== TODO ===


* do we need to pin down versions ?
* Add fonts, non-core applicatoins
* add vpn packages
* Do we need to pin down versions ?


=== Policies for software add-ons ===
=== Policies for software add-ons ===
Line 755: Line 1,098:


* It must be possible to remove optional software from the system again
* It must be possible to remove optional software from the system again
== Installation methods and media ==
We will produce a live .iso image. The primary target for this image will be USB sticks, but the ability to burn the image to a DVD should be preserved (since we are still getting regular requests for such media). There is no pressing reason to restrict the image to the current 1GB size target. Persistence is not an important feature of the live media, whose primary focus should be to install the system.
gnome-disks can create USB sticks on Fedora, and liveusb-creator is the tool we have to let people create USB sticks on Windows or Linux. Both of these tools may need to be extended with support for EFI (whatever that means in detail).
== Hardware requirements ==
We expect to support 64bit machines with suitable graphics and display resolutions. High-resolution displays, touchscreens and wacom tablets are
interesting hardware for some workstation use cases and should be supported in the future.
These hardware requirements are not meant to prevent the workstation product from running on other systems, but rather to determine the range of hardware that we will focus on with QA, and when it comes to determining release blockers.


== Engineering Roadmap ==
== Engineering Roadmap ==


Not sure if we want this section here or if we should just make this a pure description document and put the implementation roadmap in a separate document.
Not sure if we want this section here or if we should just make this a pure description document and put the implementation roadmap in a separate document.

Revision as of 16:25, 27 April 2016

Fedora Workstation Technical Specification

This document aims to describe the technical characteristics Fedora Workstation product in detail. This includes provided services and APIs, installed software, etc. Some of the desired characteristics may not be entirely achievable in the first version of the Workstation product, and will be approximated.

The content of the spec unavoidably overlaps with the work of the Base Working Group, and needs to be aligned with their deliverables.

Core Services and Features

This section should describe the core services of the platform and their intended use. The items here should refer back to the PRD for a functional justification.

File system

The default file system type for workstation installs should be btrfs. Until btrfs is considered ready for this role, we will stay with the current setup of the desktop spin.

Service management

Systemd provides ways to control and monitor the activity and status of system services, resources they require, etc. System services are expected to provide systemd units. See the systemd documentation.

Logging

The systemd journal will be used as the local storage backend for system logs. For 'managed' scenarios (e.g the 'developer in a large organization' use case of the PRD), it will be possible to collect the logs in a centralized location, off the local machine.

Applications and services can either use the syslog API or the journal APIs for their logging. See the journal API documentation.

Networking

Network devices and connections will be controlled by NetworkManager. This includes support for VPN, which is relevant for 'corporate' scenarios. Applications are advised to use higher-level APIs (such as GNetworkMonitor in GIO) to monitor online status.

Firewall

A firewall in its default configuration may not interfere with the normal operation of programs installed by default.

We should detect when the system is on a public or untrusted network and prevent the user from unwanted sharing of e.g. music or other media in this situation. A firewall (and network zones as currently implemented by firewalld) may or may not be part of a solution to this.

SELinux

SELinux will be enabled in enforcing mode, using the targeted policy.

Problem reporting

Problems and error conditions (e.g. kernel oopses, Selinux AVCs, application crashes, OOM, disk errors) should all be reported in the systemd journal.

Sending this information to a central place (like abrt does for crashes today) should be possible, but not mandatory. Depending on the use case, it may be turned off, enabled manually on a case-by-case basis, or entirely automatic without user intervention.

Session tracking

Logind will be used as the session tracking facility.

Applications that need to interact with sessions can use the logind library API, the D-Bus API, or a higher-level API

Account handling

SSSD is providing the backing storage for identity management. For 'managed' scenarios (e.g. the 'developer in a large organization' use case of the PRD), it will be possible to configure it to rely on a directory service for this information. The accountsservice is providing a D-Bus interface for user account information; this may be integrated into SSSD at some point.

Depending on their needs, application and services can either use the POSIX APIs (getpwent(), etc) or the accountsservice D-Bus interface to obtain user information.

Software updates

gnome-software will use PackageKit with the hawkey backend to obtain and install software updates for packaged applications and the OS itself. The recommendation for applications is to use the PackageKit APIs to interact with the underlying packaging system.

Miscellaneous system information

System locale, timezone, hostname, etc. will be managed through the services provided by systemd for this purpose. See developer documentation for localed, timedated and hostnamed

Virtualization

libvirt-daemon will be used to manage virtualization capabilities.

Display manager

gdm will be used as the display manager. It is responsible for showing a login screen on each seat. It will be able to launch both X-based sessions and Wayland sessions.

Desktop environments are expected to make themselves known as an available session option on the login screen by dropping a .desktop file into /usr/share/xsessions (or its wayland equivalent).

Other facilities provided by the display manager include screen unlock authentication and user switching.

Accessibility

The accessibility support in the workstation includes a screen reader, a high-contrast theme and a zoom capability, amongst others. The screen reading is provided through orca, which runs as a session service and requires the at-spi infrastructure. Applications are expected to provide suitable information to the screen reader via the toolkit's accessibility support. Applications are also expected to work acceptably in the high-contrast theme. The zoom is implemented in the desktop shell and does not need any application support.

Input Methods

The input method framework on the workstation is provided by ibus. Input methods and keyboard layouts can be configured in the control-center, and selected in shell keyboard menu. The supported application toolkits all support ibus.

Graphics

The workstation session will switch to using a Wayland compositor as soon as feasible. Until then, it will be based on X11. Even after the switch, an X server will be included, so applications can either connect to Wayland natively, or run as an X client.

It shall be possible to calibrate the screen for accurate color reproduction.

Media support

Sound hardware and audio streams will be managed by pulseaudio. Applications are recommended to use the gstreamer framework for media playback.

Appearance

The workstation will ship with a single theme, which will have support for the included toolkits: gtk3, qt and gtk2. Applications are expected to work well with this theme, as well as with the high-contrast theme that is used for accessibility. The theme will include a dark variant that applications can opt into using (this is most suitable for certain content-focused applications). The theme also includes an icon theme that provides named icons according to the icon-naming spec, plus symbolic variants.

We will be using the Adwaita theme, with a yet-to-be-written qt variant.

Application Integration

Installed applications are expected to install a desktop file in /usr/share/applications and an application icon in the hicolor icon theme.

Packaged applications are also expected to provide appdata for use in the application installer.

System Installer

The desired installation experience for the workstation product is to limit the pre-installation user interaction to the minimum. The storage configuration UI should be focused on the classes of hardware that are expected in workstation-class machines. Package selection is not necessary: the installer will install the workstation product as defined. Tweaks, customizations and software additions should be performed after the installation.

One aspect of storage configuration that will be needed is support for dual-boot setups (preserving preexisting Windows or OS X installations), since e.g. students may be required to run software on those platforms for their coursework.

gnome-initial-setup already provides support for post-install user creation, language selection, timezone configuration, etc. If necessary, it should be extended to cover all required setup tasks.

Printing

cups will be available to support local and network printers.

Other

TBD: containers, supported languages

Core Applications

Core applications are part of the Workstation product and can not be removed.

Applications can depend on any services that are listed above, and can assume that all of the packages listed below are present on the system. They can not require other applications to be installed.

Application installer

gnome-software will serve as graphical application installer, offering to install and remove applications, system extensions and add-ons (such as fonts, or codecs) and other optional software. To be presented in the application installer, applications need to provide appdata.

Web Browser

firefox will be used as the web browser.

Terminal emulator

gnome-terminal will be installed as a terminal emulator. More powerful options, such as terminator, can be investigated.

Text Editor

gedit will be installed as a simple text editor.

File Manager

nautilus will be installed as a file manager.

Virtualization frontend

gnome-boxes will be available for the creation and use of vms, as well as for connecting to remote systems, e.g. ovirt.

TODO

  • non-core, default applications ?
  • other developer-focused software

Core Package list

List the core packages of the product. This list includes all packages that will be shipping on the core media. This is the mandatory minimal list of packages that needs to be installed on a system at all times for it to qualify as a Fedora workstation install. This package list will be the priority focus for QA and bug fixing.

Package list

Here is the full list of packages that are installed as dependencies of the various aforementioned packages, in particular systemd, sssd, selinux-policy-targeted, gdm, gnome-shell, gtk2, gtk3, orca, control-center, ibus, qt4 (qt), qt5 (qt5-qtbase and qt5-qtdeclarative), libvirt-daemon, gnome-boxes, gnome-terminal, firefox, gedit, gnome-software, devassistant, pulseaudio, gstreamer1, gstreamer1-plugins-good.

abattis-cantarell-fonts
accountsservice
accountsservice-libs
acl
adwaita-cursor-theme
adwaita-gtk2-theme
adwaita-gtk3-theme
alsa-firmware
alsa-lib
alsa-tools-firmware
argyllcms
atk
at-spi2-atk
at-spi2-core
audit-libs
augeas-libs
authconfig
autogen-libopts
avahi
avahi-autoipd
avahi-glib
avahi-gobject
avahi-libs
b43-fwcutter
b43-openfwwf
basesystem
bash
bash-completion
bc
bind-libs
bind-libs-lite
bind-license
bind-utils
binutils
bluez
bluez-libs
boost-system
boost-thread
brlapi
brltty
bzip2
bzip2-libs
ca-certificates
cairo
cairo-gobject
c-ares
caribou
caribou-gtk2-module
caribou-gtk3-module
cdparanoia-libs
celt051
ceph-libs
cheese-libs
chkconfig
clutter
clutter-gst2
clutter-gtk
cogl
colord
colord-gtk
colord-libs
color-filesystem
comps-extras
control-center
control-center-filesystem
coreutils
corosync
corosynclib
cpio
cracklib
cracklib-dicts
cronie
cronie-anacron
crontabs
cryptopp
cryptsetup
cryptsetup-libs
cups
cups-filesystem
cups-filters
cups-filters-libs
cups-libs
cups-pk-helper
curl
cyrus-sasl
cyrus-sasl-gssapi
cyrus-sasl-lib
cyrus-sasl-md5
dbus
dbus-glib
dbus-libs
dbus-python
dbus-x11
dconf
deltarpm
desktop-backgrounds-gnome
desktop-file-utils
devassistant
device-mapper
device-mapper-event
device-mapper-event-libs
device-mapper-libs
device-mapper-persistent-data
dhclient
dhcp-common
dhcp-libs
diffutils
dmidecode
dnf
dnsmasq
dosfstools
dotconf
dracut
e2fsprogs
e2fsprogs-libs
ebtables
elfutils
elfutils-libelf
elfutils-libs
emacs-filesystem
enca
enchant
epiphany-runtime
espeak
evolution-data-server
exempi
exiv2-libs
expat
fedora-bookmarks
fedora-logos
fedora-release
fedora-release-rawhide
festival
festival-freebsoft-utils
festival-lib
festival-speechtools-libs
festvox-slt-arctic-hts
file
file-libs
filesystem
findutils
fipscheck
fipscheck-lib
firefox
firewalld
flac-libs
flite
fontconfig
fontpackages-filesystem
fpaste
fprintd
freerdp
freerdp-libs
freerdp-libwinpr
freetype
fuse
fuseiso
fuse-libs
fxload
gawk
GConf2
gcr
gd
gdbm
gdisk
gdk-pixbuf2
gdm
gdm-libs
gedit
genisoimage
geoclue
geoclue2
geocode-glib
gettext
gettext-libs
ghostscript
ghostscript-fonts
giflib
git
gjs
glib2
glibc
glibc-common
glib-networking
glusterfs
glusterfs-api
glusterfs-devel
glusterfs-fuse
glusterfs-libs
glx-utils
gmime
gmp
gnome-backgrounds
gnome-bluetooth
gnome-bluetooth-libs
gnome-boxes
gnome-classic-session
gnome-color-manager
gnome-desktop3
gnome-getting-started-docs
gnome-icon-theme
gnome-icon-theme-extras
gnome-icon-theme-symbolic
gnome-initial-setup
gnome-js-common
gnome-keyring
gnome-keyring-pam
gnome-menus
gnome-online-accounts
gnome-session
gnome-session-xsession
gnome-settings-daemon
gnome-shell
gnome-shell-extension-alternate-tab
gnome-shell-extension-apps-menu
gnome-shell-extension-common
gnome-shell-extension-launch-new-instance
gnome-shell-extension-places-menu
gnome-shell-extension-window-list
gnome-software
gnome-terminal
gnome-themes-standard
gnome-user-docs
gnupg2
gnutls
gnutls-dane
gnutls-utils
gobject-introspection
gpgme
graphite2
grep
grilo
groff-base
grub2
grub2-tools
gsettings-desktop-schemas
gsm
gssdp
gstreamer1
gstreamer1-plugins-base
gstreamer1-plugins-good
gtk2
gtk3
gtksourceview3
gtk-vnc2
gupnp
gupnp-av
gupnp-dlna
gutenprint
gutenprint-cups
gvfs
gvfs-afc
gvfs-afp
gvfs-archive
gvfs-devel
gvfs-fuse
gvfs-goa
gvfs-gphoto2
gvfs-mtp
gvfs-smb
gvnc
gzip
hardlink
harfbuzz
harfbuzz-icu
hawkey
heisenbug-backgrounds-base
heisenbug-backgrounds-gnome
hicolor-icon-theme
hostname
hunspell
hunspell-en
hunspell-en-GB
hunspell-en-US
hwdata
ibus
ibus-chewing
ibus-gtk2
ibus-gtk3
ibus-hangul
ibus-kkc
ibus-libpinyin
ibus-libs
ibus-qt
ibus-setup
ibus-wayland
info
initscripts
iproute
iptables
iptables-services
iputils
ipxe-roms-qemu
iscsi-initiator-utils
iso-codes
iwl1000-firmware
iwl100-firmware
iwl105-firmware
iwl135-firmware
iwl2000-firmware
iwl2030-firmware
iwl3160-firmware
iwl3945-firmware
iwl4965-firmware
iwl5000-firmware
iwl5150-firmware
iwl6000-firmware
iwl6000g2a-firmware
iwl6000g2b-firmware
iwl6050-firmware
iwl7260-firmware
jansson
jasper-libs
jbigkit-libs
json-c
json-glib
kbd
kbd-legacy
kbd-misc
kernel
keyutils
keyutils-libs
kmod
kmod-libs
kpartx
krb5-libs
lcms2
ldns
less
leveldb
libacl
libaio
libao
libarchive
libassuan
libasyncns
libatasmart
libattr
libavc1394
libbasicobjects
libblkid
libbluray
libcacard
libcanberra
libcanberra-gtk3
libcap
libcap-ng
libcdio
libcdio-paranoia
libcgroup
libchewing
libcollection
libcom_err
libcomps
libcroco
libcue
libcurl
libdaemon
libdb
libdb-utils
libdhash
libdmx
libdrm
libdv
libedit
libee
libestr
libevdev
libevent
libexif
libfdt
libffi
libfontenc
libfprint
libgcc
libgcrypt
libgdata
libgee
libgee06
libgnomekbd
libgnome-keyring
libgomp
libgovirt
libgpg-error
libgphoto2
libgsf
libgtop2
libgudev1
libgusb
libgweather
libgxps
libhangul
libibverbs
libical
libICE
libicu
libidn
libiec61883
libimobiledevice
libini_config
libipa_hbac
libiptcdata
libiscsi
libjpeg-turbo
libkkc
libkkc-common
libkkc-data
libldb
liblouis
liblouis-python3
libmbim
libmcpp
libmediaart
libmetalink
libmng
libmnl
libmodman
libmount
libmtp
libndp
libnetfilter_conntrack
libnfnetlink
libnfsidmap
libnl3
libnl3-cli
libnm-gtk
libnotify
liboauth
libogg
libosinfo
libpath_utils
libpcap
libpciaccess
libpeas
libpinyin
libpinyin-data
libplist
libpng
libproxy
libpwquality
libqb
libqmi
libquvi
libquvi-scripts
libraw1394
librdmacm
libref_array
librepo
libreport-filesystem
librsvg2
libsamplerate
libseccomp
libsecret
libselinux
libselinux-python
libselinux-utils
libsemanage
libsepol
libshout
libSM
libsmbclient
libsndfile
libsolv
libsoup
libss
libssh2
libsss_idmap
libsss_nss_idmap
libstdc++
libtalloc
libtasn1
libtdb
libteam
libtevent
libthai
libtheora
libtiff
libtirpc
libtool-ltdl
libudisks2
libunistring
libunwind
libusal
libusbx
libuser
libutempter
libuuid
libv4l
libverto
libvirt-client
libvirt-daemon
libvirt-daemon-driver-interface
libvirt-daemon-driver-network
libvirt-daemon-driver-nodedev
libvirt-daemon-driver-nwfilter
libvirt-daemon-driver-qemu
libvirt-daemon-driver-secret
libvirt-daemon-driver-storage
libvirt-daemon-kvm
libvirt-gconfig
libvirt-glib
libvirt-gobject
libvisual
libvorbis
libvpx
libwacom
libwacom-data
libwayland-client
libwayland-cursor
libwayland-server
libwbclient
libwebkit2gtk
libwebp
libwnck3
libwsman1
libX11
libX11-common
libXau
libxcb
libXcomposite
libXcursor
libXdamage
libXdmcp
libXevie
libXext
libXfixes
libXfont
libXft
libXi
libXinerama
libxkbcommon
libxkbfile
libxklavier
libxml2
libXmu
libXpm
libXrandr
libXrender
libXres
libxshmfence
libxslt
libXt
libXtst
libXv
libXvMC
libXxf86dga
libXxf86misc
libXxf86vm
libyaml
linux-atm-libs
linuxconsoletools
linux-firmware
llvm-libs
lockdev
logrotate
lua
lua-expat
lua-json
lua-lpeg
lua-socket
lvm2
lvm2-libs
lyx-fonts
lzo
lzop
make
marisa
mcpp
mdadm
mesa-libEGL
mesa-libgbm
mesa-libGL
mesa-libglapi
mesa-libGLES
mesa-libwayland-egl
mesa-libxatracker
mobile-broadband-provider-info
ModemManager
ModemManager-glib
mokutil
mousetweaks
mozilla-filesystem
mozjs17
mozjs24
mpfr
mtdev
mtools
mutter
mutter-wayland
nautilus
nautilus-extensions
ncurses
ncurses-base
ncurses-libs
netcf-libs
net-snmp-libs
nettle
NetworkManager
NetworkManager-glib
NetworkManager-openvpn
NetworkManager-vpnc
newt
newt-python
nfs-utils
nmap-ncat
nm-connection-editor
nspr
nss
nss-softokn
nss-softokn-freebl
nss-sysinit
nss-tools
nss-util
ntfs-3g
ntfsprogs
numactl-libs
numad
opencc
openjpeg-libs
openldap
openssh
openssh-clients
openssl
openssl-libs
openvpn
opus
orc
orca
os-prober
p11-kit
p11-kit-trust
PackageKit
PackageKit-glib
PackageKit-gtk3-module
pam
pango
parted
pciutils
pciutils-libs
pcre
pcsc-lite-libs
perl
perl-Carp
perl-constant
perl-Encode
perl-Error
perl-Exporter
perl-File-Path
perl-File-Temp
perl-Filter
perl-Getopt-Long
perl-Git
perl-HTTP-Tiny
perl-libs
perl-macros
perl-Module-CoreList
perl-parent
perl-PathTools
perl-Pod-Escapes
perl-podlators
perl-Pod-Perldoc
perl-Pod-Simple
perl-Pod-Usage
perl-Scalar-List-Utils
perl-Socket
perl-Storable
perl-TermReadKey
perl-Text-ParseWords
perl-threads
perl-threads-shared
perl-Time-HiRes
perl-Time-Local
perl-version
pinentry
pixman
pkcs11-helper
pkgconfig
plymouth
plymouth-core-libs
plymouth-graphics-libs
plymouth-plugin-label
plymouth-plugin-two-step
plymouth-scripts
plymouth-theme-charge
pm-utils
policycoreutils
polkit
polkit-pkla-compat
poppler
poppler-data
poppler-glib
poppler-utils
popt
ppp
procps-ng
psmisc
pth
pulseaudio
pulseaudio-gdm-hooks
pulseaudio-libs
pulseaudio-libs-glib2
pulseaudio-module-bluetooth
pyatspi
pycairo
pygobject3
pygobject3-base
pytalloc
python
python3
python3-brlapi
python3-cairo
python3-gobject
python3-libs
python3-pyatspi
python3-speechd
python-babel
python-backports
python-backports-ssl_match_hostname
python-caribou
python-decorator
python-hawkey
python-iniparse
python-jinja2
python-libcomps
python-librepo
python-libs
python-markupsafe
python-PyGithub
python-setuptools
python-six
python-slip
python-slip-dbus
python-sssdconfig
PyYAML
qemu-common
qemu-img
qemu-kvm
qemu-system-x86
qpdf-libs
qrencode-libs
qt
qt5-qtbase
qt5-qtbase-gui
qt5-qtdeclarative
qt5-qtxmlpatterns
qt-settings
qt-x11
quota
quota-nls
radvd
readline
realmd
redhat-menus
rest
rpcbind
rpm
rpm-build-libs
rpm-libs
rpm-python
rsync
rsyslog
rsyslog-mmjsonparse
rtkit
rygel
samba-common
samba-libs
sbc
SDL
seabios-bin
seavgabios-bin
sed
seed
selinux-policy
selinux-policy-targeted
setup
sgabios-bin
shadow-utils
shared-mime-info
sheepdog
shim
shim-unsigned
skkdic
slang
snappy
sound-theme-freedesktop
sox
speech-dispatcher
speex
spice-glib
spice-gtk3
spice-server
sqlite
sssd
sssd-ad
sssd-client
sssd-common
sssd-common-pac
sssd-ipa
sssd-krb5
sssd-krb5-common
sssd-ldap
sssd-proxy
startup-notification
sudo
systemd
systemd-libs
taglib
tar
tcp_wrappers
tcp_wrappers-libs
teamd
telepathy-filesystem
telepathy-glib
telepathy-logger
totem-pl-parser
tracker
trousers
ttmkfdir
tzdata
udisks2
unbound-libs
unzip
upower
urw-fonts
usbmuxd
usbredir
ustr
util-linux
vim-minimal
vino
vpnc
vpnc-script
vte3
wavpack
webkitgtk3
webrtc-audio-processing
which
wpa_supplicant
xcb-util
xcb-util-image
xcb-util-keysyms
xcb-util-renderutil
xcb-util-wm
xdg-user-dirs
xdg-user-dirs-gtk
xfsprogs
xkeyboard-config
xml-common
xorg-x11-drv-ati
xorg-x11-drv-evdev
xorg-x11-drv-fbdev
xorg-x11-drv-intel
xorg-x11-drv-mga
xorg-x11-drv-modesetting
xorg-x11-drv-nouveau
xorg-x11-drv-openchrome
xorg-x11-drv-qxl
xorg-x11-drv-synaptics
xorg-x11-drv-vesa
xorg-x11-drv-vmmouse
xorg-x11-drv-vmware
xorg-x11-drv-wacom
xorg-x11-fonts-Type1
xorg-x11-font-utils
xorg-x11-glamor
xorg-x11-server-common
xorg-x11-server-utils
xorg-x11-server-Xorg
xorg-x11-utils
xorg-x11-xauth
xorg-x11-xinit
xorg-x11-xkb-utils
xz
xz-libs
yajl
zenity
zlib

TODO

  • Add fonts, non-core applicatoins
  • Do we need to pin down versions ?

Policies for software add-ons

General rules and policies for how extra software is installed and what requirements are put on that software.

  • Optional software must not interfere with the regular functionality of mandatory components. E.g. installing optional audio software must not prevent other applications from using pulseaudio and gstreamer for media playback.
  • Optional software should integrate properly into the defined extension points of the OS:
    • Applications should provide desktop files and icons
    • Applications should provide appdata (link?) for the software installer
    • System services should provide systemd units
    • Desktop environments should provide a desktop file in /usr/share/xsessions
  • It must be possible to remove optional software from the system again

Installation methods and media

We will produce a live .iso image. The primary target for this image will be USB sticks, but the ability to burn the image to a DVD should be preserved (since we are still getting regular requests for such media). There is no pressing reason to restrict the image to the current 1GB size target. Persistence is not an important feature of the live media, whose primary focus should be to install the system.

gnome-disks can create USB sticks on Fedora, and liveusb-creator is the tool we have to let people create USB sticks on Windows or Linux. Both of these tools may need to be extended with support for EFI (whatever that means in detail).

Hardware requirements

We expect to support 64bit machines with suitable graphics and display resolutions. High-resolution displays, touchscreens and wacom tablets are interesting hardware for some workstation use cases and should be supported in the future.

These hardware requirements are not meant to prevent the workstation product from running on other systems, but rather to determine the range of hardware that we will focus on with QA, and when it comes to determining release blockers.

Engineering Roadmap

Not sure if we want this section here or if we should just make this a pure description document and put the implementation roadmap in a separate document.