The official stable release for Fedora 35 was made available for download on Nov 2, 2021, after being pushed back to resolve some outstanding blocking bugs. However, the wait was worth it! The release cycle includes Fedora Server, spins, IoT, and Fedora labs with curated software packages to suit niche requirements. In addition, it features GNOME 41, updated developer tools, new programming languages, power management profiles, improved software management of other third-party apps.
This article is a software developer’s insight into new features, development tools, Fedora Labs, and improvements in Fedora Linux 35.
A developer’s insight into Fedora 35
You can get Fedora Workstation 35 from the official website or upgrade your existing OS through the terminal with dnf system-upgrade or GNOME Software.
Linux Kernel 5.14
The latest Fedora 35 release cycle features the new Linux 5.14 kernel. It includes many ARM-specific improvements primarily related to GPUs (support on AMD Radeon graphics cards) and improved support for USB 4.
Fedora 35 editions
Fedora 35 Workstation
True to Fedora foundations of “Freedom,” “First,” “Features,” & “Friends,” the release includes the new GNOME 41, updated programming languages, developer tools for your software development needs. If you use Fedora for daily tasks, it also features new power management profiles, parental controls, and improvements in the management of other third-party apps. Check out our article on ‘Top new features in Fedora 35 Workstation’ to learn more.
Fedora IoT [Internet of Things] edition is an immutable operating system with atomic updates. It is implemented using OSTree technology. You can use it for IoT ecosystems for small home projects, large-scale industrial projects, or analytics with AI/ML.
Developers of IoT systems can also utilize Fedora IoT to create container-focused workflows. In essence, you can build, deploy, and manage applications with built-in Open Container Initiative (OCI) image support using podman or containerized applications from public registries.
Fedora IoT features the greenbolt check framework for systemd to ensure that your system boots into the desired state. With security in mind, developers can enjoy its support for SecureBoot, TPM2, and automated storage decryption with Clevis. It also features support for multiple architectures such as x86_64, aarch64, and armhfp processors. Moreover, there is support for web-based provisioning through Ignition provisioning utility and Zezere web service. As such, you can deploy, manage, and scale your Fedora IoT environment without needing a physical console. You can download Fedora IoT from its official page.
Fedora Kinoite is the newest addition to the Fedora family. This new edition is based on Fedora Silverblue’s underlying technologies (Fedora Linux, rpm-ostree, podman). It features a KDE Plasma desktop by default.
Fedora project team describes Fedora Kinoite as a next-generation operating system. It lets you manage everyday work, surf the web, manage files, and get productive without worrying about breaking your system.
Learn more about the project from Fedora Kinoite’s official home page or Download either the X86_64 or AArch64 architecture.
Fedora 35 Cloud Base Images
Fedora Cloud provides different images which can be consumed in private and public cloud infrastructures. This release cycle includes the introduction of hybrid BIOS+UEFI boot support. If UEFI doesn’t work, you still have legacy BIOS support as a fallback.
Btrfs is now the default file system for Fedora Cloud. Btrfs was introduced as the default file system in Fedora Workstation 34 and will see increased adoption in Fedora editions. You can take advantage of transparent compression to save filesystem space and other features of Btrfs.
The Fedora 35 release cycle includes the following Cloud Base Images:
- Cloud Base – A minimal Fedora image for creating general-purpose virtual machines (Vms). It has bare minimal packages required to run on any cloud environment.
- Vagrant Images – Includes Vagrant Boxes images for both cloud base and atomic. Both VirtualBox and libvirt are supported by the VirtualBox image and libvirt/KVM images. If you use Vagrant on Fedora, the libvirt/KVM image will be ideal for your deployments.
- Atomic image – an atomic image is a lightweight, immutable platform for running containerized applications or in any private or public cloud environment.
- Docker image – The Fedora Cloud team provides the latest Fedora image for Docker that you can get through docker pull fedora.
- Cloud Base Images for Google Cloud Platform (GCP) – The image is configured to run on GCP.
- Cloud Base Images for Amazon Public Cloud provides x86_64 AMIs and aarch64 AMIs AMIs to launch in your Amazon Web Services account.
Fedora 35 Labs
Fedora Labs is a collection of apps, Linux packages, and content bundled into an image to suit niche requirements. Fedora Labs include Astronomy, Comp Neuro, Design Suite, Python Classroom, Scientific, Security Lab, Games, JAM, Robotics Suite.
Python instructors or teachers can use Fedora Python Classroom Lab to teach or present demonstrations in classrooms or workshops. The operating system is bundled with pre-installed packages such as Python, IPython, Jupyter Notebook, tox, virtualenvs, git, and many more.
Fedora Python Classroom Lab comes as either a GNOME desktop or a headless environment for Vagrant or Docker. You can run it in graphical mode with GNOME, or virtualize it with Vagrant or run it in a Docker container depending on what fits your architecture.
Fedora Scientific Labs
Fedora Scientific Lab ships with essential open-source scientific, numerical applications, tools, and libraries. The packages include libraries and tools such as the GNU Scientific library, the SciPy libraries. Tools for typesetting, writing, and publishing. Graphics programs such as Inkscape. The current Fedora 35 Scientific Lab includes a set of packages such as an IDE, libraries for programming in Python, C, C++, Java, and R.
Fedora Design Suite Labs
Fedora Design Suite Labs is a desktop environment with pre-installed free, open-source multimedia production and publishing tools created by designers, for designers. It includes your favorite tools and programs to create artwork, desktop backgrounds, CD sleeves, web page designs, flyers, or app interfaces.
You can use it for various functions such as document publication, vector, and bitmap editing, 3D modeling, or photo management. Moreover, you can always install many more apps from the extensive Linux packages.
If you are an astronomer or an enthusiast, you might want to try out the Fedora astronomy labs. A gamer can install the Games Lab, audio enthusiasts and musicians who want to create, edit and produce audio and music on Linux can use the Fedora Jams Labs. In essence, there is ‘almost’ everything for your niche requirements. Other additional labs are Comp Neuro, Security, and Robotics Suite.
Get developer tools
It goes without saying. Fedora is an OS created by developers for developers. Fedora 35 provides some of the best programming tools, updated programming languages, and databases. You will also find collaboration tools to manage your projects from start to deployment and distribution.
Fedora 35 gives developers new programming languages, system library updates, underlying package updates, and toolchain updates. The following programming languages are bundled in Fedora 35.
Python 3.10 Node.js 16.x Perl 5.34 PHP 8.0 Binutils 2.36 gcc 11 glibc 2.34 RPM 4.17 binutils 2.37 gdb 10.2 LLVM 13
Fedora provides an easy and reliable platform to manage projects, whether command-line apps, web apps, desktop apps, or hardware device projects with Raspberry Pi or Arduino.
If you use the .NET platform for development, .NET Core and Mono are available for installation on Fedora. To create applications using the C#, F#, or VB.NET programming languages. You can install .NET Core and Mono through the following simple steps.
.NET Core is a modular, cross-platform, and open-source platform for any general-purpose development. .NET Core is packaged in Fedora, and you can install the latest SDK with the following command:
$ sudo dnf install dotnet
Mono is a free and open-source implementation of the .NET Framework. You can install Mono with the following command:
$ sudo dnf install mono-devel
Python is an interpreted, object-oriented, high-level programming language. Python 3 is already pre-installed on Fedora 35 with many popular packages for Python.
To run Python or check the installed version, open your terminal and type Python or python3 command.
Using virtual environments
If you are working on software development projects, virtual environments can limit conflicts by bundling dependencies in one place. You can use them for projects that need different versions of a module.
Use the following command to create a virtual environment.
$ python -m venv web_project_venv
The project name is web_project_venv which contains Python and pip. You can use pip to install other dependencies in your virtual environment.
To work in the virtual environment, you have to activate it with the following command.
$ source web_project_venv/bin/activate
When you activate the virtual environment, you can install modules via pip.
(web_project_venv) $ python -m pip install module_name
You can deactivate the virtual environment.
(web_project_venv) $ deactivate
Fortran is a general-purpose, imperative programming language suited to numeric computation and scientific computing. To use Fortran in Fedora 35, you must install the gfortran compiler since Fortran is a compiled language.
To install the gfortran compiler, use the following command.
$ sudo dnf install gcc-gfortran
Whatever language you use for development, Fedora provides packages for other languages such as C, C++, Go, Java, Node.js, PHP, Haskell, Perl, R, Rust, Ruby, and many more.
Fedora 35 provides a reliable platform and packages to install and manage database engines. You can install database engines such as MariaDB (a drop-in replacement for MySQL), SQLite, Cassandra, PostgreSQL, SQLite, Redis, MongoDB (Document-oriented/NoSQL database), and many more.
PostgreSQL is an advanced Object-Relational database management system (DBMS). Fedora 35 provides a complete package set for PostgreSQL client and server, server-compatible plug-ins, and database connectors.
To get started with PostgreSQL in Fedora, you can install and configure it using the following commands.
$ sudo dnf install postgresql postgresql-server # install PostgreSQL client/server $ sudo postgresql-setup --initdb --unit postgresql # initialize PostgreSQL cluster $ sudo systemctl start postgresql # start cluster $ sudo su - postgres # admin login
If you get stuck along the way, you can always use the help command.
Apache Cassandra is an open-source database server for high-scale applications. Its linear scalability and fault tolerance on commodity hardware or cloud infrastructure make it the perfect choice for mission-critical data. The database uses the Cassandra Query Language (CQL), which is relatively close to SQL.
Run the following commands to install and initialize Cassandra on Fedora 35.
$ sudo dnf install cassandra cassandra-server # install Apache Cassandra client/server $ sudo systemctl start cassandra # initialize Cassandra server
Enable Cassandra to run at boot time:
$ sudo systemctl enable cassandra $ cqlsh # run Cassandra client tool
A group of whales is called a pod.
Manage containers in Fedora 35
Containers allow developers to package applications along with dependencies and run them anywhere. Containers allow you to separate core OS updates from application updates. You can also test and deploy different versions of applications. The Fedora project team provides Fedora IoT and Fedora CoreOS that provide reliable support for container-focused workflows.
According to the Fedora project team, Fedora CoreOS is an automatically updating, minimal operating system designed for running containerized workloads securely and at scale. The OS allows you to run applications as containers. You can also install extra packages with the rpm-ostree tool, which atomically layers changes on top of the base image.
You can download Fedora CoreOS from its official download page.
Docker is an excellent platform for developers to develop, ship, and run applications in containers. With Docker, you can quickly assemble applications and get your code tested and deployed into production as fast as possible. You can install the docker-ce package using the Docker repository in Fedora 35 with the following steps.
Install the dnf-plugins-core package:
$ sudo dnf install dnf-plugins-core
Add the docker-ce repository:
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Install the docker engine:
$ sudo dnf install docker-ce docker-ce-cli containerd.io
Start the Docker service:
$ sudo systemctl start docker
Podman is a daemon-less container engine for developing, managing, and running OCI Containers in root or rootless mode. It is an alternative to Docker, but the podman container engine is lightweight. You can install it using the following command.
$ sudo dnf install podman
You can also use Podman Compose to manage and orchestrate several containers.
Collaboration is an essential aspect of software development, and Fedora provides several packages and IDEs that will enable you to collaborate with your team.
An integrated development environment [IDE] aids developers in every step of the software development cycle. A choice IDE might depend on a programming language, the platform you use, or resources available. Fedora provides several IDE packages such as Eclipse, Sublime-text, Microsoft Visual Studio, Atom text editor, and many more. Every developer has a favorite IDE.
Eclipse is a full-featured, multi-language IDE to manage your software development lifecycle. You can quickly start a new project, work on existing projects, or monitor and optimize applications. Moreover, you can also write elegant documentation, interact with other issue tracking systems or CI from inside the Eclipse IDE.
Install the Eclipse package:
$ sudo dnf install eclipse
Arduino is a popular and reliable hardware platform. Unfortunately, you can not run the Fedora OS on Arduino boards. However, you can use Fedora for developing applications and projects for Arduino.
You can install the graphical Arduino IDE with the following command:
$ sudo dnf install arduino
Vagrant is one of the must-have tools for developers. It allows you to create reproducible and portable development environments. It works on top of some virtualization or containerization technologies like VirtualBox, Docker, and libvirt.
Vagrant with VirtualBox
To use Vagrant with VirtualBox in Fedora 35, install the vagrant package with the following command:
$ sudo dnf install vagrant
Note that Vagrant comes with in-built support for VirtualBox. However, you need to install VirtualBox separately as it is not part of Fedora packages.
Vagrant with Docker
To use Vagrant with Docker, install the vagrant and docker packages with the following command:
$ sudo dnf install vagrant docker
Start docker service:
$ sudo systemctl start docker
Note that Vagrant comes with built-in support, and you can use Docker both as a provider and as a provisioner.
Package deploy and distribute applications
The joy of a developer is deploying and distributing software, and it’s even more enthusiastic when the software is open source. Fedora 35 provides a great platform and tools to package, deploy and distribute software. Some advantages of packaging include:
- Code, data, config files, and post-installations scripts are bundled together.
- You can sign packages that ensure that users can verify that the package was not altered.
- It allows easy installation, upgrade, or removal of apps.
- You can standardize installation paths.
RPM packaging allows you to package applications and ship them to RPM-based systems.
Run the following command to install and set up the fedora packager.
$ sudo dnf install fedora-packager rpmdevtools gcc $ rpmdev-setuptree
Learn more from the official RPM documentation.
Copr Build Service
Copr is an easy-to-use automatic build service that builds applications as an RPM and provides you with a DNF/Yum package repository as its output. Therefore, you must have a source RPM (from RPM packaging) before starting using the Copr service. Note that you can only use Copr for FOSS (Free Open Source Software) projects.
OpenShift Origin is a distribution of Kubernetes that can come in handy for developers to manage continuous application development and multi-tenant deployments. It adds developer tools on top of Kubernetes to enable rapid development, easy deployment, scaling, and long-term lifecycle maintenance for any size of your team.
Fedora editions provide an extensive set of tools and packages. With its “Freedom” philosophy, a software developer is spoilt for choices for packages, development IDEs, virtualization, containerization tools, or deployment tools. The article introduces some of the tools I use for developing, packaging, and deploying applications.