keep-a-changelog/source/sv/1.1.0/index.html.haml

310 lines
11 KiB
Plaintext

---
title: För en ändringslogg
description: Låt inte vänner dumpa git-loggar i ändringsloggar.
language: sv
version: 1.1.0
---
.header
.title
%h1= current_page.data.title
%h2= current_page.data.description
= link_to data.links.changelog do
Version
%strong= current_page.metadata[:page][:version]
%pre.changelog{ lang: "en" }= File.read("CHANGELOG.md")
.answers
%h3#what
%a.anchor{ href: "#what", aria_hidden: "true" }
Vad är en ändringslogg?
%p
En ändringslogg är en fil innehållandes en sammanfattad, kronologiskt ordnad
lista över viktiga ändringar för varje version av ett projekt.
%h3#why
%a.anchor{ href: "#why", aria_hidden: "true" }
Varför föra en ändringslogg?
%p
För att göra det enklare för användare och medarbetare att se exakt vilka
viktiga ändringar som har skett mellan varje utgåva (eller version) av projektet.
%h3#who
%a.anchor{ href: "#who", aria_hidden: "true" }
Vem behöver en ändringslogg?
%p
Folk i allmänhet. Oavsett om de är användare eller utvecklare, är
alla slutanvändare av mjukvaran människor som bryr sig om vad som finns
i den. När mjukvaran förändras vill de veta varför och hur.
.good-practices
%h3#how
%a.anchor{ href: "#how", aria_hidden: "true" }
Hur skapar jag en bra ändringslogg?
%h4#principles
%a.anchor{ href: "#principles", aria_hidden: "true" }
Riktlinjer
%ul
%li
Ändringsloggar är till <em>för människor</em>, inte maskiner.
%li
Det bör finnas en post för varje enskild version.
%li
Samma typ av ändringar bör grupperas.
%li
Det bör vara möjligt att länka till versioner och sektioner.
%li
Senaste versionen kommer först.
%li
Datum då respektive version släpptes ska visas.
%li
Nämn huruvida du använder #{link_to "Semantisk versionshantering", data.links.semver}.
%a.anchor{ href: "#types", aria_hidden: "true" }
%h4#types Ändringstyper
%ul
%li
%code Added
för nya funktioner.
%li
%code Changed
för ändringar i existerande funktionalitet.
%li
%code Deprecated
för funktionalitet som snart tas bort.
%li
%code Removed
för borttagen funktionalitet.
%li
%code Fixed
för felrättningar
%li
%code Security
i fall av sårbarheter.
.effort
%h3#effort
%a.anchor{ href: "#effort", aria_hidden: "true" }
Hur kan jag minimera den insats som krävs för att underhålla en ändringslogg?
%p
Ha en sektion kallad <code>Unreleased</code> högst upp för att hålla reda på
kommande ändringar.
%p Detta tjänar två syften:
%ul
%li
Folk kan se vilka ändringar de kan förvänta sig i kommande utgåvor
%li
Vid lansering behöver du bara flytta innehållet i sektionen
<code>Unreleased</code> till en ny versionspost.
.bad-practices
%h3#bad-practices
%a.anchor{ href: "#bad-practices", aria_hidden: "true" }
Kan ändringsloggar vara dåliga?
%p Ja, här är några exempel på då de är mindre användbara.
%h4#log-diffs
%a.anchor{ href: "#log-diffs", aria_hidden: "true" }
Diffar från incheckningsloggen.
%p
Det är en dålig idé att använda incheckningsloggen som ändringslogg:
de är fulla av brus; merge-incheckningar, incheckningar med
otydliga titlar, dokumentationsförändringar etc.
%p
Syftet med en incheckning är att dokumentera ett steg i utvecklingen av
källkoden. Vissa projekt städar upp bland incheckningarna, andra inte.
%p
Syftet med en post i en ändringslogg är att dokumentera den märkbara
skillnaden, oftast över flera incheckningar, för att kommunicera dessa
tydligt till slutanvändaren.
%h4#ignoring-deprecations
%a.anchor{ href: "#ignoring-deprecations", aria_hidden: "true" }
Ignorera föråldrad funktionalitet
%p
När användare uppgraderar från en version till en annan, ska det vara
smärtsamt uppenbart när något förväntas gå sönder. Det bör vara möjligt
att uppgradera till en version som listar föråldrad funktionalitet, ta
bort dessa beroenden i sitt program, och sedan uppgradera till en version
där den föråldrade funktionaliteten är borttagen.
%p
Även om du inte gör något annat, så lista åtminstone föråldrad och borttagen
funktionalitet samt förstörande förändringar i din ändringslogg.
%h4#confusing-dates
%a.anchor{ href: "#confusing-dates", aria_hidden: "true" }
Förvillande datum
%p
Lokala datumformat varierar över hela världen, och det är ofta
svårt att hitta ett användbart datumformat som känns intuitivt
för alla. Fördelen med datumformat så som
<code>2017-07-17</code> är att det följer storleksordningen från störst till
minst: år, månad och dag. Detta format överlappar inte heller
på ett tvetydligt sätt med andra datumformat, till skillnad från
lokala format som kan växla positionen på månad och dag.
Dessa anledningar tillsammans med det faktum att detta datumformat är en
#{link_to "ISO-standard", data.links.isodate}, gör att detta är rekommenderat
format för ändringsloggar.
%h4#inconsistent-changes
%a.anchor{ href: "#inconsistent-changes", aria_hidden: "true" }
Inkonsekventa ändringar
%p
En ändringslogg som endast nämner vissa av ändringarna kan vara lika riskabel
som att inte ha någon ändringslogg alls. Även om många av ändringarna kanske
inte är relevanta - till exempel behöver kanske inte borttagningen av ett
enskilt blanksteg alltid nämnas - bör alla viktiga ändringar nämnas i
ändringsloggen. Genom att inkonsekvent lägga in ändringar kan dina användare
felaktigt tro att ändringsloggen är den enda källan till sanning. Så borde
det vara. Med stor makt följer stort ansvar - att ha en bra ändringslogg
innebär att ha en konsekvent uppdaterad ändringslogg.
%aside
Det var inte allt. Hjälp mig att samla dessa antimönster genom att
= link_to "skapa en issue", data.links.issue
eller en pull requests
.frequently-asked-questions
%h3#frequently-asked-questions
%a.anchor{ href: "#frequently-asked-questions", aria_hidden: "true" }
Vanliga frågor
%h4#standard
%a.anchor{ href: "#standard", aria_hidden: "true" }
Finns det ett standardformat på ändringsloggar?
%p
Inte riktigt. Det finns #{link_to "GNU:s stilguide för ändringsloggar", data.links.gnustyle} och
den #{link_to "två stycken-långa GNU NEWS-filen", data.links.gnunews} med "riktlinjer".
Båda är bristfälliga och otillräckliga.
%p
Detta projekt har som mål att bli
= link_to "en bättre konvention för ändringsloggar.", data.links.changelog
Det utgår från uppenbart goda praxis från öppen källkods-världen och sammanför dem.
%p
Konstruktiv kritik, diskussion och förslag till förbättring
= link_to "är välkommen.", data.links.issue
%h4#filename
%a.anchor{ href: "#filename", aria_hidden: "true" }
Vad bör filen med ändringsloggen heta?
%p
Döp den till <code>CHANGELOG.md</code>. En del projekt använder
<code>HISTORY</code>, <code>NEWS</code> eller <code>RELEASES</code>.
%p
Även om det är lätt att tänka att det inte spelar så stor roll vad filen
med ändringsloggar kallas, varför göra det svårare för dina slutanvändare
att enkelt hitta de viktigaste ändringarna?
%h4#github-releases
%a.anchor{ href: "#github-releases", aria_hidden: "true" }
Hur är det med GitHub Releases?
%p
Det är ett fantasiskt initiativ. #{link_to "Releases", data.links.github_releases} kan användas
för att göra enkla git-taggar (t.ex. en tagg kallad <code>v1.0.0</code>)
till formaterade versionsanteckningar genom att manuellt lägga till
versionsanteckningar eller så kan den hämta meddelandena i kommenterade
git-taggar och omvandla dessa till versionsanteckningar.
%p
GitHub Releases skapar en icke porterbar ändringslogg som enbart kan visas
för användare på GitHub. Det är möjligt att formatera det ungefär som på
För en ändringslogg-formatet, men det tenderar att bli lite mer invecklat.
%p
Nuvarande version av GitHub releases är möjligtvis också lite svår att
hitta för slutanvändare, till skillnad från filer med normalt stora
bokstäver (<code>README</code>, <code>CONTRIBUTING</code>, etc.).
Ett annat bekymmer är att användargränssnittet för närvarande inte
erbjuder länkar till incheckningsloggar mellan olika versioner.
%h4#automatic
%a.anchor{ href: "#automatic", aria_hidden: "true" }
Kan ändringsloggar bli automatiskt tolkade?
%p
Det är svårt då människor använder vitt olika format och filnamn.
%p
#{link_to "Vandamme", data.links.vandamme} är en Ruby gem skapad av gruppen
Gemnasium som tolkar många (men inte alla)
ändringsloggar för öppen källkod.
%h4#yanked
%a.anchor{ href: "#yanked", aria_hidden: "true" }
Hur är det med återtagna utgåvor ("yanked")?
%p
Återtagna utgåvor är versioner som måste tas tillbaka på grund av
allvarliga programfel eller säkerhetsproblem. Oftast brukar dessa versioner
inte ens finnas med i ändringsloggarna. De borde det. Så här borde du
visa dem:
%p <code>## [0.0.5] - 2014-12-13 [YANKED]</code>
%p
Taggen <code>[YANKED]</code> står ut av en anledning; det är viktigt
att den syns. Då den är omsluten med hakparenteser är det också lättare
för ett program att tolka den.
%h4#rewrite
%a.anchor{ href: "#rewrite", aria_hidden: "true" }
Borde du någonsin förändra en ändringslogg?
%p
Självklart. Det finns alltid en bra anledning att förbättra en ändringslogg.
Jag öppnar regelbundet pull requests för att lägga till saknade utgåvor
för öppna källkodsprojekt som inte tar hand om sin ändringslogg.
%p
Det kan också hända att du upptäcker att du glömt att ta upp en icke
bakåtkompatibel förändring i en version. I sådana fall är det självklart
viktigt att uppdatera din ändringslogg.
%h4#contribute
%a.anchor{ href: "#contribute", aria_hidden: "true" }
Hur kan jag bidra?
%p
Detta dokument är inte <strong>sanningen</strong>, det är en noga övervägd
åsikt tillsammans med information och exempel jag har samlat på mig.
%p
Detta beror på att jag vill att vår gemenskap ska nå enighet. Jag tror på
att diskussionen är lika viktig som slutresultatet.
%p
Så tveka inte att <strong>#{link_to "kasta dig in i diskussionen", data.links.repo}</strong>.
.press
%h3 Samtal
%p
Jag var med i #{link_to "The Changelog podcast", data.links.thechangelog}
för att prata om varför förvaltare och bidragsgivare bör bry sig om
ändringsloggar, och motiveringen bakom detta projekt.