Product SiteDocumentation Site

5. Changes in Fedora for Developers

5.1. Development

5.1.1. KDE Frameworks 5

Fedora 21 includes a new set of libraries for developers of C++ and Qt applications, KDE Frameworks 5, the successor to KDE Platform 4. KDE Frameworks 5 are based on Qt 5 and provide developers with access to a broad variety of technologies and tools developed by the KDE Community, without having to depend on the entire KDE platform.
Most of the frameworks are based on the kdelibs module, which has been divided according to functionalities provided. Dependencies have been packaged into individual libraries. This allows developers and projects outside the KDE ecosystem to use these technologies and benefit from the work of the KDE Community.
It is possible to install KDE Frameworks 5 alongside KDE Platform 4 packages.

5.1.2. OpenCL

This Fedora release includes basic support for the OpenCL standard, which provides sufficient environment for the development of the OpenCL enabled software.
To enable OpenCL development, the Mesa's OpenCL state-tracker, the Portable Computing Language (pocl), and several other OpenCL packages have been added to the official Fedora repositories. The pocl language can be used on CPUs, and Mesa can be used on R600 AMD/ATI GPUs.

5.1.3. Python 3.4

With this release, Python 3 has been upgraded to version 3.4, which provides various bug fixes, enhancements and security improvements over the previous version. For example, several new library modules and features have been added and multiple library modules have been significantly improved.

Python 2 is still default

While the majority of Python packages are available for both Python and Python3, the default implementation of Python in Fedora is Python 2.7

The rewheel module

For version 3.4, Python upstream has decided to implement changes summarized in the PEP 453 document. In short, these mean:
  1. bundling archives with the setuptools and pip utilities in Python distribution
  2. providing the ensurepip module that is able to install these archives either on a system or in the virtualenv environment.
Due to Fedora strict non-bundling policies, setuptools and pip are unbundled. To match the upstream functionality, the following approach has been implemented:
  1. The python3 package now depends on the python3-setuptools and python3-pip. This means that users do not have to use the ensurepip to install setuptools and pip utilities separately as they are by default installed altogether with python3
  2. To install the setuptools and pip utilities in the virtualenv environment from the system packages, a mechanism called rewheel has been implemented to Fedora 21. When a new virtualenv is being created, rewheel takes the system python3-setuptools and python3-pip packages, recreates their archives and installs them in the new virtualenv so that the upstream functionality is preserved.
One more advantage is provided by the rewheel approach. When there is a bug, for example a security issue, in either python3-setuptools or python3-pip, Fedora maintainers of these packages fix the bug and users get the fixed packages. Therefore, virtualenvs created after updating to fixed python3-setuptools or python3-pip will have already fixed version. With pure upstream Python, this approach is not possible, users will have to wait for upstream to release new Python version with these fixes incorporated. This means that the rewheel patch makes the python3 package fulfill Fedora's high packaging standards and also helps to make virtualenvs more secure.
See the Rewheel page on GitHub for additional information about rewheel.

5.1.4. RPM 4.12

The RPM package manager has been updated to version 4.12, which brings Fedora in line with the latest upstream version.
This update brings a number of improvements, including:
Ability to package files larger than 4 GB.
Support for weak dependencies.
API users will be able to access file data more cleanly.
Payload data is now accessible over the API.
A new tool, rpm2archive, will allow converting rpm packages to tar files instead of the outdated cpio format. The new tool will work with files larger than 4 GB, while cpio and rpm2cpio do not.

No weak deps in Fedora packages

While the the underlying RPM libraries offer support for optional dependencies, soft requirements, and other weak dependencies, the packages in Fedora repositories are not yet leveraging this feature.
See the RPM 4.12 Release Notes for a full list of changes.

No new features for older RPM installations

Using some of the new features will break forward compatibility. Packages using these features cannot be built or installed on older Fedora versions. Backward compatibility is expected to be maintained.

5.1.5. Ruby 2.1

Ruby 2.1 is the latest stable version of Ruby, and brings major increases in speed, memory efficiency, and reliability.
The update brings a soname bump. Therefore, Ruby packages which use binary extensions should be rebuilt - and this has been done for packages in the Fedora repositories. Nevertheless, since upstream payed great attention to source compatibility, no changes to your code should be needed. Additionally, RubyGems with binary extensions need to be updated to conform to the recent package guidelines to ensure compatibility with the new RubyGems release.
Also note that starting with this release, Ruby is adopting semantic versioning.
You can find a full list of changes in Ruby 2.1 in the changelog. Full documentation is available at the Ruby documentation page.

5.1.6. TCL/TK 8.6

