RFC: deprecate and drop %suse_update_desktop_file
In 2003, the upstream desktop files translation had a bad quality, as well as desktop tree menu. To prevent ugly and half translated desktop menu, SuSE Linux (actually Novell Linux Desktop 9) introduced the %suse_update_desktop_file macro. It was even mandatory many years ago, and even now it is still recommended in the documentation.[1] This macro does: - Provides SUSE specific desktop translations that don't sync with the upstream. - Provides SUSE specific modification of desktop Categories that don't sync with the upstream. - Provides SUSE specific modifications of Name, GenericName or Comment that don't sync with the upstream. Nowadays, upstream translations got another 20 years of development. Also Desktop Categories specification[2] was updated, and the upstream specification now covers all aspects of former X-SuSE -* Categories extensions. Additionally, the whole concept of %suse_update_desktop_file completely contradicts our policy "Upstream first"[3]. Keeping things as they are, even introduces regressions of the menu and its translation, as nobody updates these texts that diverged from the upstream 20 years ago. That is why I think that %suse_update_desktop_file is now completely obsolete, and it just adds a huge amount of the downstream translation work. We should either upstream it or drop it. If it still brings improvement to the upstream desktop file, it should be sent to the upstream. If it provides a regression, it should be dropped. If it adds obsolete X-SuSE-* desktop Categories instead of modern specification compliant ones, it should be dropped. Current status: %suse_update_desktop_files is used in Factory for 1052 desktop files in 859 packages. It means 3156 strings translation and 1052 desktop files that need to be checked. All of them introduce translatability in the Weblate project [4], some of them modify Categories, GenericName, Comment or even Name (i. e. the application has different names in openSUSE and the upstream (for example: "GNU Image Manipulation Program" is "GIMP" in openSUSE Leap). In summary, it generates a huge amount of translators' work. 1,377,072 words to be translated in sum for supported languages! And most of them just duplicate the upstream translation effort. My plan: 1) Modify %suse_update_desktop_file: a) Whenever %suse_update_desktop_file performs a real change, the user will be warned and asked to review it and send it to the upstream. b) Whenever %suse_update_desktop_file adds obsolete Categories, the user should be warned. c) Whenever %suse_update_desktop_file modifies existing upstream data (Name, GenericName, Comment, existing translations), the user should be warned. 2) Indicate packages, where %suse_update_desktop_file is the only way to translate the desktop. It could be valid for some YaST packages and maybe more. Change them to use the standard way to translate packages in the upstream, e. g. translations as part of the code in the Git repository. Or, if the desktop file is introduced in the spec file (e. g. firefox), create a substitute for update-desktop-files. 3) Turn everything above into an error. 4) Remove %suse_update_desktop_file completely. 5) Drop update-desktop-files package[5] and desktop-file-translations in Weblate[4] References: [1] https://en.opensuse.org/openSUSE:Packaging_Conventions_RPM_Macros#%suse_upda... [2] https://specifications.freedesktop.org/menu-spec/latest/apa.html [3] https://en.opensuse.org/openSUSE:Packaging_Patches_guidelines#When_to_send_t... [4] https://l10n.opensuse.org/projects/desktop-file-translations/ [5] https://build.opensuse.org/package/show/openSUSE:Factory/update-desktop-file...
On Mon Jul 15, 2024 at 8:04 PM CEST, Stanislav Brabec wrote:
In 2003, the upstream desktop files translation had a bad quality, as well as desktop tree menu. To prevent ugly and half translated desktop menu, SuSE Linux (actually Novell Linux Desktop 9) introduced the %suse_update_desktop_file macro. It was even mandatory many years ago, and even now it is still recommended in the documentation.[1]
+1000 on whole proposal, but could I have one request? Would it be possible to at least get a list of packages involved indicating their maintainers, please? Somebody who is blessed with the number of packages like me could use some hint whether this is applicable to me at all. Best, Matěj -- http://matej.ceplovi.cz/blog/, @mcepl@floss.social GPG Finger: 3C76 A027 CA45 AD70 98B5 BC1D 7920 5802 880B C9D8 The main idea of the pope’s asking for forgiveness was not to be afraid of the truth. DO NOT BE AFRAID OF TRUTH! We have to have faith in the God’s governing power to be able not to be afraid. -- On NPR The Connection from March 13, 2000
po 15. 7. 2024 v 20:25 odesílatel Matěj Cepl <mcepl@cepl.eu> napsal:
Would it be possible to at least get a list of packages involved indicating their maintainers, please? Somebody who is blessed with the number of packages like me could use some hint whether this is applicable to me at all.
Here is a list based on OBS bugowner: DarkSS florence DarkSS gprename DarkSS modem-manager-gui DarkSS smillaenlarger Dmitry_R QtDMM Dmitry_R gerbv Dmitry_R gtkwave Dmitry_R pcb Dmitry_R stlink DocB, andi89cic, jubalh, sfalken qlipper EGDFree vacuum-im Frerk macrofusion Guillaume_G MyGUI KDEMaintainers calligra-plan KDEMaintainers choqok KDEMaintainers digikam KDEMaintainers diskmonitor KDEMaintainers gammaray KDEMaintainers heaptrack KDEMaintainers k4dirstat KDEMaintainers kaffeine KDEMaintainers kdesvn KDEMaintainers kdiff3 KDEMaintainers kexi KDEMaintainers krename KDEMaintainers krita KDEMaintainers krusader KDEMaintainers kst KDEMaintainers ktimetracker KDEMaintainers kuserfeedback KDEMaintainers luckybackup KDEMaintainers massif-visualizer KDEMaintainers okteta KDEMaintainers rsibreak KDEMaintainers xdg-user-dirs Kieltux bzflag Kieltux homebank Kieltux opentyrian Kieltux warzone2100 Lazy_Kent boomaga Lazy_Kent converseen Lazy_Kent tintii Lazy_Kent urbanlightscape Lazy_Kent, alois qxmledit LinuxDonald unknown-horizons Mailaender dunelegacy Mailaender gnome-pie MargueriteSu eekboard MargueriteSu fcitx-ui-light MargueriteSu fcitx5 MargueriteSu fcitx5-configtool MargueriteSu gbdfed MargueriteSu ibus-cangjie MargueriteSu ibus-hangul MargueriteSu ibus-libpinyin MargueriteSu ibus-skk MargueriteSu presage MargueriteSu scim MargueriteSu, andythe_great cinnamon-control-center MargueriteSu, andythe_great cinnamon-screensaver MargueriteSu, andythe_great muffin MargueriteSu, andythe_great nemo MargueriteSu, andythe_great pix MargueriteSu, andythe_great xed MargueriteSu, andythe_great xplayer MargueriteSu, andythe_great xreader MargueriteSu, andythe_great xviewer MasterPatricko backintime MasterPatricko redshift MichaelTunnell uget NMorey opa-fmgui RBrownCCB, bruno_friedmann branding-openSUSE StefanBruens kicad Vogtinator discover6 Vogtinator kf6-kuserfeedback Vogtinator plasma6-systemmonitor Vogtinator systemsettings6 VortexAcherontic, rrahl0 Bottles WernerFink emacs WernerFink ghostview WernerFink gv WernerFink mgdiff WernerFink mutt WernerFink xemacs WernerFink xfig XRevan86 atril XRevan86 caja XRevan86 eom XRevan86 gajim XRevan86 geis XRevan86 hardinfo XRevan86 marco XRevan86 mate-calc XRevan86 mate-control-center XRevan86 mate-desktop XRevan86 mate-eiciel XRevan86 mate-media XRevan86 mate-notification-daemon XRevan86 mate-panel XRevan86 mate-polkit XRevan86 mate-screensaver XRevan86 mate-session-manager XRevan86 mate-system-monitor XRevan86 mate-terminal XRevan86 mate-user-share XRevan86 mate-utils XRevan86 metacity XRevan86 mozo XRevan86 nomacs XRevan86 notepadqq XRevan86 pluma XRevan86 pulseaudio-equalizer XRevan86 smplayer XRevan86, bekun compiz-emerald XRevan86, bekun compiz-manager XRevan86, bekun fusion-icon XRevan86, bekun simple-ccsm YavBav09 kaidan aaronpuchert 0ad aaronpuchert coq adamm mc adrianSuSE openshot-qt andisugandi, olh unison andrew_z, saigkill bleachbit andythe_great goverlay andythe_great veyon anicka fillets-ng anubisg1 galculator anubisg1 gpicview ateixeira apcupsd ateixeira motif azouhr lyx badshah400 artha badshah400 nextcloud-desktop bitseater meteo bmanojlovic easyeffects bnavigator spyder bruno_friedmann gcompris-qt cahu, jsegitz policycoreutils charlesa vm-install computersalat xca coolo icecream-monitor coolo qiv coolo update-desktop-files cornelisbb cantata cunix godot3 cunix, demonpig godot cwh gnubg czerw pasystray dalgaaf cellwriter dalgaaf xstroke dancermak st danidoni, hennevogel ding darix rxvt-unicode dimstar blobAndConquer dimstar supertuxkart dimstar vlc dmdiss pcp dmitry_serpokryl, jubalh, lrupp libfm dmitry_serpokryl, jubalh, lrupp parcellite dspinella git dspinella libreoffice dspinella terminator embar, lrupp, pfaffben pspp etamPL lugaru fcrozat dogtail frispete blender frispete, pgajdos gkrellm fstrba apache-chainsaw fstrba java-11-openj9 fstrba java-17-openj9 fstrba java-17-openjdk fstrba java-1_8_0-openj9 fstrba java-1_8_0-openjdk fstrba java-21-openj9 fstrba java-21-openjdk fstrba java-22-openjdk fstrba tuxguitar ftake ibus ftake ibus-anthy ftake mozc geigi cozy gladiac darktable gregfreemyer httrack group:xorg-maintainers twm group:xorg-maintainers xcalc group:xorg-maintainers xclipboard group:xorg-maintainers xkill group:xorg-maintainers xload group:xorg-maintainers xmag group:xorg-maintainers xrefresh hillwood deepin-calendar hillwood deepin-control-center hillwood deepin-draw hillwood deepin-file-manager hillwood deepin-image-viewer hillwood deepin-manual hillwood deepin-music-player hillwood deepin-reader hillwood deepin-screen-recorder hillwood deepin-system-monitor hillwood deepin-terminal hillwood deepin-voice-note insilmaril vym jengelh gcdemu jengelh schismtracker jirislaby psi+ jnweiger alevt jnweiger, saigkill calibre joachimwerner treeline jreuter gpsd jubalh fvwm2 jubalh qps jubalh, pluskalm dstat jzheng deadbeef k_mroz WindowMaker kallan open-vm-tools kfreitag kraft kill_it kvantum kkirill klavaro kkirill littlewizard kkirill stardict kkirill xiphos krop jag krop q5go larryr, lwfinger virtualbox lijews, sebix, tjyrinki_suse workrave lizhang, group:kvm-maintainers qemu lrupp fox16 lrupp gns3-gui lrupp goldendict-ng lrupp live-fat-stick lrupp semantik lrupp sqlitebrowser lrupp stardict-tools lslezak yast2-installation lslezak yast2-packager luca_b audex luca_b cervisia luca_b filelight luca_b itinerary luca_b kamoso luca_b kcachegrind luca_b kcharselect luca_b kcolorchooser luca_b kde-dev-utils luca_b kde-print-manager luca_b kdebugsettings luca_b kdeconnect-kde luca_b kdf luca_b kfind luca_b kfloppy luca_b khelpcenter luca_b kimagemapeditor luca_b kirigami-gallery luca_b kmix luca_b kolourpaint luca_b kompare luca_b kontrast luca_b kruler luca_b ktouch luca_b ktrip luca_b kwave luca_b lokalize luca_b pim-sieve-editor luca_b sweeper luca_b umbrello luca_b zanshin manfred-h, mauriziogalli, seife, tiwai, tux93 catfish manfred-h, mauriziogalli, seife, tiwai, tux93 gigolo manfred-h, mauriziogalli, seife, tiwai, tux93 libxfce4ui manfred-h, mauriziogalli, seife, tiwai, tux93 mousepad manfred-h, mauriziogalli, seife, tiwai, tux93 parole manfred-h, mauriziogalli, seife, tiwai, tux93 ristretto manfred-h, mauriziogalli, seife, tiwai, tux93 thunar manfred-h, mauriziogalli, seife, tiwai, tux93 thunar-volman manfred-h, mauriziogalli, seife, tiwai, tux93 xfce4-appfinder manfred-h, mauriziogalli, seife, tiwai, tux93 xfce4-clipman-plugin manfred-h, mauriziogalli, seife, tiwai, tux93 xfce4-dict manfred-h, mauriziogalli, seife, tiwai, tux93 xfce4-notes-plugin manfred-h, mauriziogalli, seife, tiwai, tux93 xfce4-notifyd manfred-h, mauriziogalli, seife, tiwai, tux93 xfce4-panel manfred-h, mauriziogalli, seife, tiwai, tux93 xfce4-power-manager manfred-h, mauriziogalli, seife, tiwai, tux93 xfce4-screenshooter manfred-h, mauriziogalli, seife, tiwai, tux93 xfce4-sensors-plugin manfred-h, mauriziogalli, seife, tiwai, tux93 xfce4-session manfred-h, mauriziogalli, seife, tiwai, tux93 xfce4-settings manfred-h, mauriziogalli, seife, tiwai, tux93 xfce4-taskmanager manfred-h, mauriziogalli, seife, tiwai, tux93 xfdesktop manfred-h, mauriziogalli, seife, tiwai, tux93 xfmpc manfred-h, mauriziogalli, seife, tiwai, tux93 xfwm4 markkp, ngueorguiev x3270 mbarringer imagewriter mcepl python310 mcepl python311 mcepl python312 mcepl python313 mcepl python38 mcepl python39 mfabian uim michal-m xawtv mike-fabian kanjipad mike-fabian kasumi mike-fabian, towo2 mined mimi_vx, psimons xmonad mkubecek twinkle mlandres xpinguin mnhauke QTalarm mnhauke ksnip mnhauke lbreakouthd mnhauke openomf mrbadguy fstl mseben garlic mseben sonic-visualiser mseben xmoontool mseben, plater guitarix msmeissn ecryptfs-utils msmeissn etherape msmeissn gexif msmeissn gtkam msmeissn tilda msmeissn wine msmeissn xterm mvidner yast2-control-center mvidner yast2-devtools mvidner yast2-metapackage-handler mwilck hamster-time-tracker nadvornik rocksndiamonds nemysis gsmartcontrol nkrapp, group:python-maintainers lonote oertel pommed os-gnome-maintainers NetworkManager-applet os-gnome-maintainers accerciser os-gnome-maintainers aisleriot os-gnome-maintainers alacarte os-gnome-maintainers avahi os-gnome-maintainers brasero os-gnome-maintainers cairo-clock os-gnome-maintainers caribou os-gnome-maintainers clipit os-gnome-maintainers dasher os-gnome-maintainers devhelp os-gnome-maintainers dia os-gnome-maintainers evolution os-gnome-maintainers fractal os-gnome-maintainers frogr os-gnome-maintainers gcr3 os-gnome-maintainers gcstar os-gnome-maintainers geany os-gnome-maintainers geary os-gnome-maintainers geeqie os-gnome-maintainers ghex os-gnome-maintainers glabels os-gnome-maintainers gnome-color-manager os-gnome-maintainers gnome-dvb-daemon os-gnome-maintainers gnome-firmware os-gnome-maintainers gnome-keyring os-gnome-maintainers gnome-logs os-gnome-maintainers gnome-menus os-gnome-maintainers gnome-multi-writer os-gnome-maintainers gnome-nettool os-gnome-maintainers gnome-packagekit os-gnome-maintainers gnome-recipes os-gnome-maintainers gnome-search-tool os-gnome-maintainers gobby os-gnome-maintainers goobox os-gnome-maintainers gpa os-gnome-maintainers gpick os-gnome-maintainers gq os-gnome-maintainers gramps os-gnome-maintainers gtg os-gnome-maintainers gtick os-gnome-maintainers gtkpod os-gnome-maintainers gucharmap os-gnome-maintainers impression os-gnome-maintainers junction os-gnome-maintainers key-rack os-gnome-maintainers libcanberra os-gnome-maintainers libgda os-gnome-maintainers memprof os-gnome-maintainers nautilus os-gnome-maintainers nemiver os-gnome-maintainers notification-daemon os-gnome-maintainers nuntius os-gnome-maintainers onboard os-gnome-maintainers paprefs os-gnome-maintainers pavumeter os-gnome-maintainers polkit-gnome os-gnome-maintainers procmeter os-gnome-maintainers secrets os-gnome-maintainers sound-juicer os-gnome-maintainers sysprof os-gnome-maintainers system-config-printer os-gnome-maintainers tali os-gnome-maintainers transmageddon os-gnome-maintainers transmission os-gnome-maintainers vinagre os-gnome-maintainers xdg-user-dirs-gtk oxy weechat pbleser bs pgajdos djvulibre-djview4 pgajdos doxygen pgajdos mlterm pgajdos xpenguins pgcsw UltimateDailyWallpaper plater DVDStyler plater dvdisaster plater ffado plater hydrogen plater rosegarden plater shotcut plater, tiwai solfege pluskalm bitcoin pluskalm focuswriter pluskalm htop pluskalm novprog psimons cppunit psimons lftp psmt armagetron psmt khunphan psmt, zaitseff trader qzhao fontforge rfrohl wireshark rmax alpine sbrabec colorhug-client sdrahn nedit sebix byobu sebix ddrescueview sebix fred sebix screen-message seife arandr sfent linux32 simotek carla simotek cmake simotek enlightenment simotek ephoto simotek fish simotek qdirstat simotek synergy simotek terminology simotek variety simotek xscreensaver swyear pcmanx-gtk2 systemd-maintainers systemd-ui thomas-schraitle wqy-zenhei-fonts tiwai alsa-tools tiwai aseqview tiwai jack-rack tiwai meterbridge tiwai seq24 tiwai snd tiwai timidity tiwai vkeybd tobiasmue gnome-keysign tux93 liferea wfrisch zim worldcitizen supertux2 xenonpk ppsspp yast2-maintainers autoyast2 undefined 3omns undefined 7kaa undefined AdwSteamGtk undefined AusweisApp undefined Cadence undefined FlightGear undefined FreeCAD undefined FreeFileSync undefined Jamulus undefined MozillaFirefox undefined MozillaThunderbird undefined OpenLP undefined OpenRGB undefined PlayOnLinux undefined Printrun undefined PrusaSlicer undefined QtPass undefined TeXmacs undefined TreeMaker undefined XyGrib undefined adriconf undefined agenda undefined alacritty undefined almanah undefined amsynth undefined antimicrox undefined aop undefined appeditor undefined aranym undefined aravis undefined ardour undefined asteroid undefined atomiks undefined atop undefined baka-mplayer undefined ballerburg undefined barrier undefined bibletime undefined blobwars undefined bluefish undefined blueman undefined bluemoon undefined bmon undefined bomns undefined bookworm undefined brickv undefined cadabra2 undefined calamares undefined calcurse undefined capnet-assist undefined cecilia undefined cherrytree undefined chirp undefined chromium-bsu undefined ciano undefined cinnamon undefined circuslinux undefined ckb-next undefined clack undefined clamtk undefined clapper undefined claws-mail undefined clipgrab undefined clipped undefined codelite undefined colorpicker undefined compton undefined conkeror undefined cosmic-edit undefined cosmic-ext-tasks undefined cosmic-files undefined cosmic-player undefined cosmic-screenshot undefined cosmic-store undefined cosmic-term undefined crow-translate undefined cura undefined curtail undefined dbgl undefined desktop-data-openSUSE undefined dianara undefined dippi undefined distcc undefined dlt-viewer undefined domination undefined droidcam undefined eaglemode undefined ebumeter undefined edgar undefined engauge-digitizer undefined enigma undefined fcitx undefined filezilla undefined fips undefined flameshot undefined fldigi undefined fmit undefined font-manager undefined fotowall undefined freeciv undefined frescobaldi undefined fritzing undefined fs-uae-arcade undefined fs-uae-launcher undefined fwbuilder undefined fwknop-gui undefined galaxis undefined gcad3d undefined gcin undefined gearlever undefined giada undefined gimp undefined git-cola undefined gjiten undefined gmic undefined gnuhealth-client undefined gnunet undefined gnuradio undefined go-for-it undefined goxel undefined gparted undefined gpredict undefined grafx2 undefined grandorgue undefined grsync undefined gst123 undefined gummi undefined guvcview undefined haguichi undefined heimdall undefined helix undefined highlight undefined hourglass undefined howl undefined hplip undefined htmldoc undefined hugin undefined hwloc undefined i3 undefined i3-gaps undefined iamb undefined ibus-typing-booster undefined icewm undefined imageburner undefined imagej undefined inspectrum undefined irssi undefined jaero undefined java-11-openjdk undefined java-binfmt-misc undefined jaxodraw undefined jgmenu undefined jmol undefined jondo undefined jondofox undefined julia undefined kbibtex undefined kdiskmark undefined klatexformula undefined kshutdown undefined ktikz undefined kupfer undefined ladish undefined lagrange undefined laptop-mode-tools undefined lcurse undefined leafpad undefined lector undefined lekha undefined leocad undefined libhdhomerun undefined librecad undefined libstatgrab undefined lmarbles undefined lnav undefined lookbook undefined loook undefined lpairs undefined lshw undefined lxappearance undefined lxde-common undefined lximage-qt undefined lxinput undefined lxrandr undefined lxtask undefined lxterminal undefined maelstrom undefined mame undefined mathmod undefined maxima undefined mayavi undefined mediainfo undefined megaglest undefined metronome undefined minder undefined minetest undefined minitube undefined mirrormagic undefined molsketch undefined mp undefined mrboom undefined mrrescue undefined mtr undefined mupdf undefined museic undefined mygnuhealth undefined myquerytutor undefined naev undefined nbsdgames undefined ncspot undefined netease-cloud-music-gtk undefined newsflash undefined nfoview undefined nitrogen undefined nmcli-dmenu undefined non-ntk undefined noson-app undefined nulloy undefined nvdock undefined nvtop undefined nyxt undefined obconf undefined oboete undefined openbox undefined openhantek undefined openmw undefined opensurge undefined opentoonz undefined osdlyrics undefined otpclient undefined owncloud-client undefined palaura undefined palette undefined pcmanfm undefined pdfarranger undefined pdfmixtool undefined pdfquirk undefined peek undefined phoronix-test-suite undefined picard undefined pidgin undefined pika-backup undefined pingus undefined pipenightdreams undefined piper undefined pipewire-module-xrdp undefined pixelorama undefined plank undefined plee-the-bear undefined pongix undefined powermanga undefined projectM undefined projectlibre undefined proton-vpn undefined protontricks undefined protonvpn-gui undefined pulseeffects undefined pulseview undefined putty undefined pympress undefined python-gpt4all undefined python-ipython undefined python-jupyterlab undefined python-nbclassic undefined python-notebook undefined python-onionshare undefined python-pyzo undefined python-qtconsole undefined qactus undefined qelectrotech undefined qhexedit2 undefined qmodbus undefined qnapi undefined qolibri undefined qsyncthingtray undefined qsynth undefined qt6-quickeffectmaker undefined qt6-tools undefined qtile undefined qtodotxt undefined quakespasm undefined quick-webapps undefined quilter undefined racket undefined rawtherapee undefined razercfg undefined rbutil undefined reco undefined rednotebook undefined rehex undefined remmina undefined rescue undefined retext undefined rioterm undefined rkward undefined rockdodger undefined rpi-imager undefined rtorrent undefined scantailor undefined scap-workbench undefined scite undefined scrcpy undefined screencast undefined sddm-conf undefined sdl-asylum undefined sdl-ball undefined sdl_bomber undefined sdlpop undefined seamonkey undefined sigil undefined simplescreenrecorder undefined simutrans undefined ski undefined software-o-o-launcher undefined solaar undefined sonic-pi undefined soundkonverter undefined spacefm undefined spek undefined sqliteman undefined starfighter undefined strawberry undefined subtitleeditor undefined sudoku-sensei undefined superpaper undefined svxlink undefined syncplay undefined syncthing undefined sysstat undefined systester undefined taglib undefined taigo undefined tecnoballz undefined teeworlds undefined termit undefined testdisk undefined texworks undefined thermald undefined thonny undefined timeshift undefined tlpui undefined tomatoes undefined torbrowser-launcher undefined translator undefined trigger-rally undefined tryton undefined tuba undefined tuner undefined tuxpaint undefined tuxpaint-config undefined tvbrowser undefined tvtime undefined twind undefined ufraw undefined upplay undefined upsm undefined urh undefined usbview undefined utox undefined v4l-utils undefined vido undefined viewnior undefined vifm undefined vim undefined viruskiller undefined vms-empire undefined vnote undefined vocal undefined vodovod undefined vorta undefined warpinator undefined winetricks undefined wizznic undefined wumpus undefined wxMaxima undefined wxmp3gain undefined x11vnc undefined xcowsay undefined xgalaga++ undefined xgalaga-sdl undefined xjadeo undefined xmahjongg undefined xmgrace undefined xmorph undefined xmoto undefined xonotic undefined xpra undefined xsane undefined xyscan undefined yacreader undefined yamagi-quake2 undefined yamagi-quake2-ctf undefined yate undefined yishu undefined yubikey-manager-qt undefined yubioath-desktop undefined zaz undefined zeal undefined zile undefined zynaddsubfx
Hello, +1 from me as well, and thanks for processing the initial data and providing us with the list of affected packages. I will ask SUSE Packagers to start proactively working on their packages soon. Thanks for driving this initiative. Kristyna Dne 15. 07. 24 v 20:04 Stanislav Brabec napsal(a):
In 2003, the upstream desktop files translation had a bad quality, as well as desktop tree menu. To prevent ugly and half translated desktop menu, SuSE Linux (actually Novell Linux Desktop 9) introduced the %suse_update_desktop_file macro. It was even mandatory many years ago, and even now it is still recommended in the documentation.[1]
This macro does: - Provides SUSE specific desktop translations that don't sync with the upstream. - Provides SUSE specific modification of desktop Categories that don't sync with the upstream. - Provides SUSE specific modifications of Name, GenericName or Comment that don't sync with the upstream.
Nowadays, upstream translations got another 20 years of development. Also Desktop Categories specification[2] was updated, and the upstream specification now covers all aspects of former X-SuSE -* Categories extensions.
Additionally, the whole concept of %suse_update_desktop_file completely contradicts our policy "Upstream first"[3].
Keeping things as they are, even introduces regressions of the menu and its translation, as nobody updates these texts that diverged from the upstream 20 years ago.
That is why I think that %suse_update_desktop_file is now completely obsolete, and it just adds a huge amount of the downstream translation work. We should either upstream it or drop it.
If it still brings improvement to the upstream desktop file, it should be sent to the upstream. If it provides a regression, it should be dropped. If it adds obsolete X-SuSE-* desktop Categories instead of modern specification compliant ones, it should be dropped.
Current status: %suse_update_desktop_files is used in Factory for 1052 desktop files in 859 packages. It means 3156 strings translation and 1052 desktop files that need to be checked. All of them introduce translatability in the Weblate project [4], some of them modify Categories, GenericName, Comment or even Name (i. e. the application has different names in openSUSE and the upstream (for example: "GNU Image Manipulation Program" is "GIMP" in openSUSE Leap).
In summary, it generates a huge amount of translators' work. 1,377,072 words to be translated in sum for supported languages! And most of them just duplicate the upstream translation effort.
My plan: 1) Modify %suse_update_desktop_file: a) Whenever %suse_update_desktop_file performs a real change, the user will be warned and asked to review it and send it to the upstream. b) Whenever %suse_update_desktop_file adds obsolete Categories, the user should be warned. c) Whenever %suse_update_desktop_file modifies existing upstream data (Name, GenericName, Comment, existing translations), the user should be warned. 2) Indicate packages, where %suse_update_desktop_file is the only way to translate the desktop. It could be valid for some YaST packages and maybe more. Change them to use the standard way to translate packages in the upstream, e. g. translations as part of the code in the Git repository. Or, if the desktop file is introduced in the spec file (e. g. firefox), create a substitute for update-desktop-files. 3) Turn everything above into an error. 4) Remove %suse_update_desktop_file completely. 5) Drop update-desktop-files package[5] and desktop-file-translations in Weblate[4]
References: [1] https://en.opensuse.org/openSUSE:Packaging_Conventions_RPM_Macros#%suse_upda... [2] https://specifications.freedesktop.org/menu-spec/latest/apa.html [3] https://en.opensuse.org/openSUSE:Packaging_Patches_guidelines#When_to_send_t... [4] https://l10n.opensuse.org/projects/desktop-file-translations/ [5] https://build.opensuse.org/package/show/openSUSE:Factory/update-desktop-file...
participants (3)
-
Kristýna Streitová
-
Matěj Cepl
-
Stanislav Brabec