Philip Withnall
philip@tecnocode.co.uk
Will Thompson
wjt@endlessos.org
Milan Crha
mcrha@redhat.com
Hur Programvara använder metadata
Anders Jonsson
anders.jonsson@norsjovallen.se 2024

# Metadata för program

# Skärmbilder

Programvara visar skärmbilderna på detaljsidan för ett program. Detta ska typiskt inkludera skärmbilder för diverse fönster / dialogrutor för programmet, så användaren får en snabb överblick över programmets funktioner, utseende o.s.v.

När mer än en skärmbild finns i programmets metainfo-fil kommer Programvara visa skärmbilderna i en karusell.

I fall då programmets metainfo-fil inte innehåller någon skärmbild kommer en platshållarikon visas som nedan med `Inga skärmbilder`:

Platshållarikonen kan se annars ut om du använder ett anpassat ikontema.

Skärmbilder kan bli inaktuella då programmets användargränssnitt ändras. Så även om Programvara visar skärmbilder för ett program så är det viktigt att kontrollera om dessa skärmbilder är uppdaterade eller inaktuella.

Du kan förbättra skärmbildsinformation för program:

Hur du lägger till saknade skärmbilder för program

# Programkontextrad

Programkontextraden i Programvara är en samling rutor på detaljsidan för ett program, vilka visar följande detaljer.

Lagring

Säkerhet

Hårdvarustöd

Åldersklassificering

Detta visar programkontextraden för programmet Programvara:

Rutorna visas i ordningen listad ovan (med start på rutan `Lagring` till vänster).

Varje ruta beskrivs i detalj nedan.

# Lagring

Programvara visar en lagringsruta på detaljsidan för ett program. Om programmet inte är installerat visar denna den beräknade hämtningsstorleken som behövs för att installera det. Om programmet är installerat visar den lagringsutrymmet som används av programmet.

Storlekarna beräknas från data som tillhandahålls av bakänden till Programvara (såsom flatpak eller en RPM), och specificeras inte i metadata som tillhandahålls av programmet. Det finns inget du kan göra för att påverka denna ruta genom att redigera ett programs metainfo-fil. Den listas här för fullständighets skull.

# Säkerhet

Programvara visar en säkerhetsruta på detaljsidan för ett program. Denna sammanfattar information om huruvida programmet kan anses säkert att installera och köra, eller om varsamhet kan behövas innan du litar på det.

Denna ruta kombinerar information om rättigheterna som programmet begär när det körs (såsom rättighet att läsa dina filer), med information om hur programmet utvecklats. Fri programvara, där källkoden finns att läsa offentligt, kan vara säkrare än proprietär sådan, eftersom den kan granskas.

Dialogrutan som dyker upp när rutan klickas på listar de olika rättigheterna som programmet begär, samt viss information om dess licens och exekveringsmiljö.

Du kan förbättra säkerhetsinformationen:

Hur du fixar felaktig säkerhets- och rättighetsinformation

# Hårdvarustöd

Programvara visar en hårdvarustödruta på detaljsidan för ett program. Denna kombinerar information om hårdvarukraven för programmet och datorns hårdvaruförmågor, med målet att belysa ej kompatibla saker eller saknade krav — eller för att indikera att programmet bör fungera korrekt utan några kompatibilitetsproblem.

Koden tittar på följande hårdvara. Stöd för fler kan läggas till i framtiden.

Huruvida en styrplatta, en mus eller ett tangentbord är närvarande/behövs

Huruvida en spelkontroll behövs

Den minsta och rekommenderade visningsstorleken som programmet kan skalas till

Det är inte möjligt att på ett tillförlitligt sätt avgöra huruvida en spelkontroll är närvarande, då de ofta kopplas från för att de inte behövs vid normal datoranvändning.

Dialogrutan som dyker upp när rutan klickas på listar de olika hårdvarukraven för programmet, samt huruvida något av dem inte uppfylls.

Du kan förbättra hårdvaruinformationen:

Hur du lägger till saknad hårdvaruinformation

# Åldersklassificering

