From Fedora Project Wiki

Fedora Workstation Technical Specification

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.

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.

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.

Session tracking

Logind will be used as the session tracking facility.

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.

Miscellaneous system information

System locale, timezone, hostname, etc. will be managed through the services provided by systemd for this purpose.

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.

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.

Application Integration

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

Other

TBD: networking, firewall, media support, geolocation

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

systemd, gdm, gnome-shell, gtk3, orca, control-center, qt plus their dependencies

Here is the full list of packages that are installed as dependencies of systemd, gdm, gnome-shell, gtk3, orca, control-center: (FIXME: figure out what qt packages need to added)

at-spi2-atk
setup
libgusb
telepathy-filesystem
libcanberra-gtk3
heisenbug-backgrounds-gnome
gnome-keyring
linux-firmware
libnm-gtk
nss-softokn-freebl
gnome-themes-standard
ncurses-libs
pyatspi
pcre
caribou
libxml2
gnome-session-xsession
libcom_err
realmd
shared-mime-info
libsoup
p11-kit
geoclue
libICE
upower
libgcrypt
xorg-x11-server-utils
freetype
kernel
libuuid
libvisual
libevdev
libgdata
popt
mutter-wayland
libsecret
gnome-settings-daemon
hunspell-en-US
libtalloc
libXau
brltty
libXfixes
festival-speechtools-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
orca
libXxf86misc
startup-notification
acl
libdb-utils
desktop-file-utils
diffutils
mozjs17
avahi-libs
abattis-cantarell-fonts
libproxy
libverto
libsamplerate
libxshmfence
libthai
libXdmcp
openssl-libs
cracklib-dicts
libmount
shadow-utils
util-linux
libusbx
cups-libs
fedora-logos
curl
newt-python
openssl
fipscheck-lib
cryptsetup-libs
polkit
mesa-libEGL
pango
librsvg2
libgcc
dbus-x11
fontpackages-filesystem
gtk2
filesystem
accountsservice-libs
basesystem
colord-libs
libX11-common
gcr
heisenbug-backgrounds-base
clutter
libwacom-data
dconf
mobile-broadband-provider-info
gnome-keyring-pam
hwdata
gnome-bluetooth-libs
ncurses-base
gjs
glibc-common
adwaita-gtk2-theme
libstdc++
gnome-desktop3
bash
pygobject3
libsepol
caribou-gtk3-module
libselinux
python-caribou
dbus-libs
rtkit
nspr
gnome-session
info
libwacom
libffi
PackageKit-glib
glib2
trousers
atk
glib-networking
libwayland-client
libgweather
json-glib
geocode-glib
audit-libs
rest
libogg
libimobiledevice
libgpg-error
kpartx
libwayland-cursor
mcpp
libpng
xorg-x11-xinit
mesa-libwayland-egl
dracut
libxkbcommon
pulseaudio
libSM
gnome-bluetooth
sqlite
gstreamer1-plugins-base
libattr
gnome-online-accounts
libacl
evolution-data-server
chkconfig
mutter
sed
gdm-libs
libvorbis
libnotify
grep
gdm
hunspell
hunspell-en
bzip2-libs
libtevent
libxcb
python3
libXext
brlapi
libXrender
gupnp
libXi
clutter-gtk
libXcomposite
festvox-slt-arctic-hts
libXcursor
gupnp-av
libxkbfile
python3-cairo
telepathy-glib
python3-pyatspi
mesa-libglapi
pytalloc
libicu
samba-libs
libcap-ng
libsmbclient
libtdb
wavpack
libical
libXres
libXxf86vm
avahi-glib
lua
nm-connection-editor
libidn
dotconf
kmod-libs
rygel
redhat-menus
libgtop2
tcp_wrappers-libs
libao
graphite2
festival-freebsoft-utils
pixman
cheese-libs
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
findutils
xml-common
libxklavier
psmisc
lyx-fonts
ncurses
libmodman
libpciaccess
json-c
gdbm
libsndfile
qrencode-libs
speex
jbigkit-libs
gdk-pixbuf2
sbc
cdparanoia-libs
ustr
krb5-libs
nss-tools
cracklib
openldap
libpwquality
libuser
coreutils
pam
libutempter
nss-sysinit
pulseaudio-libs
alsa-lib
gnome-icon-theme
pulseaudio-libs-glib2
python
libssh2
liboauth
rpm-libs
color-filesystem
pygobject3-base
libXft
authconfig
procps-ng
fipscheck
device-mapper-libs
systemd
libgudev1
polkit-pkla-compat
mesa-libgbm
libcanberra
cairo
cairo-gobject
NetworkManager-glib
liblouis-python3
at-spi2-core
control-center-filesystem
accountsservice
tzdata
gtk3
adwaita-cursor-theme
bluez
mozilla-filesystem
adwaita-gtk3-theme
emacs-filesystem
colord
glibc
pycairo
xz-libs
caribou-gtk2-module
zlib
GConf2
nss-util
ibus-libs
pkgconfig
gnutls
gobject-introspection
geoclue2
libwayland-server
usbmuxd
libdb
libmcpp
gsettings-desktop-schemas
hardlink
expat
pulseaudio-module-bluetooth
readline
webkitgtk3
libcap
zenity
dbus-glib
gnome-shell
gstreamer1
pulseaudio-gdm-hooks
libjpeg-turbo
python3-libs
libX11
gssdp
libXrandr
festival-lib
libXtst
python3-brlapi
libXt
libldb
gmp
samba-common
lcms2
glx-utils
libXmu
vino
libcroco
gupnp-dlna
kmod
colord-gtk
elfutils-libelf
clutter-gst2
slang
speech-dispatcher
xorg-x11-xauth
liblouis
telepathy-logger
libXv
hunspell-en-GB
desktop-backgrounds-gnome
flac-libs
ModemManager-glib
gawk
iso-codes
xz
webrtc-audio-processing
libasyncns
gsm
keyutils-libs
libtiff
libwebp
libsemanage
gzip
systemd-libs
nss
libblkid
fontconfig
hicolor-icon-theme
python-libs
libcurl
rpm
gnome-icon-theme-symbolic
sound-theme-freedesktop
device-mapper
dbus
libdrm
mesa-libGL
cogl

Policies for software add-ons

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

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.