In Fedora 21, TCL/TK has been upgraded to version 8.6.1, which includes numerous bug fixes and enhancements. Some of the notable features are described here.
For the full list of changes, see the TCL/TK Release Notes.
5.1.6.1. TCL 8.6
Changes in TCL 8.6
  • IPv6 Support
    Support for IPv6 networking for both client and server sockets.
  • Support for SQL Database
    The bundled tdbc package, which contains the Tcl DataBase Connectivity interface, now enables writing SQL database-powered scripts decoupled from any particular database engine. The bundled sqlite3 and tdbc::sqlite3 packages supply a powerful and popular SQL database engine that is ready to use.
  • Support for Object Oriented Programming
    The commands of the TclOO package are now part of the TCL language itself. This gives TCL a built-in fully dynamic, class-based object system and also includes advanced features such as meta-classes, filters, and mixins.
    A new version 4 of the popular package Itcl (also known as "incr TCL") is also included, now built on a TclOO foundation, granting support for some traditional Object Oriented TCL programming out of the box as well.
  • Support for multi-thread operations
    A thread-enabled default build, a bundled Thread package, and a new command interp cancel enable multi-threaded programming tasks on TCL 8.6.
5.1.6.2. TK 8.6
Changes in TK 8.6
  • PNG Image Support
    Photo images now supports read/write in the PNG format, with the ability to set the alpha channel.
  • Angled Text
    The new -angle $degrees to $canvas create text option rotates the displayed text.

5.1.7. Improved Scala Ecosystem

Fedora now features significantly improved support for the Scala ecosystem with the inclusion of sbt version 0.13.1 and several other key Scala infrastructure packages. These packages include:
  • akka, a toolkit for developing actor-based systems
  • json4s, a unified interface to JSON parsers and generators
  • sbinary, a typed Scala interface for reading and writing binary formats
  • scala-stm, a software transactional memory implementation for Scala
  • scalacheck, a property-based testing framework for Scala
  • scalaz, a set of extensions to the Scala standard library to facilitate functional programming
With these packages available, Fedora has become an excellent environment for developing and distributing Scala projects.

5.2. Development Tools

5.2.1. Eclipse Luna

Eclipse in Fedora 21 has had a major update to the Luna (4.4) release. Eclipse Luna, among other things, introduces support for Java 8, split editors, and a dark theme.
Full details of the release are available in the upstream project's release notes, which are available from https://www.eclipse.org/eclipse/news/4.4/eclipse_news_4.4.php

5.2.2. Jenkins

The official Fedora repositories now include Jenkins, an application written in Java that provides continuous integration services for software development. Jenkins allows you to build and test software projects continuously, as well as to monitor executions of jobs that were ran externally.
For additional information, refer to the Meet Jenkins webpage.

5.2.3. Make updated to 4.0

GNU Make has been updated to version 4.0, offering several bug fixes and new features. It also includes new command line options and new variables to improve usability.
Read the Make release announcement at https://lists.gnu.org/archive/html/make-w32/2013-10/msg00021.html for more information about the changes in this release. The project documentation is available at http://www.gnu.org/software/make/manual/

5.2.4. Review Board 2.0

Fedora now provides Review Board 2.0, a powerful, web-based patch review and management tool.
Version 2.0 adds the ability to post committed changes from a branch directly from the web UI, adds review of text file attachments, greatly extends the capabilities of the public API and extension framework, and offers significant performance improvements, usability enhancements, and visual cleanups.
Significant enhancements have been made to the diff viewer, as well as adding support for reviews on non-code files (such as binary file formats).
Documentation for Review Board 2.0 is available from the Review Board Manual.

Back up before migrating to Review Board 2.0

Upgrading to Review Board 2.0 from a previous release will modify your database schema. The migration will be performed when you restart Apache for the first time after the upgrade, and the process is irreversible.
Back up your database before upgrading.

5.2.5. SHOGUN Machine Learning Toolbox

The machine learning toolbox's focus is on large scale kernel methods and especially on Support Vector Machines (SVM). It provides a generic SVM object interfacing to several different SVM implementations, among them the state of the art LibSVM. Each of the SVMs can be combined with a variety of kernels.
One of its key features is the "combined kernel" which can be constructed by a weighted linear combination of a number of sub-kernels, each of which not necessarily working on the same domain. An optimal sub-kernel weighting can be learned using Multiple Kernel Learning. Currently SVM 2-class classification and regression problems can be dealt with. However SHOGUN also implements a number of linear methods like Linear Discriminant Analysis (LDA), Linear Programming Machine (LPM), (Kernel) Perceptrons and features algorithms to train hidden Markov-models.
Learn more about SHOGUN at http://shogun-toolbox.org/doc/en/current/

