From Fedora Project Wiki
(Change accepted by FESCo, sorry for late category change)
 
(21 intermediate revisions by 5 users not shown)
Line 4: Line 4:


== Summary ==
== Summary ==
Server installations of Fedora should usually not pull in packages related to X system or sound subsystem. For this reason part of OpenJDK package has been split into headless subpackage which has smaller dependency chain. Fedora packages should be migrated to require java-headlesss instead of full java package when appropriate.
Server installations of Fedora should usually not pull in packages related to X system or sound subsystem. For this reason part of OpenJDK package has been split into headless subpackage which has smaller dependency chain. Fedora packages should be migrated to require java-headless instead of full java package when appropriate.


== Owner ==
== Owner ==
Line 21: Line 21:
== Current status ==
== Current status ==
* Targeted release: [[Releases/21 | Fedora 21 ]]  
* Targeted release: [[Releases/21 | Fedora 21 ]]  
* Last updated: (DATE)
* Last updated: {{CURRENTDAY}}-{{CURRENTMONTH}}-{{CURRENTYEAR}}
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
Bugzilla states meaning as usual:
Bugzilla states meaning as usual:
Line 30: Line 30:
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
-->
-->
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1067528 #1067528]


== Detailed Description ==
== Detailed Description ==
Line 45: Line 45:
Designed after Debian packaging, Fedora OpenJDK package has been split into packages providing java and java-headless. This makes it possible for packages to use "Requires: java-headless". For most libraries and generic packages this is sufficient. End-user applications should keep "Requires: java" to pull in full OpenJDK package.
Designed after Debian packaging, Fedora OpenJDK package has been split into packages providing java and java-headless. This makes it possible for packages to use "Requires: java-headless". For most libraries and generic packages this is sufficient. End-user applications should keep "Requires: java" to pull in full OpenJDK package.


This change aims to convert '''most''' Java packages to have "Requires: java-headless" when appropriate. BuildRequires are unaffected.
This change aims to convert '''most''' Java packages to have "Requires: java-headless" when appropriate. BuildRequires on '''java-devel''' are unaffected.


== Benefit to Fedora ==
== Benefit to Fedora ==
Line 51: Line 51:
* Significantly smaller installation size on servers
* Significantly smaller installation size on servers
* Faster installation and startup of virtual machines/cloud images
* Faster installation and startup of virtual machines/cloud images
 
* Faster Java builds


== Scope ==
== Scope ==
<!-- What work do the developers have to accomplish to complete the change in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
<!-- What work do the developers have to accomplish to complete the change in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->


* Proposal owners:
* Proposal owners:
Line 61: Line 60:
** Modify javapackages-tools package to automatically generate "java-headless" autorequires (simple change)
** Modify javapackages-tools package to automatically generate "java-headless" autorequires (simple change)
** Identify and file bugs for affected packages (repoquery  and bugzilla bug creation)
** Identify and file bugs for affected packages (repoquery  and bugzilla bug creation)
** (optional) Mass-change spec files that have "Requires: java" to "Requires: java-headless"
** After some time automatically migrate packages that have bugs in NEW to java-headless


* Other developers:  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Other developers:  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- What work do other developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
<!-- What work do other developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
* Modify spec files to have "Requires: java-headless" instead of "Requires: java"
** Review bugs filed for their packages and modify/close them
** If bugs are untouched, they are automatically migrated


* Release engineering:  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Release engineering:  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuid required?  If a rel-eng ticket exists, add a link here.  -->
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuid required?  If a rel-eng ticket exists, add a link here.  -->
** mass rebuild is not necessary but it would simplify things
** Nothing


* Policies and guidelines: <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Policies and guidelines: <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Do the packaging guidelines or other documents need to be updated for this feature?  If so, does it need to happen before or after the implementation is done?  If a FPC ticket exists, add a link here. -->
<!-- Do the packaging guidelines or other documents need to be updated for this feature?  If so, does it need to happen before or after the implementation is done?  If a FPC ticket exists, add a link here. -->
** [Packaging:Java] needs to be modified to account for java-headless package existence
** [[Packaging:Java]] needs to be modified to account for java-headless package existence (Note: there is already a [[User:Akurtakov/JavaPackagingDraftUpdate | packaging draft]] that aims to do that among other changes)