Programvara visar en åldersklassificeringsruta på detaljsidan för ett program. Denna visar vilket åldersintervall programmet bör vara lämpligt för, baserat på olika sorters innehåll som programmet har deklarerat att det innehåller. Denna information sammanfattas i ett format liknande spel- eller filmåldersgränserna för ditt land.

Detta kommer exempelvisa markera huruvida ett spel innehåller våld, eller huruvida ett program innehåller reklam.

Dialogrutan som dyker upp när rutan klickas på listar de olika typerna av innehåll i programmet, samt hur grovt det innehållet är.

Du kan förbättra åldersklassificeringsinformationen:

Hur du lägger till saknad innehållsklassificeringsinformation

# Licens

Programvara visar en ruta som indikerar huruvida ett program är fri programvara eller om dess licens är proprietär, speciell eller okänd. Denna ruta innehåller mer detaljerad information om projektets licens. Denna ruta listar också några av fördelarna med fri programvara. Läs mer

Ibland är licensinformationen inte korrekt för ett program, så ett program som faktiskt är fri programvara kommer visas som ”proprietärt”. På liknande sätt är ibland licensinformationen okänd.

Programvara markerar fria och öppna källkodslicenser i grönt, proprietära och speciella licenser i gult som visas här. Okända licenser markeras grått.

Du kan lägga till eller förbättra licensinformationen:

Hur du fixar felaktig licensinformation

# Länkar

Programvara visar en lista över programresurslänkar i länkrutan. De är följande:

| Webbplatslänk
| Donationslänk
| Länk för att bidra med översättningar
| Felrapporteringslänk
| Länk till hjälp
| Kontaktlänk

Några eller alla av dessa länkar kan vara närvarande beroende på huruvida de listas i programmets metainfo-fil.

I fall där programmets metainfo-fil inte innehåller någon länk så kommer följande ruta med ett frågetecken att visas.

Du kan förbättra länkarna:

Hur du lägger till saknade länkar

# Karusellruta

Program som föreslås av Programvara visas i en karusell högst upp i huvudfönstret, som kan ses här. Varje karusellruta har en bakgrundsfärg som extraheras automatiskt från programmets ikon. Ibland är denna bakgrundsfärg inte riktigt rätt för programmet och behöver anges explicit av programutvecklaren.

Uppsättningen föreslagna program bestäms av de ansvariga för Linux-distributionen.

Du kan förbättra karusellrutan:

Hur du ställer in karusellrutans bakgrundsfärg

# Var metadata kommer från

Metadata som används för att specificera vilken hårdvara en programvara kräver, vilka åldrars användare den är lämplig för, och faktorer som bidrar till hur säker den kan vara att installera, kommer från metainfo-filen för programvaran.

metainfo-filen är en XML-fil. Dess filformat anges i AppStream-specifikationen.

Se metainfo-filen för programmet GNOME Filer.

appdata är den tidigare termen för metainfo.

# Vad händer om metadata saknas

Om några metadata saknas för ett program kan Programvara bara gissa vad de borde vara, och kan därför inte presentera mycket information i sina gränssnitt. Gissningarna som Programvara gör baseras på faktum att den mesta programvara designas för skrivbordsdatorer.

Du kan hjälpa till att förbättra metadata för ett program!

# Hur du bidrar med saknad information

Om du upptäcker att ett programs sida saknar information eller innehåller felaktig information så kan du bidra på ett av följande två sätt:

Du kan rapportera saknade / felaktiga metadata till respektive programs felhanteringssystem, så programmets utvecklare kan fixa det.

Du kan fixa saknade / felaktiga metadata själv. Se guiden nedan för att lära dig hur.

För båda behöver du först hitta programmets projektsida. Länken till projektsidan bör typiskt finnas på programmets sida som visas här. Om inte kommer du behöva hitta den med en enkel Google-sökning.

Program lagras typiskt på GitLab eller GitHub. Exempelvis lagras GNOME-program på gitlab.gnome.org.

# Hur du lägger till saknade skärmbilder för program