5.3. GCC Tools

5.3.1. Boost 1.55.0

boost has been upgraded to version 1.55.0. This update brings a large number of bug fixes and enhancements, one new library (Predef), and a slight change in requirements as support for very old versions of several compilers has been removed.
For a full list of changes, see the Boost 1.55.0 Release Notes.

5.3.2. GCC 4.9.x

The GNU Compiler Collection (GCC) has been upgraded to version 4.9.x, and all Fedora packages have been rebuilt with this new version of GCC.
The update provides a large number of bug fixes and enhancements. The notable newly supported features and changes are listed below:
ISO C11 support is largely complete.
Partial support for C++14.
C++11 support for regular expressions.
The OpenMP 4.0 standard.
the Undefined Behavior Sanitizer (UBSAN).
The Cilk Plus extension.
For detailed information about all changes, see the GCC 4.9 Release Notes.

5.4. Java

5.4.1. OpenJDK 8

OpenJDK8 is now the default Java Runtime in Fedora, replacing OpenJDK7. A full list of the features added in OpenJDK8 is available upstream at http://openjdk.java.net/projects/jdk8/features/.

Java Customizations

User customizations made to java-1.7.0-openjdk(specifically, to files under /usr/lib/jvm/java-1.7.0*/*) will not be carried across to java-1.8.0-openjdk.

5.4.2. More efficient package dependencies

The way that Java dependencies are handled has changed in Fedora 21. Packages that do not interact with the X server or audio subsystem now depend on a new OpenJDK headless subpackage. This means installation size reduction on servers, a change that aims for efficiency.
Additionally, documentation for Java packages is now optional, saving even more space on your server. Look for the -docsubpackage for Java packages to install the accompanying documentation.
If you need access to API documentation of Java libraries without javadoc subpackages, try using upstream web pages which should be accessible at homepage URL of the project in question. You can query for the URL of installed package with rpm -qi package| grep '^URL'
Java packaging guidelines now also require to convert most Java packages to have Requires: java-headlesswhen appropriate. Detailed information about the packaging effort can be found at https://fedoraproject.org/wiki/Packaging:Java#BuildRequires_and_Requires

5.4.3. Improved Ivy Packaging

The way of packaging Java software that uses Apache Ivy to manage build dependencies has been improved in a similar way to the Maven packaging updates in previous Fedora releases. In particular, the following improvements have been implemented:
  • automatic resolution of Ivy artifacts,
  • integration with system Maven repository,
  • automatic installation of Ivy artifact metadata,
  • auto requires.

5.5. Web Development

5.5.1. PHP 5.6

The PHP stack has been updated to version 5.6, the latest upstream version. The important changes in this new version include:
PHP 5.6 also features a new tool, the PHP debugger, provided in the new php-dbg subpackage. Use the debugger with the phpdbg command.
Information about migrating applications from PHP 5.5 to PHP 5.6 can be found at http://php.net/manual/en/migration56.php.

5.5.2. Ruby on Rails 4.1

Fedora 21 includes Ruby on Rails 4.1, the latest version of the well-known web application framework written in Ruby. Highlights in this release include Spring application preloader, config/secrets.yml, Action Pack variants, and Action Mailer previews. The Release Notes are at http://guides.rubyonrails.org/4_1_release_notes.html
Information for developers upgrading existing applications to Ruby on Rails 4.1 can be found in the Upgrading Ruby on Rails guide at http://guides.rubyonrails.org/upgrading_ruby_on_rails.html.

5.5.3. Web Application Authentication

At an operating system level, there are numerous authentication and identity lookup mechanisms, some of them using sssd. With new Apache modules and new sssd, some of those mechanisms become more easily consumable by web applications. Web application environments and frameworks can then consume results of the authentication and information retrieval using environment variables similar to REMOTE_USER. This will allow the better integration of web applications into enterprise-scale deployments.
With mod_authnz_pam, PAM authentication and access checks are available to web applications, allowing wider combination of authentication and access controls. One specific target is host-based access control rules of FreeIPA for Kerberos SSO via mod_sss and sssd.
The mod_intercept_form_submit module makes it possible to enable the PAM authentication of mod_authnz_pam on normal logon form handling paths, which can then be consumed by web application with fairly minimal changes.
The mod_lookup_identity uses sssd-dbus to retrieve additional attributes like name, email address, or group membership, and populates environment variables for easy consumption of this information by web applications.
The sssd-dbus implements new service ifp which provides access to additional user-related pieces of information.
More information can be found at http://www.freeipa.org/page/Web_App_Authentication.