== Upgrade/compatibility impact ==
== Upgrade/compatibility impact ==
Line 79: Line 79:


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
Server systems with older Fedora versions that have "java-X.Y.Z-openjdk" package installed will possibly have unneeded packages installed after upgrade.
Systems with older Fedora versions that have "java-X.Y.Z-openjdk" package installed will possibly have unneeded packages installed after upgrade. This does not negatively impact the users except wasted storage space.


== How To Test ==
== How To Test ==
Line 104: Line 104:
* tomcat
* tomcat


Above packages should still work as designed even without "java-X.Y.Z-openjdk" package being installed.
Above packages should still work as designed even without "java-X.Y.Z-openjdk" package being installed. Failures would be visible immediately after trying to run an application
 
Example steps to test:
# Install minimal installation of Fedora
# Install Java application for testing
# Verify only java-X.Y.Z-openjdk-headless package is installed and not full java-X.Y.Z-openjdk
# Verify that tested Java application works (differs from application to application)


== User Experience ==
== User Experience ==
Line 110: Line 116:
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
Smaller installation size and dependency chain when installing Java applications that do not require X system or audio capabilities.
Smaller installation size and dependency chain when installing Java applications that do not require X system or audio capabilities.


== Dependencies ==
== Dependencies ==
Line 141: Line 146:
-->
-->


[[Category:ChangePageIncomplete]]
[[Category:ChangeAcceptedF21]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->

Latest revision as of 09:54, 18 March 2014


Headless Java

Summary

Server installations of Fedora should usually not pull in packages related to X system or sound subsystem. For this reason part of OpenJDK package has been split into headless subpackage which has smaller dependency chain. Fedora packages should be migrated to require java-headless instead of full java package when appropriate.

Owner

Current status

Detailed Description

OpenJDK package in Fedora has been traditionally monolithic, pulling in a lot of dependencies including (but not limited to)

  • libXrender
  • libXi
  • libXtst
  • pulseaudio

This is obviously not optimal for minimal server installations where OpenJDK is used for web application development and deployment.

Designed after Debian packaging, Fedora OpenJDK package has been split into packages providing java and java-headless. This makes it possible for packages to use "Requires: java-headless". For most libraries and generic packages this is sufficient. End-user applications should keep "Requires: java" to pull in full OpenJDK package.

This change aims to convert most Java packages to have "Requires: java-headless" when appropriate. BuildRequires on java-devel are unaffected.

Benefit to Fedora

  • Significantly smaller installation size on servers
  • Faster installation and startup of virtual machines/cloud images
  • Faster Java builds

Scope

  • Proposal owners:
    • Modify javapackages-tools package to automatically generate "java-headless" autorequires (simple change)
    • Identify and file bugs for affected packages (repoquery and bugzilla bug creation)
    • After some time automatically migrate packages that have bugs in NEW to java-headless
  • Other developers:
    • Review bugs filed for their packages and modify/close them
    • If bugs are untouched, they are automatically migrated
  • Release engineering:
    • Nothing
  • Policies and guidelines:
    • Packaging:Java needs to be modified to account for java-headless package existence (Note: there is already a packaging draft that aims to do that among other changes)

Upgrade/compatibility impact

Systems with older Fedora versions that have "java-X.Y.Z-openjdk" package installed will possibly have unneeded packages installed after upgrade. This does not negatively impact the users except wasted storage space.

How To Test

Several Java packages in Fedora can be used to test java-headless change. After the change is implemented installation of following packages on top of minimal installation should not pull in pulseaudio and several X related packages:

  • ant
  • maven
  • wildfly
  • tomcat

Above packages should still work as designed even without "java-X.Y.Z-openjdk" package being installed. Failures would be visible immediately after trying to run an application

Example steps to test:

  1. Install minimal installation of Fedora
  2. Install Java application for testing
  3. Verify only java-X.Y.Z-openjdk-headless package is installed and not full java-X.Y.Z-openjdk
  4. Verify that tested Java application works (differs from application to application)

User Experience

Smaller installation size and dependency chain when installing Java applications that do not require X system or audio capabilities.

Dependencies

No outside dependencies, Fedora has full control over all elements of this change.

Contingency Plan

  • Contingency mechanism:
    • Nothing needs to be done. If not all packages are converted, part of dependency chains might still pull in "java" package with full X and pulseaudio (i.e. no change from end-user perspective)
  • Contingency deadline:
    • None needed
  • Blocks release? No

Documentation

https://lists.fedoraproject.org/pipermail/java-devel/2013-October/004975.html

Release Notes