From Fedora Project Wiki
(Created page with "= Transitioning to Minizip-ng as compatible replacement for Minizip <!-- The name of your change proposal --> = == Summary == <!-- A sentence or two summarizing what this change is and what it will do. This information is used for the overall changeset summary page for each release. Note that motivation for the change should be in the Benefit to Fedora section below, and this part should answer the question "What?" rather than "Why?". --> Transition of the minizip to m...")
 
No edit summary
Line 37: Line 37:
ON_QA -> change is fully code complete
ON_QA -> change is fully code complete
-->
-->
* [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/K4NTJYVBNBV3TONHPKUTRJMNNIGRWILZ/ devel thread]
* FESCo issue: <will be assigned by the Wrangler>
* FESCo issue: <will be assigned by the Wrangler>
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: <will be assigned by the Wrangler>
Line 43: Line 42:


== Detailed Description ==
== Detailed Description ==
Upstream of the aspell package has been inactive for almost 4 years now. Most of the packages that have been using aspell in the past did migrate to the supported [https://github.com/hunspell/hunspell hunspell package] or any other spell checker.
As zlib is about to be migrated to zlib-ng, the minizip-compat subpackage will be removed as well. Thus we need to rebuild all of the packages that depend on the minizip-compat with minizip-ng-compat.


The plan is simple:
Also with this, we can add the minizip-ng (without compat) to the Fedora repository as some packages might want to migrate to the more feature-rich implementation of minizip.


1) Deprecate aspell package.
This change is strongly related to the [https://fedoraproject.org/wiki/Changes/ZlibNGTransition Zlib Transition Change].


2) Create Bugzilla tracker to request all packages to be migrated to the hunspell or any other spell checker (let maintainers choose their preferred one).
== Feedback ==
Packages that require `minizip-ng` (the current compat version) have been rebuilt with the correct `minizip-ng-compat` package with its new API of version 4 in this [https://copr.fedorainfracloud.org/coprs/ljavorsk/minizip-ng/packages/ COPR repository].


3) After all of the packages have been migrated, create a Change to retire aspell from Fedora
Packages that depend on the `minizip-compat` (subpackage of zlib package) will need to be rebuilt as well. There have been some attempts and a few of them are not building due to this change. Everything is described in this [https://bugzilla.redhat.com/show_bug.cgi?id=2235710#c4 Bugzilla], <TODO rebuilt all depended packages to see the impact>.


== Feedback ==
Early feedback from the community is located in this  ([https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/YJWK522SSTYGIILBRC5BFVRAU74TQYHB/ Devel list announce])


== Benefit to Fedora ==
== Benefit to Fedora ==
Line 84: Line 82:
     https://fedoraproject.org/wiki/Changes/perl5.26 (major upgrade to a popular software stack, visible to users of that stack)
     https://fedoraproject.org/wiki/Changes/perl5.26 (major upgrade to a popular software stack, visible to users of that stack)
-->
-->
Fedora shouldn't maintain a dead package. This change will ensure Fedora has relevant and upstreamed packages in it's repositories.
* minizip-ng has the following features
** Zlib, BZIP2, LZMA, XZ, and ZSTD compression methods.
** Password protection through Traditional PKWARE and WinZIP AES encryption.
** Buffered streaming for improved I/O performance.
** NTFS timestamp support for UTC last modified, last accessed, and creation dates.
** Disk split support for splitting zip archives into multiple files.
** Preservation of file attributes across file systems.
** Follow and store symbolic links.
** Unicode filename support through UTF-8 encoding.
** Legacy character encoding support CP437, CP932, CP936, CP950.
** Streaming interface for easy implementation of additional platforms.


== Scope ==
== Scope ==
* Proposal owners: Package aspell will be deprecated and the migration request will be filled as a Bugzilla to all dependent packages
* Proposal owners:
** Minizip-ng will be rebuilt with minizip-compatible API, obsoleting minizip-compat-1.3
*** Minizip-ng compat mode will be distributed in a new package called minizip-ng-compat, with its respective minizip-ng-compat-devel.
*** Initially, minizip-ng-compat will provide minizip-compat = 1.2.13 and minizip-ng-compat-devel will provide minizip-compat-devel = 1.2.13.
*** These versions will be updated following the support added to minizip-ng upstream.
** As minizip-ng also bumped the soname, the packages critical to this change will need to be rebuilt in the side-tag. Packages that depend on the minizip-compat will be rebuilt with the new Requires/Buildrequires to minizip-ng-compat (doesn't have to be rebuilt in side-tag).
*** This may help to catch ABI-compatibility issues soon.
* Other developers: Help with build failures may be requested.
* Release engineering: TODO
* Policies and guidelines: N/A
* Trademark approval: N/A
* Alignment with Objectives: N/A
 
== Upgrade/compatibility impact ==
Minizip-ng has a minizip-compat mode that aims to preserve both API and ABI compatibility with the original Minizip. This is only applicable on the packages that currently require the `minizip-compat` package.
Packages that require the `minizip-ng-devel` shared library will be changed to require the new name `minizip-ng-devel-compat` and also will be rebuilt in side-tag. Packages that only require the `minizip-ng` without it's shared library will be changed to `minizip-ng-compat`, so they don't end up with non-compat version of minizip-ng.
 
 
== How To Test ==
Update the packages and verify they build without any issues.
 
== User Experience ==
This change will increase compression efficiency and performance.
 
== Dependencies ==
List of the packages from Fedora 40
 
=== Requires (minizip-compat) ===
repoquery -q --repo=rawhide{,-source} --whatrequires 'minizip-compat*' | grep -v 'src$' | pkgname
 
chromedriver
 
chromium
 
chromium-common


* Other developers: Migrate to hunspell package or any other supported spellchecker present in Fedora repositories.
chromium-headless


* Release engineering: No action required
domoticz


* Policies and guidelines: N/A (not needed for this Change)
hashcat


* Trademark approval: N/A (not needed for this Change)
libdigidocpp


* Alignment with Objectives:
minizip-compat-devel


== Upgrade/compatibility impact ==
springlobby
As this is only deprecation change, nothing will need to be handled manually. The dependent packages will migrate to hunspell or any other supported spellchecker present in Fedora repositories.
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
=== BuildRequires (minizip-compat) ===
repoquery -q --repo=rawhide{,-source} --whatrequires 'minizip-compat*' | grep 'src$' | pkgname
 
chromium
 
domoticz
 
hashcat
 
libdigidocpp


== How To Test ==
springlobby
<!-- This does not need to be a full-fledged document. Describe the dimensions of tests that this change implementation is expected to pass when it is done.  If it needs to be tested with different hardware or software configurations, indicate them.  The more specific you can be, the better the community testing can be.


Remember that you are writing this how to for interested testers to use to check out your change implementation - documenting what you do for testing is OK, but it's much better to document what *I* can do to test your change.
=== Requires (minizip-ng (currently built with compat flags)) ===
repoquery -q --repo=rawhide{,-source} --whatrequires 'minizip-ng*' | grep -v 'src$' | pkgname


A good "how to test" should answer these four questions:
collada-dom


0. What special hardware / data / etc. is needed (if any)?
dolphin-emu
1. How do I prepare my system to test this change? What packages
need to be installed, config files edited, etc.?
2. What specific actions do I perform to check that the change is
working like it's supposed to?
3. What are the expected results of those actions?
-->


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
dolphin-emu-tool


freexl


== User Experience ==
keepassxc
<!-- If this change proposal is noticeable by users, how will their experiences change as a result?


This section partially overlaps with the Benefit to Fedora section above. This section should be primarily about the User Experience, written in a way that does not assume deep technical knowledge. More detailed technical description should be left for the Benefit to Fedora section.
libnuml


Describe what Users will see or notice, for example:
librasterlite2
  - Packages are compressed more efficiently, making downloads and upgrades faster by 10%.
  - Kerberos tickets can be renewed automatically. Users will now have to authenticate less and become more productive. Credential management improvements mean a user can start their work day with a single sign on and not have to pause for reauthentication during their entire day.
- Libreoffice is one of the most commonly installed applications on Fedora and it is now available by default to help users "hit the ground running".
- Green has been scientifically proven to be the most relaxing color. The move to a default background color of green with green text will result in Fedora users being the most relaxed users of any operating system.
-->


== Dependencies ==
libsbml
List of the packages from Fedora 39


=== Requires ===
libspatialite
repoquery -q --repo=rawhide{,-source} --whatrequires 'aspell*' | grep -v '^aspell' | grep -v 'src$' | pkgname


eiskaltdcpp-qt
libxlsxwriter


enchant-aspell
minizip-ng-devel


enchant2-aspell
OpenColorIO


kf5-sonnet-core
OpenColorIO-tools


kf5-sonnet-core
perl-LibSBML


moodle
python3-libsbml


perl-Code-TidyAll
qmc2


perl-Text-Aspell
qmc2-arcade


php-pspell
R-libSBML


qa-tools
ruby-SBML


recoll
sigil


recoll
vxl


xedit
widelands


xmlcopyeditor
xiphos


yagf
zfstream


=== BuildRequires ===
zfstream-devel
repoquery -q --repo=rawhide{,-source} --whatrequires 'aspell*' | grep -v '^aspell' | grep 'src$' | pkgname


eiskaltdcpp
=== BuildRequires (minizip-ng (currently built with compat flags)) ===
repoquery -q --repo=rawhide{,-source} --whatrequires 'minizip-ng*' | grep 'src$' | pkgname


enchant
collada-dom


enchant2
COPASI


hunspell-az
dolphin-emu


hunspell-csb
freexl


hunspell-de
keepassxc


hunspell-en
libCombine


hunspell-fa
libnuml


hunspell-gv
librasterlite2


hunspell-ky
libsbml


ibus-typing-booster
libsedml


inkscape
libspatialite


kf5-sonnet
libxlsxwriter


logjam
OpenColorIO


perl-MouseX-ConfigFromFile
qmc2


perl-MouseX-Types-Path-Class
sigil


perl-Text-Aspell
spatialite-gui


perl-Text-SpellChecker
spatialite-tools


PHP
vxl


recoll
widelands


tin
wordgrinder


xmlcopyeditor
xiphos


yagf
zfstream


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
== Contingency Plan ==
== Contingency Plan ==


<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
* Contingency mechanism: Revert the change to Zlib and rebuild dependent packages.
* Contingency mechanism: No contingency mechanism is required for deprecation. 
* Contingency deadline: Beta freeze
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Blocks release? TODO
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
* Contingency deadline: Beta freeze <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? -->
* Blocks release? No <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 
''NOTE: If we don't finish this change by the deadline, it is possible to just complete this change with the next release.''


== Documentation ==
== Documentation ==
 
TODO


== Release Notes ==
== Release Notes ==
TODO

Revision as of 21:07, 11 October 2023

Transitioning to Minizip-ng as compatible replacement for Minizip

Summary

Transition of the minizip to minizip-ng as it brings much more optimization and also this change is strongly tied to the Zlib Transition Change as by removing zlib package it will also remove minizip-compat subpackage.

Owner

Current status

  • Targeted release: Fedora Linux 40
  • Last updated: 2023-10-11
  • FESCo issue: <will be assigned by the Wrangler>
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

As zlib is about to be migrated to zlib-ng, the minizip-compat subpackage will be removed as well. Thus we need to rebuild all of the packages that depend on the minizip-compat with minizip-ng-compat.

Also with this, we can add the minizip-ng (without compat) to the Fedora repository as some packages might want to migrate to the more feature-rich implementation of minizip.

This change is strongly related to the Zlib Transition Change.

Feedback

Packages that require minizip-ng (the current compat version) have been rebuilt with the correct minizip-ng-compat package with its new API of version 4 in this COPR repository.

Packages that depend on the minizip-compat (subpackage of zlib package) will need to be rebuilt as well. There have been some attempts and a few of them are not building due to this change. Everything is described in this Bugzilla, <TODO rebuilt all depended packages to see the impact>.


Benefit to Fedora

  • minizip-ng has the following features
    • Zlib, BZIP2, LZMA, XZ, and ZSTD compression methods.
    • Password protection through Traditional PKWARE and WinZIP AES encryption.
    • Buffered streaming for improved I/O performance.
    • NTFS timestamp support for UTC last modified, last accessed, and creation dates.
    • Disk split support for splitting zip archives into multiple files.
    • Preservation of file attributes across file systems.
    • Follow and store symbolic links.
    • Unicode filename support through UTF-8 encoding.
    • Legacy character encoding support CP437, CP932, CP936, CP950.
    • Streaming interface for easy implementation of additional platforms.

Scope

  • Proposal owners:
    • Minizip-ng will be rebuilt with minizip-compatible API, obsoleting minizip-compat-1.3
      • Minizip-ng compat mode will be distributed in a new package called minizip-ng-compat, with its respective minizip-ng-compat-devel.
      • Initially, minizip-ng-compat will provide minizip-compat = 1.2.13 and minizip-ng-compat-devel will provide minizip-compat-devel = 1.2.13.
      • These versions will be updated following the support added to minizip-ng upstream.
    • As minizip-ng also bumped the soname, the packages critical to this change will need to be rebuilt in the side-tag. Packages that depend on the minizip-compat will be rebuilt with the new Requires/Buildrequires to minizip-ng-compat (doesn't have to be rebuilt in side-tag).
      • This may help to catch ABI-compatibility issues soon.
  • Other developers: Help with build failures may be requested.
  • Release engineering: TODO
  • Policies and guidelines: N/A
  • Trademark approval: N/A
  • Alignment with Objectives: N/A

Upgrade/compatibility impact

Minizip-ng has a minizip-compat mode that aims to preserve both API and ABI compatibility with the original Minizip. This is only applicable on the packages that currently require the minizip-compat package. Packages that require the minizip-ng-devel shared library will be changed to require the new name minizip-ng-devel-compat and also will be rebuilt in side-tag. Packages that only require the minizip-ng without it's shared library will be changed to minizip-ng-compat, so they don't end up with non-compat version of minizip-ng.


How To Test

Update the packages and verify they build without any issues.

User Experience

This change will increase compression efficiency and performance.

Dependencies

List of the packages from Fedora 40

Requires (minizip-compat)

repoquery -q --repo=rawhide{,-source} --whatrequires 'minizip-compat*' | grep -v 'src$' | pkgname

chromedriver

chromium

chromium-common

chromium-headless

domoticz

hashcat

libdigidocpp

minizip-compat-devel

springlobby

BuildRequires (minizip-compat)

repoquery -q --repo=rawhide{,-source} --whatrequires 'minizip-compat*' | grep 'src$' | pkgname

chromium

domoticz

hashcat

libdigidocpp

springlobby

Requires (minizip-ng (currently built with compat flags))

repoquery -q --repo=rawhide{,-source} --whatrequires 'minizip-ng*' | grep -v 'src$' | pkgname

collada-dom

dolphin-emu

dolphin-emu-tool

freexl

keepassxc

libnuml

librasterlite2

libsbml

libspatialite

libxlsxwriter

minizip-ng-devel

OpenColorIO

OpenColorIO-tools

perl-LibSBML

python3-libsbml

qmc2

qmc2-arcade

R-libSBML

ruby-SBML

sigil

vxl

widelands

xiphos

zfstream

zfstream-devel

BuildRequires (minizip-ng (currently built with compat flags))

repoquery -q --repo=rawhide{,-source} --whatrequires 'minizip-ng*' | grep 'src$' | pkgname

collada-dom

COPASI

dolphin-emu

freexl

keepassxc

libCombine

libnuml

librasterlite2

libsbml

libsedml

libspatialite

libxlsxwriter

OpenColorIO

qmc2

sigil

spatialite-gui

spatialite-tools

vxl

widelands

wordgrinder

xiphos

zfstream

Contingency Plan

  • Contingency mechanism: Revert the change to Zlib and rebuild dependent packages.
  • Contingency deadline: Beta freeze
  • Blocks release? TODO

Documentation

TODO

Release Notes

TODO