Skärmbildsinformationen för ett program lagras i `<screenshots>`-elementet i programmets `<component>` i dess metainfo-fil.

Rekommenderat antal skärmbilder för ett program är mellan 5 och 10. Skärmbilder ska idealiskt vara i formatet PNG med bildförhållandet 16:9 och en minsta bredd på 620 bildpunkter.

Här är exempelvis skärmbildsposterna för programmet Programvara:

<screenshots> <screenshot type="default"> <image>https://gitlab.gnome.org/GNOME/gnome-software/raw/HEAD/data/metainfo/ss-overview.png</image> <caption>Overview panel</caption> </screenshot> <screenshot> <image>https://gitlab.gnome.org/GNOME/gnome-software/raw/HEAD/data/metainfo/ss-details.png</image> <caption>Details panel</caption> </screenshot> </screenshots>

# Hur du fixar felaktig säkerhets- och rättighetsinformation

Säkerhets- och rättighetsinformation för ett program kommer från olika källor beroende på hur programmet paketeras. För traditionellt paketerade program, exempelvis i RPM- eller DEB-format, så finns det ingen säkerhets- och rättighetsinformation tillgänglig och inget kan göras för att lägga till den till ett program.

För flatpak-program kommer informationen från programmets flatpak-manifest, vilket anger vilka hål i sandlådan som programmet kräver. Vart och ett av dess hål bidrar typiskt till att sänka den visade säkerhetsnivån för programmet i Programvara — och flyttar det från ”säkert” till ”potentiellt osäkert” eller ”osäkert”.

För att förbättra säkerhetsnivån för ett program behöver dess sandlåda göras så trång som möjligt genom att ta bort sandlåderättigheter där de inte behövs, och använda portaler i stället för sandlåderättigheter där möjligt. Användning av portaler sänker inte den visade säkerhetsnivån för ett program i Programvara.

Om programmet exempelvis begär läs/skrivåtkomst till hela filsystemet (`--filesystem=host`), behöver det verkligen det, eller behöver det bara komma åt filer på några få specifika platser? Om så är fallet skulle filportalen kunna användas, eller så skulle mer specifika filsystemsrättigheter kunna användas.

Om programmet fungerar i Wayland, och bara behöver fungera i X11 som en reserv, utan att använda speciella X11-funktioner, skulle det kanske kunna använda `--socket=fallback-x11` snarare än `--socket=x11`?

Guider kring specifika rättigheter eller andra paketformat kan läggas till här i framtiden.

Vidare läsning:

# Hur du lägger till saknad hårdvaruinformation

Hårdvaruinformationen för ett program lagras i `<requires>`-, `<recommends>`- och `<supports>`-element i programmets `<component>` i dess metainfo-fil.

Programvara förstår elementen `<control>` och `<display_length>`.

Se den här bloggposten eller den här bloggposten för exempel på metadata.

# Hur du lägger till saknad innehållsklassificeringsinformation

Innehållsklassificeringsinformationen för ett program lagras i `<content_rating>`-elementet i programmets `<component>` i dess metainfo-fil.

Program bör använda OARS 1.1-standarden för att fylla i detta element. Om `<content_rating>`-elementet inte angivits så är programmets innehållsklassificering okänd. Om det angivits men är tomt så har programmet inte något innehåll som skulle kunna vara olämpligt för någon publik.

Använd OARS-generatorn för att producera lämplig innehållsklassificeringsinformation för ett program.

# Hur du fixar felaktig licensinformation

Licensinformationen för ett program lagras i `<project_license>`-elementet i programmets `<component>` i dess metainfo-fil.

Innehållet i detta element ska vara ett SPDX-uttryck som beskriver den ”huvudsakliga” licensen för projektet. Detta ska typiskt vara licensen för koden, och inte inkludera licensen för dokumentationen eller sekundärt innehåll.

Om SPDX-uttrycket är en ensam licens, eller en ”or”-kombination av flera licenser, vilka alla är godkända av FSF eller OSI, så anses programmet vara ”fri programvara” och licensrutan säger det. Annars anses det vara ”proprietärt”.

Om ett program visas som ”proprietärt” trots att du tycker det inte borde vara det så är det troligt att `<project_license>`-elementet inkluderar licensen för projektets dokumentation. Ta bort den.

Till exempel, ändra licensmetadata från:

<project_license>GPL-2.0+ and CC-BY-SA-3.0</project_license>

till

<project_license>GPL-2.0+</project_license>

Vidare läsning:

Sätt (allmänt) inte dokumentationslicensen i appdata

# Hur du lägger till saknade länkar

Länkarna för ett program lagras som `<url>`-element i programmets `<component>` i dess metainfo-fil.

Lägg till så många av länktyperna dokumenterade i appstream-specifikationen som finns tillgängliga för programmet. Om ingen lämplig sida finns för en viss länktyp så behöver den inte inkluderas.

Här är exempelvis resurslänkarna för programmet Programvara:

<url type="bugtracker">https://gitlab.gnome.org/GNOME/gnome-software/-/issues</url> <url type="contact">https://discourse.gnome.org/tag/gnome-software</url> <url type="contribute">https://welcome.gnome.org/app/Software/</url> <url type="donation">https://www.gnome.org/donate/</url> <url type="homepage">https://apps.gnome.org/Software</url> <url type="translate">https://l10n.gnome.org/module/gnome-software/</url> <url type="vcs-browser">https://gitlab.gnome.org/GNOME/gnome-software/</url>

# Hur du ställer in karusellrutans bakgrundsfärg

Karusellrutans bakgrundsfärg extraheras vanligen automatiskt från programmets ikon. Om den färgen inte är till belåtenhet kan den dock åsidosättas genom att använda appstreams `<branding/>`-element med deklarerade färger (sedan 47.x-serien). Fördelen är att fler klienter kan använda färgerna.

Här är exempelvis några branding-poster:

<branding> <color type="primary" scheme_preference="light">#ff00ff</color> <color type="primary" scheme_preference="dark">#993d3d</color> </branding>

Observera att attributet `scheme_preference` ignoreras, Programvara väljer själv den bästa färgen för temat.

För bakåtkompatibilitet finns möjligheten kvar att lägga till följande XML till programmets `<component>`-element i metainfo:

<custom> <value key="GnomeSoftware::key-colors">[(124, 53, 77), (99, 16, 0)]</value> </custom>

men `<branding/>`-elementet har prioritet.

Värdet på `GnomeSoftware::key-colors` är en GVariant av textformat med typ `a(yyy)`, och representerar en oordnad mängd nyckelfärger för programmet. Varje element i mängden är en färg i RGB-format i intervallet `(0, 0, 0)` till `(255, 255, 255)`.

Färger ska väljas så att de:

Är identifierbara till programmet, matchande programmets färgtema på något sätt om möjligt.

Har kontrast med kanten på programmets ikon, så att när de används som en bakgrund bakom ikonen så kan ikonen urskiljas.

Har kontrast med förgrundstextfärgen i Adwaita-temat (`#2e3436`) och i dess mörka variant (`#eeeeec`). Detta betyder generellt att välja en färg med en medelnivå av ljushet.

Kontrast kan kontrolleras med programmet Kontrast.

Minst en färg bör anges. Fler kan anges om inte en färg kan uppfylla alla kraven ovan, så kommer Programvara välja den lämpligaste att använda i karusellrutan. Om exakt en färg anges kan dess ljusstyrka och mättnad modifieras för att förbättra kontrast mot förgrundsfärgen. Om mer än en färg anges kommer den med bäst kontrast mot förgrundsfärgen att väljas, och dess ljusstyrka och mättnad kommer inte modifieras.

# Hur du testar ändringar i karusellrutans bakgrundsfärg

Modifiera metainfo-filen för ditt program, och kör sedan Programvara med:

gnome-software --show-metainfo=/sökväg/till/app.metainfo.xml,icon=/sökväg/till/programmets/ikon.png

Detaljsidan för ditt program kommer visas. Om du navigerar tillbaka till översiktssidan för Programvara kommer ditt program vara det enda i karusellen ”i blickfånget”.