From 714fc86f5c9b356631ba9e5a22b013071c6eeb13 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Sun, 19 Mar 2017 07:00:57 +0100 Subject: [PATCH 01/37] Only default to last version if available It's quite possible that not all languages will be on the latest version of the manifesto at the same time. This allows me to fight inertia by simply defaulting each version to the latest possible version. --- config.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/config.rb b/config.rb index 5f3624b..dd89b3d 100644 --- a/config.rb +++ b/config.rb @@ -31,8 +31,14 @@ set :site_url, 'http://keepachangelog.com' redirect "index.html", to: "en/#{$last_version}/index.html" $languages.each do |language| - language_param = language.last.parameterize - redirect "#{language.first}/index.html", to: "#{language.first}/#{$last_version}/index.html" + code = language.first + available_versions = Dir.entries("source/#{code}") - %w[. ..] + + if Dir.exists?("source/#{code}/#{$last_version}") + redirect "#{code}/index.html", to: "#{code}/#{$last_version}/index.html" + else + redirect "#{code}/index.html", to: "#{code}/#{available_versions.last}/index.html" + end end # ----- Assets ----- # From 4af96a47b14eed9bc81f8dd00fa88694abbad2f5 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Sun, 19 Mar 2017 07:08:19 +0100 Subject: [PATCH 02/37] Greatly simplify default version redirection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Can’t believe I didn’t think of it sooner but obviously we might as well check all available version for each language and redirect by default to the latest possible. Now I’ll have to figure out a way to display when the latest available version *for a language* isn’t the latest version of the manifesto (so if it doesn’t match the latest English version). --- config.rb | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/config.rb b/config.rb index dd89b3d..89c65f2 100644 --- a/config.rb +++ b/config.rb @@ -3,7 +3,11 @@ # -------------------------------------- # ----- Site ----- # -$last_version = "0.3.0" +# Last version should be the latest English version since the manifesto is first +# written in English, then translated into other languages later. +$last_version = (Dir.entries("source/en") - %w[. ..]).last + +# This list of languages populates the language navigation. $languages = { "cs" => "Čeština", "de" => "Deutsch", @@ -32,13 +36,8 @@ redirect "index.html", to: "en/#{$last_version}/index.html" $languages.each do |language| code = language.first - available_versions = Dir.entries("source/#{code}") - %w[. ..] - - if Dir.exists?("source/#{code}/#{$last_version}") - redirect "#{code}/index.html", to: "#{code}/#{$last_version}/index.html" - else - redirect "#{code}/index.html", to: "#{code}/#{available_versions.last}/index.html" - end + versions = Dir.entries("source/#{code}") - %w[. ..] + redirect "#{code}/index.html", to: "#{code}/#{versions.last}/index.html" end # ----- Assets ----- # From 9bae4a465e988090171e161792a069b911c7f8a6 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Sun, 19 Mar 2017 07:22:42 +0100 Subject: [PATCH 03/37] =?UTF-8?q?Display=20a=20notice=20if=20this=20isn?= =?UTF-8?q?=E2=80=99t=20the=20latest=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will allow visitors to translations to be aware (if they speak English, I know…) that there is a newer version already available in English but that it hasn’t been translated into their language yet. --- source/layouts/layout.html.haml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/source/layouts/layout.html.haml b/source/layouts/layout.html.haml index e6ddcab..46696a6 100644 --- a/source/layouts/layout.html.haml +++ b/source/layouts/layout.html.haml @@ -35,7 +35,19 @@ %li= link_to "#{language.last} [#{language.first}]", "/#{language.first}/", { rel: "alternate", lang: "#{language}", hreflang: "#{language}" } - .main{role: "main"}= yield + .main{role: "main"} + - if current_page.metadata[:page][:version] != $last_version + - code = current_page.metadata[:page][:language] + - versions = Dir.entries("source/#{code}") - %w[. ..] + - if versions.include?($last_version) + = link_to "Version #{$last_version}", "#{code}/#{$last_version}" + - else + %p + The latest version of Keep a Changelog is not yet available in + this language but + = link_to "you can read it in English", "/en/#{$last_version}" + for now. + = yield %footer.clearfix{role: "banner"} %p.license From b8b78adc54c630f20e4e3d6d3048f20883d2293f Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Sun, 19 Mar 2017 07:31:41 +0100 Subject: [PATCH 04/37] Invite people to help translate latest version Hopefully we can find a way to translate this notice into every current language via: https://github.com/olivierlacan/keep-a-changelog/issues/151 --- source/layouts/layout.html.haml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/layouts/layout.html.haml b/source/layouts/layout.html.haml index 46696a6..b30ec30 100644 --- a/source/layouts/layout.html.haml +++ b/source/layouts/layout.html.haml @@ -43,10 +43,12 @@ = link_to "Version #{$last_version}", "#{code}/#{$last_version}" - else %p - The latest version of Keep a Changelog is not yet available in - this language but + The latest version (#{$last_version}) is not yet available in this + language but = link_to "you can read it in English", "/en/#{$last_version}" - for now. + for now and + = link_to "help translate ", "https://github.com/olivierlacan/keep-a-changelog/issues" + it. = yield %footer.clearfix{role: "banner"} From 00fd940df579753fb425fb15a7222c074aca325c Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Sun, 19 Mar 2017 07:33:31 +0100 Subject: [PATCH 05/37] No need to show language codes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Few people probably are aware of what those are and they’re supremely distracting. --- source/layouts/layout.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/layouts/layout.html.haml b/source/layouts/layout.html.haml index b30ec30..910a966 100644 --- a/source/layouts/layout.html.haml +++ b/source/layouts/layout.html.haml @@ -32,7 +32,7 @@ %nav.locales{role: "navigation"} %ul - $languages.each do |language| - %li= link_to "#{language.last} [#{language.first}]", "/#{language.first}/", + %li= link_to "#{language.last}", "/#{language.first}/", { rel: "alternate", lang: "#{language}", hreflang: "#{language}" } .main{role: "main"} From 76d8c70889c7c32a85d0588a2f81f119a19952d5 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Thu, 23 Mar 2017 03:47:37 +0100 Subject: [PATCH 06/37] Yeah, this is not a thing. --- routes.rb | 1 - 1 file changed, 1 deletion(-) delete mode 100644 routes.rb diff --git a/routes.rb b/routes.rb deleted file mode 100644 index 9be1991..0000000 --- a/routes.rb +++ /dev/null @@ -1 +0,0 @@ -redirect "/", to: "/0.3.0/" From 7adec560c8bf2856679dfff2d84e5425ad4aae34 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Thu, 23 Mar 2017 03:48:28 +0100 Subject: [PATCH 07/37] Set TOC data for Markdown & override Haml filter --- config.rb | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/config.rb b/config.rb index 89c65f2..3e183f4 100644 --- a/config.rb +++ b/config.rb @@ -55,12 +55,14 @@ activate :automatic_image_sizes activate :syntax set :markdown_engine, :redcarpet -set :markdown, { +$markdown_config = { fenced_code_blocks: true, footnotes: true, smartypants: true, - tables: true + tables: true, + with_toc_data: true } +set :markdown, $markdown_config # -------------------------------------- # Helpers @@ -117,3 +119,19 @@ activate :autoprefixer do |config| config.browsers = ['last 2 versions', 'Explorer >= 10'] config.cascade = false end + +# Haml doesn't pick up on Markdown configuration so we have to remove the +# default Markdown Haml filter and reconfigure one that follows our +# global configuration. + +module Haml::Filters + remove_filter("Markdown") #remove the existing Markdown filter + + module Markdown + include Haml::Filters::Base + + def render(text) + Redcarpet::Markdown.new(Redcarpet::Render::HTML.new($markdown_config)).render(text) + end + end +end From 62340f6552d51168dbc38127d1489b43bb44bde4 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Thu, 23 Mar 2017 04:05:00 +0100 Subject: [PATCH 08/37] Finally restore the header anchor links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is why you don’t merge pull requests without proper reviews. Almost makes me feel like we need feature specs for this damn project. :-) --- config.rb | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/config.rb b/config.rb index 3e183f4..dddbe66 100644 --- a/config.rb +++ b/config.rb @@ -55,12 +55,32 @@ activate :automatic_image_sizes activate :syntax set :markdown_engine, :redcarpet + +## Override default Redcarpet renderer in order to define a class +class CustomMarkdownRenderer < Redcarpet::Render::HTML + def header(text, header_level) + slug = text.gsub(" ", "-").downcase + tag_name = "h#{header_level}" + anchor_link = "" + header_tag_open = "<#{tag_name} id='#{slug}'>" + + output = "" + output << header_tag_open + output << anchor_link + output << text + output << "" + + output + end +end + $markdown_config = { fenced_code_blocks: true, footnotes: true, smartypants: true, tables: true, - with_toc_data: true + with_toc_data: true, + renderer: CustomMarkdownRenderer } set :markdown, $markdown_config @@ -130,8 +150,12 @@ module Haml::Filters module Markdown include Haml::Filters::Base + def renderer + $markdown_config[:renderer] + end + def render(text) - Redcarpet::Markdown.new(Redcarpet::Render::HTML.new($markdown_config)).render(text) + Redcarpet::Markdown.new(renderer.new($markdown_config)).render(text) end end end From bce6d97f3b00aaa84807cc50d2107fd1074e003d Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Thu, 23 Mar 2017 04:37:03 +0100 Subject: [PATCH 09/37] Add some language notices for last version Thanks to contributor help from https://github.com/olivierlacan/keep-a-changelog/issues/151 --- config.rb | 80 +++++++++++++++++++++++++++------ source/layouts/layout.html.haml | 19 ++++---- 2 files changed, 78 insertions(+), 21 deletions(-) diff --git a/config.rb b/config.rb index dddbe66..18e4ca8 100644 --- a/config.rb +++ b/config.rb @@ -8,20 +8,74 @@ $last_version = (Dir.entries("source/en") - %w[. ..]).last # This list of languages populates the language navigation. +issues_url = 'https://github.com/olivierlacan/keep-a-changelog/issues' $languages = { - "cs" => "Čeština", - "de" => "Deutsch", - "en" => "English", - "es-ES" => "Español", - "fr" => "Français", - "it-IT" => "Italiano", - "pt-BR" => "Brazilian Portugese", - "ru" => "Pyccкий", - "sl" => "Slovenščina", - "sv" => "Svenska", - "tr-TR" => "Türkçe", - "zh-CN" => "简体中文", - "zh-TW" => " 繁體中文" + "cs" => { + name: "Čeština", + notice: "" + }, + "de" => { + name: "Deutsch", + notice: "Die neuste version (#{$last_version}) ist noch nicht auf Deutsch + verfügbar, aber du kannst sie dir auf Englisch durchlesen + und bei der Übersetzung mithelfen." + }, + "en" => { + name: "English", + notice: "" + }, + "es-ES" => { + name: "Español", + notice: "Aún no está disponible la última versión (#{$last_version}) en + español, pero por ahora puedes leerla en inglés y ayudar a traducirla." + }, + "fr" => { + name: "Français", + notice: "La dernière version (#{$last_version}) n'est pas encore disponible + en français, mais vous pouvez la lire en anglais pour + l'instant et aider à la traduire." + }, + "it-IT" => { + name: "Italiano", + notice: "L'ultima versione (#{$last_version}) non è ancora disponibile in + Italiano, ma la potete leggere in Inglese per ora e + potete contribuire a tradurla." + }, + "pt-BR" => { + name: "Brazilian Portugese", + notice: "A última versão (#{$last_version}) ainda não está disponível em + Português mas nesse momento você pode lê-la em inglês e + ajudar em sua tradução." + }, + "ru" => { + name: "Pyccкий", + notice: "Самая последняя версия (#{$last_version}) ещё пока не переведена на + русский, но вы можете прочитать её на английском и помочь с переводом." + }, + "sl" => { + name: "Slovenščina", + notice: "" + }, + "sv" => { + name: "Svenska", + notice: "Den senaste versionen (#{$last_version}) är ännu inte tillgänglig på Svenska, + men du kan läsa det på engelska och även hjälpa till att översätta det." + }, + "tr-TR" => { + name: "Türkçe", + notice: "" + }, + "zh-CN" => { + name: "简体中文", + notice: "" + }, + "zh-TW" => { + name: "繁體中文", + notice: "" + } } activate :i18n, diff --git a/source/layouts/layout.html.haml b/source/layouts/layout.html.haml index 910a966..207243c 100644 --- a/source/layouts/layout.html.haml +++ b/source/layouts/layout.html.haml @@ -32,7 +32,7 @@ %nav.locales{role: "navigation"} %ul - $languages.each do |language| - %li= link_to "#{language.last}", "/#{language.first}/", + %li= link_to "#{language.last[:name]}", "/#{language.first}/", { rel: "alternate", lang: "#{language}", hreflang: "#{language}" } .main{role: "main"} @@ -42,13 +42,16 @@ - if versions.include?($last_version) = link_to "Version #{$last_version}", "#{code}/#{$last_version}" - else - %p - The latest version (#{$last_version}) is not yet available in this - language but - = link_to "you can read it in English", "/en/#{$last_version}" - for now and - = link_to "help translate ", "https://github.com/olivierlacan/keep-a-changelog/issues" - it. + - if $languages[code][:notice] + %p.last-version-notice= $languages[code][:notice] + - else + %p + The latest version (#{$last_version}) is not yet available in + this language but + = link_to "you can read it in English", "/en/#{$last_version}" + for now and + = link_to "help translate ", "https://github.com/olivierlacan/keep-a-changelog/issues" + it. = yield %footer.clearfix{role: "banner"} From 9764814a55b85ba7d3ea62140c6fea8c59e7505d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C5=82awek=20Amielucha?= Date: Sat, 1 Apr 2017 12:28:37 +0200 Subject: [PATCH 10/37] Polish translation --- source/pl-PL/0.3.0/index.html.haml | 145 +++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 source/pl-PL/0.3.0/index.html.haml diff --git a/source/pl-PL/0.3.0/index.html.haml b/source/pl-PL/0.3.0/index.html.haml new file mode 100644 index 0000000..9a8cbdb --- /dev/null +++ b/source/pl-PL/0.3.0/index.html.haml @@ -0,0 +1,145 @@ +--- +description: Prowadź Changelog +title: Prowadź Changelog +language: pl-PL +version: 0.3.0 +--- + +:markdown + # Prowadź CHANGELOG + + ## Nie pozwól, by twoi znajomi wklejali logi gita do CHANGELOGów™ + + Wersja **#{current_page.metadata[:page][:version]}** + + ### Czym jest changelog? + Changelog, inaczej rejestr zmian lub historia zmian, to plik zawierający chronologicznie uporządkowaną listę istotnych zmian dla każdej wersji projektu. + +%pre.changelog= File.read("CHANGELOG.md") + +:markdown + ### Co jest celem prowadzenia changelogu? + Changelog pomaga użytkownikom zrozumieć, jakie znaczące zmiany zostały wprowadzone w każdej wersji projektu. + + ### Dlaczego miałoby mi zależeć? + Ponieważ narzędzia informatyczne są dla ludzi. Jeśli ci nie zależy, + dlaczego przyczyniasz się do powstawania otwartego oprogramowania (open source)? + + Rozmawiałem na podcaście ["The Changelog" z Adamem Stacoviakiem i Jerodem Santo][thechangelog] + (odpowiednia nazwa, prawda?) o tym, dlaczego osobom wspierającym otwarte programowanie powinno zależeć, + oraz o celach samego projektu. Jeśli masz chwilę (1:06), zapraszam do posłuchania - warto. + + ### Co składa się na dobry changelog? + Cieszę się, że zapytałeś. + + Dobry changelog trzyma się następujących zasad: + + - Jest stworzony dla ludzi, nie maszyn, więc liczy się czytelność. + - Prostota dodawania linków do każdego rozdziału (dlatego używa się Markdown zamiast prostego tekstu). + - Jeden podrozdział dla każdej wersji. + - Wyszczególniaj wydania w odwrotnym porządku chronologicznym (najnowsza na górze). + - Wszystkie daty zapisuj w formacie `YYYY-MM-DD`. (Przykład: `2012-06-02` dla `2 czerwca 2012 r.`). To [rozsądny](http://xkcd.com/1179/), niezależny od języka międzynarodowy format. + - Zawsze określaj, czy projekt jest zgodny z [Semantycznym Wersjonowaniem][semver]. + - Każda wersja powinna: + - Zawierać datę w wyżej wymienonym formacie. + - Grupować zmiany w celu opisu ich wpływu na projekt, w następujący sposób: + - `Added` dla nowych funkcji. + - `Changed` dla zmian w istniejącej funkcjonalności. + - `Deprecated` (przestarzałe) dla uprzednio stabilnych funkcji, które zostaną usunięte w przyszłych wydaniach projektu. + - `Removed` dla przestarzałych funkcji usuniętych w bieżącej wersji. + - `Fixed` dla poprawionych błędów (bugów). + - `Security` w celu poinformowania użytkowników o zalecanej aktualizacji naprawiającej luki bezpieczeństwa. + + ### Jak mogę zminimalizować wysiłek wkładany w prowadzenie changelogu? + Zawsze umieszczaj rozdział `"Unreleased"` na szczycie dokumentu, w celu śledzenia wszelkich zmian. + + Ta praktyka ma dwa cele: + + - Użytkownicy widzą, jakich zmian mogą się spodziewać w nadchodzących wydaniach. + - W momencie aktualizacji, musisz jedynie zastąpić `"Unreleased"` wersją projektu oraz dodać nowy nagłówek `"Unreleased"` na samej górze. + + ### Co sprawia, że jednorożce płaczą? + Dobrze... zabierzmy się za to. + + - **Wrzucanie logów diff z zamieszczonymi zmianami.** Po prostu tego nie rób. Nikomu tym nie pomagasz. + - **Niewyszczególnianie przestarzałych funkcji.** Użytkownik powinien zostać wyraźnie poinformowany, że coś przestanie działać po aktualizacji. + - **Daty w formatach regionalnych.** W USA ludzie zapisują miesiąc na samym początku daty ("06-02-2012" dla 2 czerwca 2012 r., + co nie ma *najmniejszego* sensu), podczas gdy gdzie indziej wiele osób pisze "2 czerwiec 2012", jednak wymawia to w inny sposób. + "2012-06-02" to logiczny format zapisywany od największej, do najmniejszej wartości, oraz nie pokrywa się z innymi formatami w niejednoznaczny sposób. + Jest to jednocześnie [standard ISO](http://www.iso.org/iso/home/standards/iso8601.htm). To wszystko sprawia, że jest to rekomendowany format zapisywania daty w changelogach. + + To jeszcze nie koniec. Pomóż mi zebrać wszystkie łzy jednorożców [zgłaszając problem][issues] lub wprowadzając zmianę poprzez pull request. + + ### Czy istnieje standardowy format changelogu? + Niestety nie, ale spokojnie. Wiem, że spieszysz wkleić link do tego przewodnika stylu changelogu GNU, czy do dwóch paragrafów "wytycznych" GNU NEWS. + Przewodnik stylu GNU to dobry, ale niestety naiwny początek. Nie ma nic złego w byciu naiwnym, ale gdy ludzie potrzebują wytycznych, bycie naiwnym rzadko pomaga. + Szczególnie, gdy istnieje wiele sytuacji i szczególnych przypadków z którymi trzeba się zmierzyć. + + Mam nadzieję, że ten projekt zostanie uznany [lepszym standardem pliku CHANGELOG][CHANGELOG]. + + Nie uważam, że status quo jest wystarczające i myślę, że jako społeczność, możemy stworzyć lepsze konwencje, + jeśli spróbujemy zastosować dobre praktyki stosowane w prawdziwych projektach informatycznych. + Proszę, zapoznaj się z projektem i pamiętaj, że [dyskusja i sugestie są zawsze mile widziane][issues]! + + ### Jak powinien być nazwany plik changelog? + Jeśli nie potrafisz wywnioskować z powyższego przykładu, `CHANGELOG.md` to do tej pory najepsza konwencja. + + Niektóre projekty również stosują `HISTORY.txt`, `HISTORY.md`, `History.md`, `NEWS.txt`, + `NEWS.md`, `News.txt`, `RELEASES.txt`, `RELEASE.md`, `releases.md`, itd. + + Straszny bałagan. Wszystkie te nazwy sprawiają, że jeszcze ciężej jest odnaleźć ten plik. + + ### Dlaczego nie mielibyśmy po prostu stosować raportu `git log`? + Ponieważ logi typu diff są z natury zagmatwane. Nawet przy hipotetycznym projekcie stworzonym przez doskonałe istoty ludzkie, które nigdy nie popełniają literówek, + nigdy nie zapominają o zsynchronizowaniu nowo dodanych plików czy nigdy niczego nie pomijają porczas refaktoryzacji kodu, logi diff nie mogłyby zastąpić changelogu. + Celem `git commit` jest udokumentowanie jednego kroku w procesie, dzięki któremu kod ewoluuje z jednego stanu w kolejny. Celem changelogu jest udokumentowanie tych różnic pomiędzy stanami kodu, które są godne uwagi. + + Różnica między changelogiem a logiem diff, tak samo jak różnica między dobrymi komentarzami a kodem, jest następująca: pierwsze opisuje *dlaczego*, drugie - *jak*. + + ### Czy changelog może być generowany automatycznie? + To nie takie proste, ponieważ ludzie stosują bardzo różne formaty oraz nazwy plików. + + [Vandamme][vandamme] to gem Ruby stworzony przez ekipę [Gemnasium][gemnasium], parsujący changelogi wielu (ale nie wszystkich) projektów open source. + + ### Dlaczego czasem stosujesz pisownię "CHANGELOG", a czasem "changelog"? + "CHANGELOG" to nazwa samego pliku. Wygląda to dość głośno, ale taka jest historyczna konwencja przyjęta przez wiele projektów open source. Inne przykłady podobnych plików to [`README`][README], [`LICENSE`][LICENSE], + oraz [`CONTRIBUTING`][CONTRIBUTING]. + + Zapis wielkimi literami (dzięki któremu w starszych systemach operacyjnch pliki zostają umieszczone na szczycie listy) ma na celu zwrócenie na nie uwagi. + Jako że są to ważne informacje dotyczące projektu, mogą być one użyteczne dla każdego, kto zamierza korzystać lub wnieść weń wkład. Ida ta zbliżona jest do [odznaczeń przy projektach open source][shields]. + + Gdy stosuję pisownię "changelog", mówię o samej funkcji tego pliku: rejestrowaniu zmian. + + ### A co z błędnymi wersjami (yanked)? + Są to wersje opublikowane błędnie, czyli takie, które musiały zostać wycofane ze względu na poważny błąd lub lukę bezpieczeństwa. Często takie wersje projektu nie pojawiają się nawet w changelogu, a powinny. + Oto jak taka wersja powinna wyglądać: + + `## 0.0.5 - 2014-12-13 [YANKED]` + + Tag `[YANKED]` jest celowo zapisany wielkimi literami. Ważne jest, by został on dostrzeżony. Dzięki temu, że jest ujęty w nawias, może być z łatwością generowany automatycznie. + + ### Czy powinno się kiedykolwiek poprawiać changelog? + Oczywiście. Zawsze istnieją powody, by ulepszyć changelog. Często zdarza mi się edytować changelogi w projektach open source w których pominięto udokumentowanie istotnych zmian. + + Może się również zdarzyć, że odkryjesz, iż podczas przygotowywania notatek dla wersji projektu, zapomniałeś udokumentować istotną zmianę która ma wpływ na działanie aplikacji. + Ważne jest, by zaktualizować changelog szczególnie jeśli jest to zmiana która w istotny sposób wpływa na kompatybilność aplikacji. + + ### Jak mogę wnieść wkład w projekt? + Ten dokument to nie jedna i jedyna **prawda**; to moja starannie sformułowana opinia wraz z informacją i przykładami które zebrałem. + Pomimo tego, że prowadzę właściwy [CHANGELOG][] na [GitHubie][gh], celowo nie stworzyłem poprawnego *releasu* czy jasno sprecyzowanych wytycznych (tak jak np. na [SemVer.org][semver]). + + Chcę, by nasza społeczność uzgodniła jak CHANGELOG ma wyglądać. Wierzę, że dyskusja jest niezbędna do osiągnięcia końcowego rezultatu. + + Więc proszę, [**dołącz do projektu**][gh]. + + [CHANGELOG]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CHANGELOG.md + [CONTRIBUTING]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CONTRIBUTING.md + [LICENSE]: https://github.com/olivierlacan/keep-a-changelog/blob/master/LICENSE + [README]: https://github.com/olivierlacan/keep-a-changelog/blob/master/README.md + [gemnasium]: https://gemnasium.com/ + [gh]: https://github.com/olivierlacan/keep-a-changelog + [issues]: https://github.com/olivierlacan/keep-a-changelog/issues + [semver]: http://semver.org/ + [shields]: http://shields.io/ + [thechangelog]: http://5by5.tv/changelog/127 + [vandamme]: https://github.com/tech-angels/vandamme/ From f3df18b98f971b351f9e96f78abf453012650ed8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C5=82awek=20Amielucha?= Date: Sat, 1 Apr 2017 12:49:07 +0200 Subject: [PATCH 11/37] Typos and interpunction --- source/pl-PL/0.3.0/index.html.haml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/pl-PL/0.3.0/index.html.haml b/source/pl-PL/0.3.0/index.html.haml index 9a8cbdb..e997e81 100644 --- a/source/pl-PL/0.3.0/index.html.haml +++ b/source/pl-PL/0.3.0/index.html.haml @@ -41,7 +41,7 @@ version: 0.3.0 - Wszystkie daty zapisuj w formacie `YYYY-MM-DD`. (Przykład: `2012-06-02` dla `2 czerwca 2012 r.`). To [rozsądny](http://xkcd.com/1179/), niezależny od języka międzynarodowy format. - Zawsze określaj, czy projekt jest zgodny z [Semantycznym Wersjonowaniem][semver]. - Każda wersja powinna: - - Zawierać datę w wyżej wymienonym formacie. + - Zawierać datę w wyżej wymienionym formacie. - Grupować zmiany w celu opisu ich wpływu na projekt, w następujący sposób: - `Added` dla nowych funkcji. - `Changed` dla zmian w istniejącej funkcjonalności. @@ -65,7 +65,7 @@ version: 0.3.0 - **Niewyszczególnianie przestarzałych funkcji.** Użytkownik powinien zostać wyraźnie poinformowany, że coś przestanie działać po aktualizacji. - **Daty w formatach regionalnych.** W USA ludzie zapisują miesiąc na samym początku daty ("06-02-2012" dla 2 czerwca 2012 r., co nie ma *najmniejszego* sensu), podczas gdy gdzie indziej wiele osób pisze "2 czerwiec 2012", jednak wymawia to w inny sposób. - "2012-06-02" to logiczny format zapisywany od największej, do najmniejszej wartości, oraz nie pokrywa się z innymi formatami w niejednoznaczny sposób. + "2012-06-02" to logiczny format zapisywany od największej, do najmniejszej wartości oraz nie pokrywa się z innymi formatami w niejednoznaczny sposób. Jest to jednocześnie [standard ISO](http://www.iso.org/iso/home/standards/iso8601.htm). To wszystko sprawia, że jest to rekomendowany format zapisywania daty w changelogach. To jeszcze nie koniec. Pomóż mi zebrać wszystkie łzy jednorożców [zgłaszając problem][issues] lub wprowadzając zmianę poprzez pull request. @@ -82,7 +82,7 @@ version: 0.3.0 Proszę, zapoznaj się z projektem i pamiętaj, że [dyskusja i sugestie są zawsze mile widziane][issues]! ### Jak powinien być nazwany plik changelog? - Jeśli nie potrafisz wywnioskować z powyższego przykładu, `CHANGELOG.md` to do tej pory najepsza konwencja. + Jeśli nie potrafisz wywnioskować z powyższego przykładu, `CHANGELOG.md` to do tej pory najlepsza konwencja. Niektóre projekty również stosują `HISTORY.txt`, `HISTORY.md`, `History.md`, `NEWS.txt`, `NEWS.md`, `News.txt`, `RELEASES.txt`, `RELEASE.md`, `releases.md`, itd. @@ -91,7 +91,7 @@ version: 0.3.0 ### Dlaczego nie mielibyśmy po prostu stosować raportu `git log`? Ponieważ logi typu diff są z natury zagmatwane. Nawet przy hipotetycznym projekcie stworzonym przez doskonałe istoty ludzkie, które nigdy nie popełniają literówek, - nigdy nie zapominają o zsynchronizowaniu nowo dodanych plików czy nigdy niczego nie pomijają porczas refaktoryzacji kodu, logi diff nie mogłyby zastąpić changelogu. + nigdy nie zapominają o zsynchronizowaniu nowo dodanych plików czy nigdy niczego nie pomijają podczas refaktoryzacji kodu, logi diff nie mogłyby zastąpić changelogu. Celem `git commit` jest udokumentowanie jednego kroku w procesie, dzięki któremu kod ewoluuje z jednego stanu w kolejny. Celem changelogu jest udokumentowanie tych różnic pomiędzy stanami kodu, które są godne uwagi. Różnica między changelogiem a logiem diff, tak samo jak różnica między dobrymi komentarzami a kodem, jest następująca: pierwsze opisuje *dlaczego*, drugie - *jak*. @@ -121,8 +121,8 @@ version: 0.3.0 ### Czy powinno się kiedykolwiek poprawiać changelog? Oczywiście. Zawsze istnieją powody, by ulepszyć changelog. Często zdarza mi się edytować changelogi w projektach open source w których pominięto udokumentowanie istotnych zmian. - Może się również zdarzyć, że odkryjesz, iż podczas przygotowywania notatek dla wersji projektu, zapomniałeś udokumentować istotną zmianę która ma wpływ na działanie aplikacji. - Ważne jest, by zaktualizować changelog szczególnie jeśli jest to zmiana która w istotny sposób wpływa na kompatybilność aplikacji. + Może się również zdarzyć, że odkryjesz, iż podczas przygotowywania notatek dla wersji projektu, zapomniałeś udokumentować istotną zmianę, która ma wpływ na działanie aplikacji. + Ważne jest, by zaktualizować changelog szczególnie jeśli jest to zmiana, która w istotny sposób wpływa na kompatybilność aplikacji. ### Jak mogę wnieść wkład w projekt? Ten dokument to nie jedna i jedyna **prawda**; to moja starannie sformułowana opinia wraz z informacją i przykładami które zebrałem. From 6b1602191f4a53d6ae45b726a3f8adb855ad5bc6 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Sat, 1 Apr 2017 06:58:09 -0400 Subject: [PATCH 12/37] Initial draft of version 0.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit First, let’s stop shouting in the title. --- source/en/0.4.0/index.html.haml | 183 ++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 source/en/0.4.0/index.html.haml diff --git a/source/en/0.4.0/index.html.haml b/source/en/0.4.0/index.html.haml new file mode 100644 index 0000000..81c6c36 --- /dev/null +++ b/source/en/0.4.0/index.html.haml @@ -0,0 +1,183 @@ +--- +description: Keep a Changelog +title: Keep a Changelog +language: en +version: 0.4.0 +--- + +:markdown + # Keep a Changelog + + ## Don’t let your friends dump git logs into changelogs™ + + Version **#{current_page.metadata[:page][:version]}** + + ### What’s a change log? + A change log is a file which contains a curated, chronologically ordered + list of notable changes for each version of a project. + +%pre.changelog= File.read("CHANGELOG.md") + +:markdown + ### What’s the point of a change log? + To make it easier for users and contributors to see precisely what + notable changes have been made between each release (or version) of the project. + + ### Why should I care? + Because software tools are for people. If you don’t care, why are + you contributing to open source? Surely, there must be a kernel (ha!) + of care somewhere in that lovely little brain of yours. + + I [talked with Adam Stacoviak and Jerod Santo on The Changelog][thechangelog] + (fitting, right?) podcast about why maintainers and + contributors should care, and the motivations behind this project. + If you can spare the time (1:06), it’s a good listen. + + ### What makes a good change log? + I’m glad you asked. + + A good change log sticks to these principles: + + - It’s made for humans, not machines, so legibility is crucial. + - Easy to link to any section (hence Markdown over plain text). + - One sub-section per version. + - List releases in reverse-chronological order (newest on top). + - Write all dates in `YYYY-MM-DD` format. (Example: `2012-06-02` for `June 2nd, 2012`.) It’s international, [sensible](http://xkcd.com/1179/), and language-independent. + - Explicitly mention whether the project follows [Semantic Versioning][semver]. + - Each version should: + - List its release date in the above format. + - Group changes to describe their impact on the project, as follows: + - `Added` for new features. + - `Changed` for changes in existing functionality. + - `Deprecated` for once-stable features removed in upcoming releases. + - `Removed` for deprecated features removed in this release. + - `Fixed` for any bug fixes. + - `Security` to invite users to upgrade in case of vulnerabilities. + + ### How can I minimize the effort required? + Always have an `"Unreleased"` section at the top for keeping track of any + changes. + + This serves two purposes: + + - People can see what changes they might expect in upcoming releases + - At release time, you just have to change `"Unreleased"` to the version number + and add a new `"Unreleased"` header at the top. + + ### What makes unicorns cry? + Alright…let’s get into it. + + - **Dumping a diff of commit logs.** Just don’t do that, you’re helping nobody. + - **Not emphasizing deprecations.** When people upgrade from one version to + another, it should be painfully clear when something will break. + - **Dates in region-specific formats.** In the U.S., people put the month first + ("06-02-2012" for June 2nd, 2012, which makes *no* sense), while many people + in the rest of the world write a robotic-looking "2 June 2012", yet pronounce + it differently. "2012-06-02" works logically from largest to smallest, doesn't + overlap in ambiguous ways with other date formats, and is an + [ISO standard](http://www.iso.org/iso/home/standards/iso8601.htm). Thus, it + is the recommended date format for change logs. + + There’s more. Help me collect those unicorn tears by + [opening an issue][issues] + or a pull request. + + ### Is there a standard change log format? + Sadly, no. Calm down. I know you're furiously rushing to find that link + to the GNU change log style guide, or the two-paragraph GNU NEWS file + "guideline". The GNU style guide is a nice start but it is sadly naive. + There's nothing wrong with being naive but when people need + guidance it's rarely very helpful. Especially when there are many + situations and edge cases to deal with. + + This project [contains what I hope will become a better CHANGELOG file convention][CHANGELOG]. + I don't think the status quo is good enough, and I think that as a community we + can come up with better conventions if we try to extract good practices from + real software projects. Please take a look around and remember that + [discussions and suggestions for improvements are welcome][issues]! + + ### What should the change log file be named? + Well, if you can’t tell from the example above, `CHANGELOG.md` is the + best convention so far. + + Some projects also use `HISTORY.txt`, `HISTORY.md`, `History.md`, `NEWS.txt`, + `NEWS.md`, `News.txt`, `RELEASES.txt`, `RELEASE.md`, `releases.md`, etc. + + It’s a mess. All these names only makes it harder for people to find it. + + ### Why can’t people just use a `git log` diff? + Because log diffs are full of noise — by nature. They could not make a suitable + change log even in a hypothetical project run by perfect humans who never make + typos, never forget to commit new files, never miss any part of a refactoring. + The purpose of a commit is to document one atomic step in the process by which + the code evolves from one state to another. The purpose of a change log is to + document the noteworthy differences between these states. + + As is the difference between good comments and the code itself, + so is the difference between a change log and the commit log: + one describes the *why*, the other the how. + + ### Can change logs be automatically parsed? + It’s difficult, because people follow wildly different formats and file names. + + [Vandamme][vandamme] is a Ruby gem + created by the [Gemnasium][gemnasium] team and which parses + many (but not all) open source project change logs. + + ### Why do you alternate between spelling it "CHANGELOG" and "change log"? + "CHANGELOG" is the name of the file itself. It's a bit shouty but it's a + historical convention followed by many open source projects. Other + examples of similar files include [`README`][README], [`LICENSE`][LICENSE], + and [`CONTRIBUTING`][CONTRIBUTING]. + + The uppercase naming (which in old operating systems made these files stick + to the top) is used to draw attention to them. Since they're important + metadata about the project, they could be useful to anyone intending to use + or contribute to it, much like [open source project badges][shields]. + + When I refer to a "change log", I'm talking about the function of this + file: to log changes. + + ### What about yanked releases? + Yanked releases are versions that had to be pulled because of a serious + bug or security issue. Often these versions don't even appear in change + logs. They should. This is how you should display them: + + `## 0.0.5 - 2014-12-13 [YANKED]` + + The `[YANKED]` tag is loud for a reason. It's important for people to + notice it. Since it's surrounded by brackets it's also easier to parse + programmatically. + + ### Should you ever rewrite a change log? + Sure. There are always good reasons to improve a change log. I regularly open + pull requests to add missing releases to open source projects with unmaintained + change logs. + + It's also possible you may discover that you forgot to address a breaking change + in the notes for a version. It's obviously important for you to update your + change log in this case. + + ### How can I contribute? + This document is not the **truth**; it’s my carefully considered + opinion, along with information and examples I gathered. + Although I provide an actual [CHANGELOG][] on [the GitHub repo][gh], + I have purposefully not created a proper *release* or clear list of rules + to follow (as [SemVer.org][semver] does, for instance). + + This is because I want our community to reach a consensus. I believe the + discussion is as important as the end result. + + So please [**pitch in**][gh]. + + [CHANGELOG]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CHANGELOG.md + [CONTRIBUTING]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CONTRIBUTING.md + [LICENSE]: https://github.com/olivierlacan/keep-a-changelog/blob/master/LICENSE + [README]: https://github.com/olivierlacan/keep-a-changelog/blob/master/README.md + [gemnasium]: https://gemnasium.com/ + [gh]: https://github.com/olivierlacan/keep-a-changelog + [issues]: https://github.com/olivierlacan/keep-a-changelog/issues + [semver]: http://semver.org/ + [shields]: http://shields.io/ + [thechangelog]: http://5by5.tv/changelog/127 + [vandamme]: https://github.com/tech-angels/vandamme/ From 164084051fcb508526f4da977fddc7c0210d8518 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Sat, 1 Apr 2017 08:27:41 -0400 Subject: [PATCH 13/37] Add Polish to listed versions Also updated the changelog. --- CHANGELOG.md | 25 ++++++++++------ config.rb | 80 +++++++++++++++++++++++++++------------------------- 2 files changed, 59 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41a6817..3365779 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,18 +6,27 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] ### Added -- zh-CN and zh-TW translations from @tianshuo. -- de translation from @mpbzh. -- it-IT translation from @roalz. -- sv translation from @magol. -- tr-TR translation from @karalamalar. -- fr translation from @zapashcanon. +- Simplified and Traditional Chinese translations from @tianshuo. +- German translation from @mpbzh. +- Italian translation from @roalz. +- Swedish translation from @magol. +- Turkish translation from @karalamalar. +- French translation from @zapashcanon. +- Brazilian Portugese translation from @aisamu. +- Polish translation from @amielucha. +- ### Changed - Start versioning based on the current English version at 0.3.0 to help translation authors keep things up-to-date. -- Fix typos in zh-CN translation. -- Fix typos in pt-BR translation. +- Fix typos in Simplified Chinese and Traditional Chinese translations. +- Fix typos in Brazilian Portugese translation. +- Fix typos in Turkish translation. +- Fix typos in Czech translation. +- Fix typos in Swedish translation. +- Improve phrasing in French translation. +- Fix phrasing and spelling in German translation. + ## [0.3.0] - 2015-12-03 ### Added diff --git a/config.rb b/config.rb index 18e4ca8..3827600 100644 --- a/config.rb +++ b/config.rb @@ -3,78 +3,82 @@ # -------------------------------------- # ----- Site ----- # -# Last version should be the latest English version since the manifesto is first +# Last version should be the latest English version since the manifesto is first # written in English, then translated into other languages later. $last_version = (Dir.entries("source/en") - %w[. ..]).last # This list of languages populates the language navigation. issues_url = 'https://github.com/olivierlacan/keep-a-changelog/issues' $languages = { - "cs" => { - name: "Čeština", - notice: "" + "cs" => { + name: "Čeština", + notice: "" }, - "de" => { - name: "Deutsch", + "de" => { + name: "Deutsch", notice: "Die neuste version (#{$last_version}) ist noch nicht auf Deutsch verfügbar, aber du kannst sie dir auf Englisch durchlesen und bei der Übersetzung mithelfen." }, - "en" => { - name: "English", + "en" => { + name: "English", notice: "" }, - "es-ES" => { - name: "Español", + "es-ES" => { + name: "Español", notice: "Aún no está disponible la última versión (#{$last_version}) en español, pero por ahora puedes leerla en inglés y ayudar a traducirla." }, - "fr" => { - name: "Français", + "fr" => { + name: "Français", notice: "La dernière version (#{$last_version}) n'est pas encore disponible en français, mais vous pouvez la lire en anglais pour l'instant et aider à la traduire." }, - "it-IT" => { - name: "Italiano", + "it-IT" => { + name: "Italiano", notice: "L'ultima versione (#{$last_version}) non è ancora disponibile in Italiano, ma la potete leggere in Inglese per ora e potete contribuire a tradurla." }, - "pt-BR" => { - name: "Brazilian Portugese", - notice: "A última versão (#{$last_version}) ainda não está disponível em - Português mas nesse momento você pode lê-la em inglês e - ajudar em sua tradução." + "pl-PL" => { + name: "Polskie", + notice: "" }, - "ru" => { - name: "Pyccкий", + "pt-BR" => { + name: "Brazilian Portugese", + notice: "A última versão (#{$last_version}) ainda não está disponível em + Português mas nesse momento você pode lê-la em inglês e + ajudar em sua tradução." + }, + "ru" => { + name: "Pyccкий", notice: "Самая последняя версия (#{$last_version}) ещё пока не переведена на русский, но вы можете прочитать её на английском и помочь с переводом." }, - "sl" => { - name: "Slovenščina", - notice: "" + "sl" => { + name: "Slovenščina", + notice: "" }, - "sv" => { - name: "Svenska", + "sv" => { + name: "Svenska", notice: "Den senaste versionen (#{$last_version}) är ännu inte tillgänglig på Svenska, men du kan läsa det på engelska och även hjälpa till att översätta det." }, - "tr-TR" => { - name: "Türkçe", - notice: "" + "tr-TR" => { + name: "Türkçe", + notice: "" }, - "zh-CN" => { - name: "简体中文", - notice: "" + "zh-CN" => { + name: "简体中文", + notice: "" }, - "zh-TW" => { - name: "繁體中文", - notice: "" + "zh-TW" => { + name: "繁體中文", + notice: "" } } @@ -110,7 +114,7 @@ activate :automatic_image_sizes activate :syntax set :markdown_engine, :redcarpet -## Override default Redcarpet renderer in order to define a class +## Override default Redcarpet renderer in order to define a class class CustomMarkdownRenderer < Redcarpet::Render::HTML def header(text, header_level) slug = text.gsub(" ", "-").downcase @@ -194,8 +198,8 @@ activate :autoprefixer do |config| config.cascade = false end -# Haml doesn't pick up on Markdown configuration so we have to remove the -# default Markdown Haml filter and reconfigure one that follows our +# Haml doesn't pick up on Markdown configuration so we have to remove the +# default Markdown Haml filter and reconfigure one that follows our # global configuration. module Haml::Filters From bca3b23f56a874060bdd8e27c63a7d23a3e24151 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Tue, 4 Apr 2017 19:07:19 -0400 Subject: [PATCH 14/37] Replace monospaced title font The whole source code metaphor had its time. --- source/assets/stylesheets/application.css.sass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/assets/stylesheets/application.css.sass b/source/assets/stylesheets/application.css.sass index 0b8d1ee..182534f 100644 --- a/source/assets/stylesheets/application.css.sass +++ b/source/assets/stylesheets/application.css.sass @@ -1,5 +1,5 @@ $base-font-family: "Carrois Gothic", "Helvetica Neue", Helvetica, Arial, sans-serif -$source-code-font-family: "Source Code Pro", monospace +$source-code-font-family: Helvetica, Arial, sans-serif html font: 14px/1.4 $base-font-family From a0aa8788622ec5ee639b6a0044f57424a147b943 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Tue, 4 Apr 2017 19:07:33 -0400 Subject: [PATCH 15/37] Improve vertical text spacing --- source/assets/stylesheets/application.css.sass | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/assets/stylesheets/application.css.sass b/source/assets/stylesheets/application.css.sass index 182534f..7aee416 100644 --- a/source/assets/stylesheets/application.css.sass +++ b/source/assets/stylesheets/application.css.sass @@ -20,10 +20,9 @@ h1 font-family: $source-code-font-family margin-bottom: 0 line-height: 1 - word-spacing: -0.3em h2 - margin-top: 0 + margin-top: 0.1em margin-bottom: 2em h1, h2 @@ -32,7 +31,7 @@ h1, h2 h3 font-size: 1.3em font-family: $source-code-font-family - margin-bottom: 0 + margin-bottom: 1em position: relative padding-left: .1em From 0d8d11767064bd3016179b34394d252f4a6579a9 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Tue, 4 Apr 2017 19:09:24 -0400 Subject: [PATCH 16/37] Keep Source Code Pro for changelog preview --- source/assets/stylesheets/application.css.sass | 8 ++++---- source/layouts/layout.html.haml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/assets/stylesheets/application.css.sass b/source/assets/stylesheets/application.css.sass index 7aee416..37496b2 100644 --- a/source/assets/stylesheets/application.css.sass +++ b/source/assets/stylesheets/application.css.sass @@ -1,5 +1,5 @@ -$base-font-family: "Carrois Gothic", "Helvetica Neue", Helvetica, Arial, sans-serif -$source-code-font-family: Helvetica, Arial, sans-serif +$base-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif +$source-code-font-family: "Source Code Pro", monospace html font: 14px/1.4 $base-font-family @@ -17,7 +17,7 @@ h1 color: #C647BF font-size: 4.1em font-weight: bold - font-family: $source-code-font-family + font-family: $base-font-family margin-bottom: 0 line-height: 1 @@ -30,7 +30,7 @@ h1, h2 h3 font-size: 1.3em - font-family: $source-code-font-family + font-family: $base-font-family margin-bottom: 1em position: relative padding-left: .1em diff --git a/source/layouts/layout.html.haml b/source/layouts/layout.html.haml index 207243c..4b44ab3 100644 --- a/source/layouts/layout.html.haml +++ b/source/layouts/layout.html.haml @@ -20,7 +20,7 @@ %link{rel: 'canonical', href: path_to_url(current_page.url)} %title= current_page.data.title - = stylesheet_link_tag '//fonts.googleapis.com/css?family=Carrois+Gothic|Source+Code+Pro:400,700' + = stylesheet_link_tag '//fonts.googleapis.com/css?family=Source+Code+Pro:400,700' = stylesheet_link_tag 'application' :javascript @@ -45,12 +45,12 @@ - if $languages[code][:notice] %p.last-version-notice= $languages[code][:notice] - else - %p + %p The latest version (#{$last_version}) is not yet available in this language but = link_to "you can read it in English", "/en/#{$last_version}" - for now and - = link_to "help translate ", "https://github.com/olivierlacan/keep-a-changelog/issues" + for now and + = link_to "help translate ", "https://github.com/olivierlacan/keep-a-changelog/issues" it. = yield From fcce20efff6706a7fb8db5f6e8ed5f4ec4c43b3e Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Wed, 5 Apr 2017 05:27:12 -0400 Subject: [PATCH 17/37] Stop using weird Haml break for changelog preview MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It’s really not worth the double filter call and I’m sure I can find some way to use Middleman to extract this into a method. --- source/cs/0.3.0/index.html.haml | 159 ++++++++++++++--------------- source/de/0.3.0/index.html.haml | 3 +- source/en/0.3.0/index.html.haml | 3 +- source/en/0.4.0/index.html.haml | 43 ++++---- source/es-ES/0.3.0/index.html.haml | 3 +- source/fr/0.3.0/index.html.haml | 5 +- source/it-IT/0.3.0/index.html.haml | 21 ++-- source/layouts/layout.html.haml | 3 + source/pl-PL/0.3.0/index.html.haml | 3 +- source/pt-BR/0.3.0/index.html.haml | 21 ++-- source/ru/0.3.0/index.html.haml | 3 +- source/sl/0.3.0/index.html.haml | 3 +- source/sv/0.3.0/index.html.haml | 3 +- source/tr-TR/0.3.0/index.html.haml | 7 +- source/zh-CN/0.3.0/index.html.haml | 3 +- source/zh-TW/0.3.0/index.html.haml | 3 +- 16 files changed, 137 insertions(+), 149 deletions(-) diff --git a/source/cs/0.3.0/index.html.haml b/source/cs/0.3.0/index.html.haml index 208f7ac..435e2a2 100644 --- a/source/cs/0.3.0/index.html.haml +++ b/source/cs/0.3.0/index.html.haml @@ -13,26 +13,25 @@ version: 0.3.0 Version **#{current_page.metadata[:page][:version]}** ### Co je to changelog? - Changelog je soubor, který obsahuje organizovaný, chronologicky seřazený - seznam podstatných změn pro každou verzi daného projektu. + Changelog je soubor, který obsahuje organizovaný, chronologicky seřazený + seznam podstatných změn pro každou verzi daného projektu. -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### Co je smyslem changelogu? - Usnadnit uživatelům a přispěvatelům přesné zobrazení podstatných změn, které - byly provedeny mezi jednotlivými vydáními (verzemi) daného projektu. + Usnadnit uživatelům a přispěvatelům přesné zobrazení podstatných změn, které + byly provedeny mezi jednotlivými vydáními (verzemi) daného projektu. ### Proč by mi na tom mělo záležet? Protože softwarové nástroje jsou pro lidi. Pokud ti na tom nezáleží, tak proč - přispíváš do open source projektů? Určitě musí být v tvém úžasném malém mozku + přispíváš do open source projektů? Určitě musí být v tvém úžasném malém mozku alespoň jádro (haha!) ochoty. - + [Bavil jsem se s Adamem Stacoviakem a Jerodem Santem na podcastu The Changelog][thechangelog] - (název sedí, co?) o tom proč by na tom mělo vedoucím a přispěvatelům projektů - záležet a o tom jaká motivace je za tímto projektem. Jestli máš chvilku času - (1:06), stojí to za poslech. - + (název sedí, co?) o tom proč by na tom mělo vedoucím a přispěvatelům projektů + záležet a o tom jaká motivace je za tímto projektem. Jestli máš chvilku času + (1:06), stojí to za poslech. + ### Co dělá changelog dobrým? Výborná otázka, díky za ni. @@ -52,12 +51,12 @@ version: 0.3.0 - `Deprecated` pro dříve stabilní funkce, které budou odstraněny v novějších vydáních a nejsou podporovány. - `Removed` pro funkce odstraněné v daném vydání. - `Fixed` pro opravené chyby. - - `Security` pro navržení aktualizace uživatelům v případě bezpečnostních problémů. - + - `Security` pro navržení aktualizace uživatelům v případě bezpečnostních problémů. + ### Jak mohu vyžadovanou snahu snížit na minimum? - Vždycky měj nahoře sekci `"Unreleased"`, ve které budou schromažďovány všechny - změny. + Vždycky měj nahoře sekci `"Unreleased"`, ve které budou schromažďovány všechny + změny. To plní hned dva účely: @@ -66,103 +65,103 @@ version: 0.3.0 ### Co zaručeně rozbrečí jednorožce? Dobrá… Tak si to povíme. - + - **Zkopírování diffu commit logů.** To prostě nedělej, nikomu to nepomůže. - **Nezdůraznění dále nepodporovaných funcí.** Když lidé aktualizují na novou verzi, mělo by jim být bolestivě jasné, že se něco rozbije. - - **Data v regionálních formátech.** V USA píšou lidé nejdříve měsíc ("06-02-2012" pro 2. června 2012, což nedává *vůbec žádný* smysl), zatímco mnoho lidí ve zbytku světa píše roboticky vypadající verzi "2 June 2012", ale vyslovují to jinak. "2012-06-02" je logicky napsané od největšího po nejmenší celek, nepřekrývá se nesrozumitelně s jinými fomáty data a je to [ISO standard](http://www.iso.org/iso/home/standards/iso8601.htm). Proto je to doporučovaný formát dat pro changelogy. - - To ale není všechno. Pomoz mi sbírat jednorožčí slzy tím že + - **Data v regionálních formátech.** V USA píšou lidé nejdříve měsíc ("06-02-2012" pro 2. června 2012, což nedává *vůbec žádný* smysl), zatímco mnoho lidí ve zbytku světa píše roboticky vypadající verzi "2 June 2012", ale vyslovují to jinak. "2012-06-02" je logicky napsané od největšího po nejmenší celek, nepřekrývá se nesrozumitelně s jinými fomáty data a je to [ISO standard](http://www.iso.org/iso/home/standards/iso8601.htm). Proto je to doporučovaný formát dat pro changelogy. + + To ale není všechno. Pomoz mi sbírat jednorožčí slzy tím že [otevřeš issue][issues] nebo pull request. - + ### Existuje pro formát changelogů nějaký standard? - Bohužel ne. Klid. Vím, že se zuřivě snažíš najít ten odkaz na GNU návod jakým - stylem psát changelog, nebo onen dvouodstavcový GNU NEWS soubor, který si říká + Bohužel ne. Klid. Vím, že se zuřivě snažíš najít ten odkaz na GNU návod jakým + stylem psát changelog, nebo onen dvouodstavcový GNU NEWS soubor, který si říká "směrnice". Zmíněný GNU návod je sice hezký začátek, ale je smutně naivní. Být - naivní není nic špatného, ale když lidé potřebují radu, málokdy to někomu + naivní není nic špatného, ale když lidé potřebují radu, málokdy to někomu pomůže. Obzvlášť, když existuje tolik situací a okrajových případů, se kterými - se musí člověk nějak poprat. - - Tento projekt + se musí člověk nějak poprat. + + Tento projekt [obsahuje něco, co se doufám jednou stane lepší konvencí pro CHANGELOGy][CHANGELOG]. - Nemyslím si, že je momentální stav dostatečně dobrý, a jsem toho názoru, že - jsme jako komunita schopni vymyslet lepší konvence, pokud se budeme snažit - vybrat ty nejlepší praktiky z doopravdových softwarových projektů. - Porozhlédněte se a mějte na paměti, že + Nemyslím si, že je momentální stav dostatečně dobrý, a jsem toho názoru, že + jsme jako komunita schopni vymyslet lepší konvence, pokud se budeme snažit + vybrat ty nejlepší praktiky z doopravdových softwarových projektů. + Porozhlédněte se a mějte na paměti, že [diskuse a návrhy na zlepšení jsou vítány][issues]! - + ### Jak by se měl changelog jmenovat? - Inu, pokud jste to už nepoznali z příkladu výše, `CHANGELOG.md` je zatím ta - nejlepší konvence. - - Některé projekty používají `HISTORY.txt`, `HISTORY.md`, `History.md`, - `NEWS.txt`, `NEWS.md`, `News.txt`, `RELEASES.txt`, `RELEASE.md`, + Inu, pokud jste to už nepoznali z příkladu výše, `CHANGELOG.md` je zatím ta + nejlepší konvence. + + Některé projekty používají `HISTORY.txt`, `HISTORY.md`, `History.md`, + `NEWS.txt`, `NEWS.md`, `News.txt`, `RELEASES.txt`, `RELEASE.md`, `releases.md`, apod. - Je v tom binec. Všecha tato jména jen komplikují život lidem, kteří se ten - dokument snaží najít. - - ### Proč lidé jednoduše nepoužívají `git log` diff? - Protože diffy logů jsou plné šumu — přirozeně. Nebyly by vyhovujícím - changelogem ani v hypotetickém projektu vedeném dokonalými lidmi, kteří nikdy - nedělají překlepy, nikdy nezapomínají commitnout nové soubory a nikdy jim - neunikne ani ta nejmenší část refactoringu. Cílem commitu je dokumentovat - jeden miniaturní krok při procesu, ve kterém se kód vyvíjí z jedné podoby do - druhé. Cílem changelogu je dokumentovat podstatné změny mezi těmito podobami. - - Stějně jako je rozdíl mezi dobrými komentáři a samotným kódem, je také rozdíl - mezi changelogem a commitlogem: jeden říká *proč* a druhý jak. - - ### Mohou být changelogy automaticky parsované? - Je to složité, jelikož se lidé uchylují k nejrůznějším formátům a názvům - souborů. + Je v tom binec. Všecha tato jména jen komplikují život lidem, kteří se ten + dokument snaží najít. - [Vandamme][vandamme] je Ruby gem vytvořený týmem [Gemnasium][gemnasium], který + ### Proč lidé jednoduše nepoužívají `git log` diff? + Protože diffy logů jsou plné šumu — přirozeně. Nebyly by vyhovujícím + changelogem ani v hypotetickém projektu vedeném dokonalými lidmi, kteří nikdy + nedělají překlepy, nikdy nezapomínají commitnout nové soubory a nikdy jim + neunikne ani ta nejmenší část refactoringu. Cílem commitu je dokumentovat + jeden miniaturní krok při procesu, ve kterém se kód vyvíjí z jedné podoby do + druhé. Cílem changelogu je dokumentovat podstatné změny mezi těmito podobami. + + Stějně jako je rozdíl mezi dobrými komentáři a samotným kódem, je také rozdíl + mezi changelogem a commitlogem: jeden říká *proč* a druhý jak. + + ### Mohou být changelogy automaticky parsované? + Je to složité, jelikož se lidé uchylují k nejrůznějším formátům a názvům + souborů. + + [Vandamme][vandamme] je Ruby gem vytvořený týmem [Gemnasium][gemnasium], který parsuje mnoho (ale ne všechny) changelogů open source projektů. ### Proč používáš jednou "CHANGELOG" a jindy "changelog"? - "CHANGELOG" je název samotného souboru. Je to třichu křiklavé, ale to už je - historická konvence, kterou se řídí mnoho open source projektů. Příklady - podobných souborů mohou být [`README`][README], [`LICENSE`][LICENSE] a + "CHANGELOG" je název samotného souboru. Je to třichu křiklavé, ale to už je + historická konvence, kterou se řídí mnoho open source projektů. Příklady + podobných souborů mohou být [`README`][README], [`LICENSE`][LICENSE] a [`CONTRIBUTING`][CONTRIBUTING]. Název psaný kapitálkami (díky kterému se ve starých operačních systémech - soubory držely na nejvyšších pozicích) je používán za účelem upoutání - pozornosti. Vzhledem k tomu, že se jedná o důležitá metadata o projektu a - mohla by být užitečná pro kohokoliv, kdo ho chce používat nebo do něho + soubory držely na nejvyšších pozicích) je používán za účelem upoutání + pozornosti. Vzhledem k tomu, že se jedná o důležitá metadata o projektu a + mohla by být užitečná pro kohokoliv, kdo ho chce používat nebo do něho přispívat, podobně [open source projektovým odznakům][shields]. - - Když mluvím o "changelogu", myslím tím funkci tohoto souboru: logování změn. - + + Když mluvím o "changelogu", myslím tím funkci tohoto souboru: logování změn. + ### Jak potom vypadají ta vydání, která byla zpětně stažena? - Zpětně stažená vydání jsou verze, které musely být zpětně odebrány kvůli vážné - chybě nebo bezpečnostním rizikům. Tyto verze se často v changelogu ani + Zpětně stažená vydání jsou verze, které musely být zpětně odebrány kvůli vážné + chybě nebo bezpečnostním rizikům. Tyto verze se často v changelogu ani neobjevují, ale měly by. Zobrazovat by se měli takto: - + `## 0.0.5 - 2014-12-13 [YANKED]` - Tag `[YANKED]` je naschvál křiklavý. Je důležité, aby si ho lidé všimli. Díky + Tag `[YANKED]` je naschvál křiklavý. Je důležité, aby si ho lidé všimli. Díky tomu, že je v hranatých závorkách je take jednoduší ho parsovat programem. ### Měl by se někdy changelog přepisovat? - Jasně. Vždy se najde dobrý důvod pro zlepšení changelogu. Sám často otevírám - pull requesty pro přidání chybějících vydání v open source projektech s + Jasně. Vždy se najde dobrý důvod pro zlepšení changelogu. Sám často otevírám + pull requesty pro přidání chybějících vydání v open source projektech s neudržovanými changelogy. - Je také možné, že zjistíš, že v poznámkách k verzi ve tvém projektu není - zmíněna změna, která něco mohla rozbít. V tom případě jě samozřejmě důležité, - aby byl changelog aktualizován. + Je také možné, že zjistíš, že v poznámkách k verzi ve tvém projektu není + zmíněna změna, která něco mohla rozbít. V tom případě jě samozřejmě důležité, + aby byl changelog aktualizován. ### Jak mohu přidat ruku k dílu? Tento dokument není čistá **pravda**; je to můj názor, nad kterým jsem opatrně - uvažoval, v kombinaci s informacemi a příklady, které se mi podařilo získat. - I přesto, že uvádím vlastní [CHANGELOG][] v [repozitáři na GitHubu][gh], + uvažoval, v kombinaci s informacemi a příklady, které se mi podařilo získat. + I přesto, že uvádím vlastní [CHANGELOG][] v [repozitáři na GitHubu][gh], naschvál jsem nevytvořil náležité *vydání* nebo jasný seznam pravidel, kterými se někdo má řídit (jako to například udělali na [SemVer.org][semver]). - - Je tomu tak proto, že chci aby komunita došla ke společné shodě. Já sám jsem - toho názoru, že diskuse je důležitou součástí finálního výsledku. - - Takže prosím [**přispějte**][gh] svou trochou do mlýna. + + Je tomu tak proto, že chci aby komunita došla ke společné shodě. Já sám jsem + toho názoru, že diskuse je důležitou součástí finálního výsledku. + + Takže prosím [**přispějte**][gh] svou trochou do mlýna. [CHANGELOG]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CHANGELOG.md [CONTRIBUTING]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CONTRIBUTING.md diff --git a/source/de/0.3.0/index.html.haml b/source/de/0.3.0/index.html.haml index c0d27af..ae3936a 100644 --- a/source/de/0.3.0/index.html.haml +++ b/source/de/0.3.0/index.html.haml @@ -17,9 +17,8 @@ version: 0.3.0 Liste aller erheblichen Änderungen enthält, die zwischen Veröffentlichungen (oder Versionen) des Projekts umgesetzt wurden. -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### Was ist der Zweck eines Changelogs? Es Benutzern und Entwicklern einfacher zu machen, gerade die beachtenswerten Änderungen, welche zwischen Veröffentlichungen (oder Versionen) des Projekts gemacht wurden, zu sehen. diff --git a/source/en/0.3.0/index.html.haml b/source/en/0.3.0/index.html.haml index 3bbd884..f7cba88 100644 --- a/source/en/0.3.0/index.html.haml +++ b/source/en/0.3.0/index.html.haml @@ -16,9 +16,8 @@ version: 0.3.0 A change log is a file which contains a curated, chronologically ordered list of notable changes for each version of a project. -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### What’s the point of a change log? To make it easier for users and contributors to see precisely what notable changes have been made between each release (or version) of the project. diff --git a/source/en/0.4.0/index.html.haml b/source/en/0.4.0/index.html.haml index 81c6c36..336ec6b 100644 --- a/source/en/0.4.0/index.html.haml +++ b/source/en/0.4.0/index.html.haml @@ -12,14 +12,13 @@ version: 0.4.0 Version **#{current_page.metadata[:page][:version]}** - ### What’s a change log? - A change log is a file which contains a curated, chronologically ordered + ### What’s a changelog? + A changelog is a file which contains a curated, chronologically ordered list of notable changes for each version of a project. -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown - ### What’s the point of a change log? + ### What’s the point of a changelog? To make it easier for users and contributors to see precisely what notable changes have been made between each release (or version) of the project. @@ -33,10 +32,10 @@ version: 0.4.0 contributors should care, and the motivations behind this project. If you can spare the time (1:06), it’s a good listen. - ### What makes a good change log? + ### What makes a good changelog? I’m glad you asked. - A good change log sticks to these principles: + A good changelog sticks to these principles: - It’s made for humans, not machines, so legibility is crucial. - Easy to link to any section (hence Markdown over plain text). @@ -76,15 +75,15 @@ version: 0.4.0 it differently. "2012-06-02" works logically from largest to smallest, doesn't overlap in ambiguous ways with other date formats, and is an [ISO standard](http://www.iso.org/iso/home/standards/iso8601.htm). Thus, it - is the recommended date format for change logs. + is the recommended date format for changelogs. There’s more. Help me collect those unicorn tears by [opening an issue][issues] or a pull request. - ### Is there a standard change log format? + ### Is there a standard changelog format? Sadly, no. Calm down. I know you're furiously rushing to find that link - to the GNU change log style guide, or the two-paragraph GNU NEWS file + to the GNU changelog style guide, or the two-paragraph GNU NEWS file "guideline". The GNU style guide is a nice start but it is sadly naive. There's nothing wrong with being naive but when people need guidance it's rarely very helpful. Especially when there are many @@ -96,7 +95,7 @@ version: 0.4.0 real software projects. Please take a look around and remember that [discussions and suggestions for improvements are welcome][issues]! - ### What should the change log file be named? + ### What should the changelog file be named? Well, if you can’t tell from the example above, `CHANGELOG.md` is the best convention so far. @@ -107,24 +106,24 @@ version: 0.4.0 ### Why can’t people just use a `git log` diff? Because log diffs are full of noise — by nature. They could not make a suitable - change log even in a hypothetical project run by perfect humans who never make + changelog even in a hypothetical project run by perfect humans who never make typos, never forget to commit new files, never miss any part of a refactoring. The purpose of a commit is to document one atomic step in the process by which - the code evolves from one state to another. The purpose of a change log is to + the code evolves from one state to another. The purpose of a changelog is to document the noteworthy differences between these states. As is the difference between good comments and the code itself, - so is the difference between a change log and the commit log: + so is the difference between a changelog and the commit log: one describes the *why*, the other the how. - ### Can change logs be automatically parsed? + ### Can changelogs be automatically parsed? It’s difficult, because people follow wildly different formats and file names. [Vandamme][vandamme] is a Ruby gem created by the [Gemnasium][gemnasium] team and which parses - many (but not all) open source project change logs. + many (but not all) open source project changelogs. - ### Why do you alternate between spelling it "CHANGELOG" and "change log"? + ### Why do you alternate between spelling it "CHANGELOG" and "changelog"? "CHANGELOG" is the name of the file itself. It's a bit shouty but it's a historical convention followed by many open source projects. Other examples of similar files include [`README`][README], [`LICENSE`][LICENSE], @@ -135,7 +134,7 @@ version: 0.4.0 metadata about the project, they could be useful to anyone intending to use or contribute to it, much like [open source project badges][shields]. - When I refer to a "change log", I'm talking about the function of this + When I refer to a "changelog", I'm talking about the function of this file: to log changes. ### What about yanked releases? @@ -149,14 +148,14 @@ version: 0.4.0 notice it. Since it's surrounded by brackets it's also easier to parse programmatically. - ### Should you ever rewrite a change log? - Sure. There are always good reasons to improve a change log. I regularly open + ### Should you ever rewrite a changelog? + Sure. There are always good reasons to improve a changelog. I regularly open pull requests to add missing releases to open source projects with unmaintained - change logs. + changelogs. It's also possible you may discover that you forgot to address a breaking change in the notes for a version. It's obviously important for you to update your - change log in this case. + changelog in this case. ### How can I contribute? This document is not the **truth**; it’s my carefully considered diff --git a/source/es-ES/0.3.0/index.html.haml b/source/es-ES/0.3.0/index.html.haml index b46f90e..c30c387 100644 --- a/source/es-ES/0.3.0/index.html.haml +++ b/source/es-ES/0.3.0/index.html.haml @@ -16,9 +16,8 @@ version: 0.3.0 Un registro de cambios o “change log” de ahora en adelante, es un archivo que contiene una lista en orden cronológico sobre los cambios que vamos haciendo en cada reléase (o versión) de nuestro proyecto. -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### Cuál es el propósito del change log? Para que les sea más fácil a los usuarios y contribuyentes, ver exactamente los cambios notables que se han hecho entre cada versión (o versiones) del proyecto. diff --git a/source/fr/0.3.0/index.html.haml b/source/fr/0.3.0/index.html.haml index 87abdd6..87cfdd0 100644 --- a/source/fr/0.3.0/index.html.haml +++ b/source/fr/0.3.0/index.html.haml @@ -17,9 +17,8 @@ version: 0.3.0 une liste triée chronologiquement des changements notables pour chaque version d’un projet -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### Quel est l’intérêt d’un change log ? Il permet aux utilisateurs et aux contributeurs de voir plus simplement les changements notables qui ont été réalisés entre chaque publication @@ -181,7 +180,7 @@ version: 0.3.0 J'ouvre souvent des pull requests pour ajouter des publications manquantes sur des projets open source avec des change logs non-maintenus. - Il est aussi possible que vous découvriez que vous aviez oublié de mentionner + Il est aussi possible que vous découvriez que vous aviez oublié de mentionner un changement majeur dans les notes de version. Il est évidemment important que vous mettiez votre change log à jour dans ce cas. diff --git a/source/it-IT/0.3.0/index.html.haml b/source/it-IT/0.3.0/index.html.haml index 543a6fe..74c2e9f 100644 --- a/source/it-IT/0.3.0/index.html.haml +++ b/source/it-IT/0.3.0/index.html.haml @@ -13,17 +13,16 @@ language: it-IT Un change log è un file che contiene una lista curata e ordinata cronologicamente delle modifiche degne di nota per ogni versione di un progetto. -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### A cosa serve un change log? - Per rendere facile agli utilizzatori e contribuenti vedere con precisione quali modifiche + Per rendere facile agli utilizzatori e contribuenti vedere con precisione quali modifiche importanti sono state fatte tra ogni release (o versione) del progetto. ### Perché dovrebbe importarmi? Perché gli strumenti software sono fatti per le persone. Se non ti importa, perché contribuisci all'open source? - Di certo ci deve essere un "kernel" (ha!) di interesse + Di certo ci deve essere un "kernel" (ha!) di interesse da qualche parte in quel tuo amorevole cervello. [Nel podcast "The Changelog" con Adam Stacoviak e Jerod Santo][thechangelog] @@ -85,9 +84,9 @@ language: it-IT è raramente d'aiuto. Specialmente se ci sono molte situazioni e casi limite da gestire. Questo progetto [contiene ciò che spero diventerà una migliore convenzione per i file CHANGELOG][CHANGELOG]. - Non credo che lo status quo sia sufficientemente buono, e penso che noi, come comunità, + Non credo che lo status quo sia sufficientemente buono, e penso che noi, come comunità, possiamo arrivare a convenzioni migliori se tentiamo di estrarre le pratiche migliori - da progetti software reali. Vi consiglio di guardarvi intorno e ricordare che + da progetti software reali. Vi consiglio di guardarvi intorno e ricordare che [ogni discussione e suggerimento per migliorare sono sempre benvenuti][issues]! ### Come si dovrebbe chiamare il file contenente il change log? @@ -104,7 +103,7 @@ language: it-IT di digitazione, non dimenticano mai di fare commit dei nuovi file, non dimenticano mai alcuna parte di un refactoring. Lo scopo di un commit è di documentare un passo atomico nel processo di evoluzione del codice - da uno stato ad un altro. Lo scopo di un change log è di documentare le differenze + da uno stato ad un altro. Lo scopo di un change log è di documentare le differenze degne di nota tra questi stati. La differenza tra un change log e un commit log è @@ -113,18 +112,18 @@ language: it-IT ### Si possono analizzare automaticamente i change log? È difficile, perché le persone usano formati e nomi di file profondamente diversi. - + [Vandamme][vandamme] è una Ruby gem creata dal team [Gemnasium][gemnasium] ed è in grado di fare il parsing dei change log di molti (ma non tutti) i progetti open source. ### Perché si alterna tra i nomi "CHANGELOG" e "change log"? - "CHANGELOG" è il nome del file. È un po' invadente ma è una + "CHANGELOG" è il nome del file. È un po' invadente ma è una convenzione storica seguita da molti progetti open source. Altri esempi di file simili includono [`README`][README], [`LICENSE`][LICENSE], e [`CONTRIBUTING`][CONTRIBUTING]. - I nomi in maiuscolo (che su vecchi sistemi operativi erano ordinati per primi) + I nomi in maiuscolo (che su vecchi sistemi operativi erano ordinati per primi) vengono usati per attirare l'attenzione su di essi. Poiché sono metadati importanti relativi al progetto, possono essere utili per chiunque voglia usarlo o contribuire ad esso, un po' come i [badge dei progetti open source][shields]. @@ -158,7 +157,7 @@ language: it-IT ho volutamente evitato di creare una *release* o una chiara lista di regole da seguire (come fa, ad esempio, [SemVer.org][semver]). - Questo è perché voglio che la nostra comunità raggiunga un consenso. Credo che + Questo è perché voglio che la nostra comunità raggiunga un consenso. Credo che la discussione sia importante almeno quanto il risultato finale. Quindi per favore [**partecipate**][gh]. diff --git a/source/layouts/layout.html.haml b/source/layouts/layout.html.haml index 4b44ab3..10b0382 100644 --- a/source/layouts/layout.html.haml +++ b/source/layouts/layout.html.haml @@ -52,6 +52,9 @@ for now and = link_to "help translate ", "https://github.com/olivierlacan/keep-a-changelog/issues" it. + + - content = Haml::Filters::Code.render(yield) + = Redcarpet::Markdown.new(Redcarpet::Render::HTML_TOC.new(nesting_level: 5), { with_toc_data: true }).render(content).html_safe = yield %footer.clearfix{role: "banner"} diff --git a/source/pl-PL/0.3.0/index.html.haml b/source/pl-PL/0.3.0/index.html.haml index e997e81..9592638 100644 --- a/source/pl-PL/0.3.0/index.html.haml +++ b/source/pl-PL/0.3.0/index.html.haml @@ -15,9 +15,8 @@ version: 0.3.0 ### Czym jest changelog? Changelog, inaczej rejestr zmian lub historia zmian, to plik zawierający chronologicznie uporządkowaną listę istotnych zmian dla każdej wersji projektu. -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### Co jest celem prowadzenia changelogu? Changelog pomaga użytkownikom zrozumieć, jakie znaczące zmiany zostały wprowadzone w każdej wersji projektu. diff --git a/source/pt-BR/0.3.0/index.html.haml b/source/pt-BR/0.3.0/index.html.haml index 4a8207f..0c0a477 100644 --- a/source/pt-BR/0.3.0/index.html.haml +++ b/source/pt-BR/0.3.0/index.html.haml @@ -18,9 +18,8 @@ version: 0.3.0 cronologicamente, de mudanças significativas para cada versão de um projeto open source. -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### Para que serve um *change log*? Para facilitar para os usuários e contribuidores verem precisamente quais @@ -101,15 +100,15 @@ version: 0.3.0 Infelizmente, não. Calma. Eu sei que você está indo impetuosamente achar aquele link do guia de estilo de *change log* GNU, ou o arquivo "guideline" - de dois paragráfos de GNU NEWS. O estilo GNU é um bom começo mas é ingênuo. - Não há nada de errado em ser ingênuo mas quando as pessoas precisam de - orientação isso raramente ajuda. Especialmente quando existem muitas + de dois paragráfos de GNU NEWS. O estilo GNU é um bom começo mas é ingênuo. + Não há nada de errado em ser ingênuo mas quando as pessoas precisam de + orientação isso raramente ajuda. Especialmente quando existem muitas situações excepcionais e casos extremos com os quais se deve lidar. Este projeto [contém o que eu espero se tornar um melhor padrão de arquivo CHANGELOG][CHANGELOG]. Não acho que o status é bom o suficiente, e acho que como uma comunidade nós podemos definir melhores padrões se tentarmos extrair - boas práticas de projetos de software reais. Então por favor dê um olhada e + boas práticas de projetos de software reais. Então por favor dê um olhada e lembre que [discussões e sugestões para melhorias são bem-vindas][issues]! ### Qual deve ser o nome do arquivo *change log*? @@ -124,7 +123,7 @@ version: 0.3.0 É uma bagunça. Todos esses nome só dificultam que as pessoas o achem. ### Por quê as pessoas não podem simplesmente utilizar `git log`? - + Porque os logs do Git são cheios de ruído — por natureza. Eles não poderiam escrever um change log adequado mesmo em um projeto hipotético desenvolvido por humanos perfeitos que nunca cometem erros de grafia, nunca esquecem de @@ -134,7 +133,7 @@ version: 0.3.0 change log é documentar diferenças notáveis entre estes estados. Assim como são as diferenças entre bons comentários e o próprio código, há - a diferença entre o change log e o commit log: um descreve o porquê e o + a diferença entre o change log e o commit log: um descreve o porquê e o outro o como. ### Podem os *change logs* ser automaticamente interpretados? @@ -172,13 +171,13 @@ version: 0.3.0 A tag `[YANKED]` é chamativa por uma razão. É importante que as pessoas a notem. E já que é cercada por colchetes é mais fácil detectá-la programaticamente. - + ### Se você deveria reescrever um change log? - + Claro. Sempre existem boas razões para melhorar um change log. Eu abro os pull requests regularmente para adicionar releases que faltam a projetos open source com change logs sem manutenção. - + É também possível que você descubra que esqueceu de registrar uma mudança crucial nas anotações de uma versão. É obviamente importante que você atualize seu change log neste caso. diff --git a/source/ru/0.3.0/index.html.haml b/source/ru/0.3.0/index.html.haml index 23ffa88..6e7a5ff 100644 --- a/source/ru/0.3.0/index.html.haml +++ b/source/ru/0.3.0/index.html.haml @@ -18,9 +18,8 @@ version: 0.3.0 хронологическом порядке список значимых изменений для каждой версии проекта с открытым исходным кодом. -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### Для чего нужен лог изменений? Чтобы пользователи и контрибьюторы могли с меньшими усилиями точно diff --git a/source/sl/0.3.0/index.html.haml b/source/sl/0.3.0/index.html.haml index 73b11c3..a8fa5eb 100644 --- a/source/sl/0.3.0/index.html.haml +++ b/source/sl/0.3.0/index.html.haml @@ -16,9 +16,8 @@ version: 0.3.0 Dnevnik sprememb je datoteka, ki vsebuje kuriran, kronološko urejen seznam opaznih sprememb za vsako verzijo projekta. -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### Kaj je smisel dnevnika sprememb? Za poenostavitev, da uporabniki in prispevajoči sodelavci natančno vidijo, katere opazne spremembe so bile narejene med vsako izdajo (ali verzijo) projekta. diff --git a/source/sv/0.3.0/index.html.haml b/source/sv/0.3.0/index.html.haml index d5004f6..f9dcdef 100644 --- a/source/sv/0.3.0/index.html.haml +++ b/source/sv/0.3.0/index.html.haml @@ -16,9 +16,8 @@ version: 0.3.0 En ändringslogg är en fil innehållandes en sammanfattad, kronologiskt ordnad lista över ändringar för varje version av ett projekt. -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### Vad är meningen med en ändringslogg? För att göra det enkelt för användare och medarbetare att se exakt vilka viktiga ändringar som har gjorts mellan varje utgåva (eller version) av projektet. diff --git a/source/tr-TR/0.3.0/index.html.haml b/source/tr-TR/0.3.0/index.html.haml index a08e66b..60c61a4 100644 --- a/source/tr-TR/0.3.0/index.html.haml +++ b/source/tr-TR/0.3.0/index.html.haml @@ -14,9 +14,8 @@ version: 0.3.0 Değişiklik kayıtları bir proje için özel olarak hazırlanmış, tarihsel sıralamayla sıralanmış, önemli değişikliklerin bir bütünüdür. -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### Değişikliklerin kayıtlarını tutmanın anlamı ne? Bir projenin kullanıcılarının ya da katılımcılarının, dağıtımlar (ya da sürümler) arasındaki tam olarak hangi önemli değişikliklerin olduğunu takip edebilmelerini sağlar. @@ -90,7 +89,7 @@ version: 0.3.0 Mevcut durumun çok iyi olduğunu düşünmüyorum, ve topluluk olarak, gerçek yazılım projelerinden iyi pratikleri toplayarak bundan daha iyisini yapabiliriz. Lütfen etrafa bir göz gezdirin ve unutmayın [gelişme yolunda tartışmalara ve önerilere her zaman açığız][issues]! - + ### Değişiklik kayıtlarının dosya ismi ne olmalı? Eh, üstteki örnekten çıkartamadıysanız eğer, `CHANGELOG.md` şu ana kadarki en iyi çözüm. @@ -159,7 +158,7 @@ version: 0.3.0 [GitHub repo][gh]sunda güncel bir [CHANGELOG][] sağlıyor olsam da, özellikle bir *sürüm* ya da ([SemVer.org][semver] benzeri) takip edilecek kurallar oluşturmadım. - + Bunu istememin sebebi topluluğun ortak bir paydada buluşmasını istememdir. İnanıyorum ki tartışmanın kendisi de sonucu kadar önemli. diff --git a/source/zh-CN/0.3.0/index.html.haml b/source/zh-CN/0.3.0/index.html.haml index 910bf87..353daa3 100644 --- a/source/zh-CN/0.3.0/index.html.haml +++ b/source/zh-CN/0.3.0/index.html.haml @@ -17,9 +17,8 @@ version: 0.3.0 这个列表记录所有版本的重大变动。 -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### 为何要提供更新日志? 为了让用户和开发人员更好知道每一个版本有哪些区别。 diff --git a/source/zh-TW/0.3.0/index.html.haml b/source/zh-TW/0.3.0/index.html.haml index 2bf8a50..17210bc 100644 --- a/source/zh-TW/0.3.0/index.html.haml +++ b/source/zh-TW/0.3.0/index.html.haml @@ -17,9 +17,8 @@ version: 0.3.0 這個列表記錄所有版本的重大變動。 -%pre.changelog= File.read("CHANGELOG.md") +
#{File.read("CHANGELOG.md")}
-:markdown ### 為何要提供更新日誌? 為了讓用戶和開發人員更好知道每一個版本有哪些區別。 From 032451db76907673ccf9713b7f2fe353e6ce5780 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Wed, 5 Apr 2017 05:27:46 -0400 Subject: [PATCH 18/37] =?UTF-8?q?Add=20changelog=20entry=20about=20using?= =?UTF-8?q?=20=E2=80=9Cchangelog=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3365779..bc8df9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Change Log +# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) @@ -14,9 +14,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - French translation from @zapashcanon. - Brazilian Portugese translation from @aisamu. - Polish translation from @amielucha. -- ### Changed +- Start using "changelog" over "change log" since it's the common usage. - Start versioning based on the current English version at 0.3.0 to help translation authors keep things up-to-date. - Fix typos in Simplified Chinese and Traditional Chinese translations. From 5ac2bc826dcbf964499ec0467e070944c8575651 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Wed, 5 Apr 2017 23:04:16 +0200 Subject: [PATCH 19/37] Output table of contents on top --- config.rb | 19 ++++++++++++++++++- source/layouts/layout.html.haml | 2 -- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/config.rb b/config.rb index 3827600..4273f9e 100644 --- a/config.rb +++ b/config.rb @@ -116,8 +116,25 @@ set :markdown_engine, :redcarpet ## Override default Redcarpet renderer in order to define a class class CustomMarkdownRenderer < Redcarpet::Render::HTML + def doc_header + %Q[] + end + + def preprocess(full_document) + version_regex = /Version \*\*\d.\d.\d\*\*/ + top = full_document.split("").last + + @header = Redcarpet::Markdown.new( + Redcarpet::Render::HTML_TOC.new(nesting_level: 4), + { with_toc_data: true } + ).render(top + bottom).html_safe + + full_document + end + def header(text, header_level) - slug = text.gsub(" ", "-").downcase + slug = text.parameterize tag_name = "h#{header_level}" anchor_link = "" header_tag_open = "<#{tag_name} id='#{slug}'>" diff --git a/source/layouts/layout.html.haml b/source/layouts/layout.html.haml index 10b0382..586dd6d 100644 --- a/source/layouts/layout.html.haml +++ b/source/layouts/layout.html.haml @@ -53,8 +53,6 @@ = link_to "help translate ", "https://github.com/olivierlacan/keep-a-changelog/issues" it. - - content = Haml::Filters::Code.render(yield) - = Redcarpet::Markdown.new(Redcarpet::Render::HTML_TOC.new(nesting_level: 5), { with_toc_data: true }).render(content).html_safe = yield %footer.clearfix{role: "banner"} From a506eb2f128a4b3d6f9cd2a4898be3f9c3b977e8 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Mon, 17 Apr 2017 16:21:47 +0200 Subject: [PATCH 20/37] Bump Redcarpet to solve anchor issues --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 97d167e..55583c4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -117,7 +117,7 @@ GEM rb-fsevent (0.9.7) rb-inotify (0.9.7) ffi (>= 0.5.0) - redcarpet (3.3.3) + redcarpet (3.4.0) rouge (2.0.5) sass (3.4.22) servolux (0.12.0) @@ -146,4 +146,4 @@ DEPENDENCIES redcarpet BUNDLED WITH - 1.12.0 + 1.13.6 From 610f52d68c14d6fe98c5aa85cb531a5c29510e1e Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Mon, 17 Apr 2017 16:22:25 +0200 Subject: [PATCH 21/37] Style table of contents I want it to be unobtrusive and useful for people who need it but out of the way of anyone else. --- config.rb | 2 +- .../assets/stylesheets/application.css.sass | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/config.rb b/config.rb index 4273f9e..1c81fec 100644 --- a/config.rb +++ b/config.rb @@ -117,7 +117,7 @@ set :markdown_engine, :redcarpet ## Override default Redcarpet renderer in order to define a class class CustomMarkdownRenderer < Redcarpet::Render::HTML def doc_header - %Q[] + %Q[] end def preprocess(full_document) diff --git a/source/assets/stylesheets/application.css.sass b/source/assets/stylesheets/application.css.sass index 37496b2..2fab21d 100644 --- a/source/assets/stylesheets/application.css.sass +++ b/source/assets/stylesheets/application.css.sass @@ -13,6 +13,32 @@ a a:hover text-decoration: underline +.toc + position: fixed + z-index: 9999 + top: 10% + left: 0 + + ul + padding: 0 0 0 1em + list-style-type: decimal-leading-zero + li + padding-left: 1em + line-height: 2 + a + padding: 0 1em + line-height: 2 + display: none + + li:hover + color: $color-sand + background: $color-black + li:hover a + color: $color-sand + font-weight: bold + background-color: $color-black + display: inline-block + h1 color: #C647BF font-size: 4.1em From 5c40302726ea009318818956a7c38c90070ada0c Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Mon, 17 Apr 2017 16:23:03 +0200 Subject: [PATCH 22/37] =?UTF-8?q?Start=20experimenting=20with=20@tylerfort?= =?UTF-8?q?une8=E2=80=99s=20colors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assets/stylesheets/application.css.sass | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/source/assets/stylesheets/application.css.sass b/source/assets/stylesheets/application.css.sass index 2fab21d..2f16dd2 100644 --- a/source/assets/stylesheets/application.css.sass +++ b/source/assets/stylesheets/application.css.sass @@ -1,12 +1,19 @@ $base-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif $source-code-font-family: "Source Code Pro", monospace +$color-black: #342828 +$color-ocre: #E05735 +$color-gold: #EFA33C +$color-sand: #F2DDBC +$color-light-sand: lighten($color-sand, 10%) + html - font: 14px/1.4 $base-font-family - color: #333 + font: 16px/1.4 $base-font-family + color: #342828 + background-color: #F2DDBC a - color: #E10FCE + color: $color-ocre font-weight: bold text-decoration: none @@ -40,15 +47,17 @@ a:hover display: inline-block h1 - color: #C647BF - font-size: 4.1em + color: $color-ocre + font-size: 4.7em font-weight: bold font-family: $base-font-family margin-bottom: 0 line-height: 1 + text-transform: lowercase h2 - margin-top: 0.1em + font-size: 1.4em + margin-top: 0.2em margin-bottom: 2em h1, h2 @@ -145,4 +154,5 @@ footer white-space: nowrap pre, code + background-color: $color-light-sand font-family: $source-code-font-family From b4e29c634c0d6c31c81b35a2f0fa92f31969e523 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Thu, 27 Apr 2017 11:14:32 -0700 Subject: [PATCH 23/37] =?UTF-8?q?Don=E2=80=99t=20render=20TOC=20for=20low-?= =?UTF-8?q?level=20headings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit That clutters up the navigation --- config.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.rb b/config.rb index 1c81fec..71ef6f2 100644 --- a/config.rb +++ b/config.rb @@ -126,9 +126,9 @@ class CustomMarkdownRenderer < Redcarpet::Render::HTML bottom = full_document.split("").last @header = Redcarpet::Markdown.new( - Redcarpet::Render::HTML_TOC.new(nesting_level: 4), + Redcarpet::Render::HTML_TOC.new(nesting_level: 3), { with_toc_data: true } - ).render(top + bottom).html_safe + ).render(top).html_safe full_document end From 5347b92dbafd125ffca08a05e86da1309d691e46 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Thu, 27 Apr 2017 12:08:41 -0700 Subject: [PATCH 24/37] Improve list styling The font was too small, the bullets too indented. --- source/assets/stylesheets/application.css.sass | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/source/assets/stylesheets/application.css.sass b/source/assets/stylesheets/application.css.sass index 2f16dd2..90d24a6 100644 --- a/source/assets/stylesheets/application.css.sass +++ b/source/assets/stylesheets/application.css.sass @@ -27,8 +27,9 @@ a:hover left: 0 ul - padding: 0 0 0 1em + list-style-position: inside list-style-type: decimal-leading-zero + padding: 0 0 0 1em li padding-left: 1em line-height: 2 @@ -37,6 +38,9 @@ a:hover line-height: 2 display: none + span + display: none + li:hover color: $color-sand background: $color-black @@ -112,17 +116,11 @@ article img border-radius: 7px padding: 0.4em 0.9em -article > ul - font-size: 1.2em - padding-left: 0 - -article > ul ul - padding-left: 1em - article ul + font-size: 1.1em line-height: 1.5 - list-style-position: inside list-style-type: square + padding-left: 1em footer font-size: .7em From 2e4f7351e8d45551dcfc7ff8d75f7b245e1599a5 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Thu, 27 Apr 2017 12:09:24 -0700 Subject: [PATCH 25/37] Remove confusing section about casing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We just say “changelog” now and we can scrap this mess. --- source/en/0.4.0/index.html.haml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/source/en/0.4.0/index.html.haml b/source/en/0.4.0/index.html.haml index 336ec6b..fda6efd 100644 --- a/source/en/0.4.0/index.html.haml +++ b/source/en/0.4.0/index.html.haml @@ -123,20 +123,6 @@ version: 0.4.0 created by the [Gemnasium][gemnasium] team and which parses many (but not all) open source project changelogs. - ### Why do you alternate between spelling it "CHANGELOG" and "changelog"? - "CHANGELOG" is the name of the file itself. It's a bit shouty but it's a - historical convention followed by many open source projects. Other - examples of similar files include [`README`][README], [`LICENSE`][LICENSE], - and [`CONTRIBUTING`][CONTRIBUTING]. - - The uppercase naming (which in old operating systems made these files stick - to the top) is used to draw attention to them. Since they're important - metadata about the project, they could be useful to anyone intending to use - or contribute to it, much like [open source project badges][shields]. - - When I refer to a "changelog", I'm talking about the function of this - file: to log changes. - ### What about yanked releases? Yanked releases are versions that had to be pulled because of a serious bug or security issue. Often these versions don't even appear in change From 6448642978d31ad2f9f7ebf7fb0ac5bfd46eca2e Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Thu, 27 Apr 2017 12:13:59 -0700 Subject: [PATCH 26/37] Reduce font size of changelog example --- source/assets/stylesheets/application.css.sass | 1 + 1 file changed, 1 insertion(+) diff --git a/source/assets/stylesheets/application.css.sass b/source/assets/stylesheets/application.css.sass index 90d24a6..6fe7aba 100644 --- a/source/assets/stylesheets/application.css.sass +++ b/source/assets/stylesheets/application.css.sass @@ -144,6 +144,7 @@ footer padding: 1em overflow-x: auto height: 20em + font-size: 0.9em .locales li display: inline From 7af2d256eaf9ccb62e7a291601ef90ca6d473c65 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Thu, 27 Apr 2017 12:14:54 -0700 Subject: [PATCH 27/37] Answer what, why, who, and how MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous version was very wordy. Let’s get to it. --- source/en/0.4.0/index.html.haml | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/source/en/0.4.0/index.html.haml b/source/en/0.4.0/index.html.haml index fda6efd..b1eeca6 100644 --- a/source/en/0.4.0/index.html.haml +++ b/source/en/0.4.0/index.html.haml @@ -13,27 +13,30 @@ version: 0.4.0 Version **#{current_page.metadata[:page][:version]}** ### What’s a changelog? + A changelog is a file which contains a curated, chronologically ordered list of notable changes for each version of a project. + ### Why keep a changelog? + + To make it easier for users and contributors to see precisely what notable + changes have been made between each release (or version) of the project. + + ### Who needs a changelog? + + People do. Whether consumers or developers, the end users of software are + human beings who care about what's in the sofware. When the software changes, + people want to know why and how. + + ### How do I make a changelog? + + Let's look at our own changelog as an example: +
#{File.read("CHANGELOG.md")}
- ### What’s the point of a changelog? - To make it easier for users and contributors to see precisely what - notable changes have been made between each release (or version) of the project. - ### Why should I care? - Because software tools are for people. If you don’t care, why are - you contributing to open source? Surely, there must be a kernel (ha!) - of care somewhere in that lovely little brain of yours. - I [talked with Adam Stacoviak and Jerod Santo on The Changelog][thechangelog] - (fitting, right?) podcast about why maintainers and - contributors should care, and the motivations behind this project. - If you can spare the time (1:06), it’s a good listen. - ### What makes a good changelog? - I’m glad you asked. A good changelog sticks to these principles: From 68714f8946e7d066638c9bfe6b635539d7d517af Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Thu, 27 Apr 2017 12:18:38 -0700 Subject: [PATCH 28/37] =?UTF-8?q?Rewrite=20"What=20makes=20unicorns=20cry?= =?UTF-8?q?=3F=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Gah, this section sucked. Broke it down into multiple sub-sections instead of a list. --- CHANGELOG.md | 6 ++++++ source/en/0.4.0/index.html.haml | 36 +++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc8df9d..aeb0fa5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] ### Added +- "Why keep a changelog?" section +- "Who needs a changelog?" section +- "How do I make a changelog?" section - Simplified and Traditional Chinese translations from @tianshuo. - German translation from @mpbzh. - Italian translation from @roalz. @@ -19,6 +22,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Start using "changelog" over "change log" since it's the common usage. - Start versioning based on the current English version at 0.3.0 to help translation authors keep things up-to-date. +- Rewrite "What makes unicorns cry?" section. - Fix typos in Simplified Chinese and Traditional Chinese translations. - Fix typos in Brazilian Portugese translation. - Fix typos in Turkish translation. @@ -27,6 +31,8 @@ translation authors keep things up-to-date. - Improve phrasing in French translation. - Fix phrasing and spelling in German translation. +### Removed +- Section about "changelog" vs "CHANGELOG". ## [0.3.0] - 2015-12-03 ### Added diff --git a/source/en/0.4.0/index.html.haml b/source/en/0.4.0/index.html.haml index b1eeca6..85d7558 100644 --- a/source/en/0.4.0/index.html.haml +++ b/source/en/0.4.0/index.html.haml @@ -65,24 +65,30 @@ version: 0.4.0 - People can see what changes they might expect in upcoming releases - At release time, you just have to change `"Unreleased"` to the version number and add a new `"Unreleased"` header at the top. + ### Can a changelog be bad? - ### What makes unicorns cry? - Alright…let’s get into it. + Yes, and this is how changelogs can hurt more than help: - - **Dumping a diff of commit logs.** Just don’t do that, you’re helping nobody. - - **Not emphasizing deprecations.** When people upgrade from one version to - another, it should be painfully clear when something will break. - - **Dates in region-specific formats.** In the U.S., people put the month first - ("06-02-2012" for June 2nd, 2012, which makes *no* sense), while many people - in the rest of the world write a robotic-looking "2 June 2012", yet pronounce - it differently. "2012-06-02" works logically from largest to smallest, doesn't - overlap in ambiguous ways with other date formats, and is an - [ISO standard](http://www.iso.org/iso/home/standards/iso8601.htm). Thus, it - is the recommended date format for changelogs. + #### Commit log diffs - There’s more. Help me collect those unicorn tears by - [opening an issue][issues] - or a pull request. + Just don’t do that, you’re helping nobody. + + #### Ignoring Deprecations + + When people upgrade from one version to another, it should be painfully clear + when something will break. + + #### Confusing Dates + + In the U.S., people put the month first ("06-02-2012" for June 2nd, 2012, + which makes *no* sense), while many people in the rest of the world write a + robotic-looking "2 June 2012", yet pronounce it differently. "2012-06-02" + works logically from largest to smallest, doesn't overlap in ambiguous ways + with other date formats, and is an [ISO standard][iso]. Thus, it is the + recommended date format for changelogs. + + There’s more. Help me collect those unicorn tears by [opening an + issue][issues] or a pull request. ### Is there a standard changelog format? Sadly, no. Calm down. I know you're furiously rushing to find that link From bc8d9993d4f1fc8f5a0bc7c6ab3f41f5d384fcf3 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Thu, 27 Apr 2017 12:19:17 -0700 Subject: [PATCH 29/37] Clarify guiding principles & types --- CHANGELOG.md | 1 + source/en/0.4.0/index.html.haml | 33 +++++++++++++++------------------ 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aeb0fa5..7dbbb76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - "Why keep a changelog?" section - "Who needs a changelog?" section - "How do I make a changelog?" section +- New "Guiding Principles" sub-section to "How do I make a changelog?". - Simplified and Traditional Chinese translations from @tianshuo. - German translation from @mpbzh. - Italian translation from @roalz. diff --git a/source/en/0.4.0/index.html.haml b/source/en/0.4.0/index.html.haml index 85d7558..c62ff17 100644 --- a/source/en/0.4.0/index.html.haml +++ b/source/en/0.4.0/index.html.haml @@ -34,28 +34,25 @@ version: 0.4.0
#{File.read("CHANGELOG.md")}
+ #### Guiding Principles + - Changelogs are *for humans*, not machines. + - There should be an entry for every single version. + - The same [types of changes](#types-of-changes) should be grouped. + - Versions and sections should be linkable. + - The latest version comes first. + - The release date of each versions is displayed. + - Mention if the project follows [Semantic Versioning][semver]. + ##### Types of changes + - `Added` for new features. + - `Changed` for changes in existing functionality. + - `Deprecated` for once-stable features removed in upcoming releases. + - `Removed` for deprecated features removed in this release. + - `Fixed` for any bug fixes. + - `Security` to invite users to upgrade in case of vulnerabilities. - A good changelog sticks to these principles: - - - It’s made for humans, not machines, so legibility is crucial. - - Easy to link to any section (hence Markdown over plain text). - - One sub-section per version. - - List releases in reverse-chronological order (newest on top). - - Write all dates in `YYYY-MM-DD` format. (Example: `2012-06-02` for `June 2nd, 2012`.) It’s international, [sensible](http://xkcd.com/1179/), and language-independent. - - Explicitly mention whether the project follows [Semantic Versioning][semver]. - - Each version should: - - List its release date in the above format. - - Group changes to describe their impact on the project, as follows: - - `Added` for new features. - - `Changed` for changes in existing functionality. - - `Deprecated` for once-stable features removed in upcoming releases. - - `Removed` for deprecated features removed in this release. - - `Fixed` for any bug fixes. - - `Security` to invite users to upgrade in case of vulnerabilities. - ### How can I minimize the effort required? Always have an `"Unreleased"` section at the top for keeping track of any changes. From 6a60ed52438ffaeea64b82663bbb65cc1f5967c4 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Thu, 27 Apr 2017 12:20:54 -0700 Subject: [PATCH 30/37] Text styling and organization improvements --- source/en/0.4.0/index.html.haml | 45 ++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/source/en/0.4.0/index.html.haml b/source/en/0.4.0/index.html.haml index c62ff17..9fd4221 100644 --- a/source/en/0.4.0/index.html.haml +++ b/source/en/0.4.0/index.html.haml @@ -52,16 +52,16 @@ version: 0.4.0 - `Fixed` for any bug fixes. - `Security` to invite users to upgrade in case of vulnerabilities. + ### How can I reduce the effort required to maintain a changelog? - ### How can I minimize the effort required? - Always have an `"Unreleased"` section at the top for keeping track of any - changes. + Keep an `"Unreleased"` section at the top for keeping track of any changes. This serves two purposes: - People can see what changes they might expect in upcoming releases - - At release time, you just have to change `"Unreleased"` to the version number - and add a new `"Unreleased"` header at the top. + - At release time, you can convert `"Unreleased"` to the version's release + number and add a new `"Unreleased"` header at the top. + ### Can a changelog be bad? Yes, and this is how changelogs can hurt more than help: @@ -88,20 +88,22 @@ version: 0.4.0 issue][issues] or a pull request. ### Is there a standard changelog format? - Sadly, no. Calm down. I know you're furiously rushing to find that link - to the GNU changelog style guide, or the two-paragraph GNU NEWS file - "guideline". The GNU style guide is a nice start but it is sadly naive. - There's nothing wrong with being naive but when people need - guidance it's rarely very helpful. Especially when there are many - situations and edge cases to deal with. - This project [contains what I hope will become a better CHANGELOG file convention][CHANGELOG]. - I don't think the status quo is good enough, and I think that as a community we - can come up with better conventions if we try to extract good practices from - real software projects. Please take a look around and remember that - [discussions and suggestions for improvements are welcome][issues]! + Sadly, no. Calm down. I know you're furiously rushing to find that link to the + GNU changelog style guide, or the two-paragraph GNU NEWS file "guideline". The + GNU style guide is a nice start but it is sadly naive. There's nothing wrong + with being naive but when people need guidance it's rarely very helpful. + Especially when there are many situations and edge cases to deal with. + + This project [contains what I hope will become a better CHANGELOG file + convention][CHANGELOG]. I don't think the status quo is good enough, and I + think that as a community we can come up with better conventions if we try to + extract good practices from real software projects. Please take a look around + and remember that [discussions and suggestions for improvements are + welcome][issues]! ### What should the changelog file be named? + Well, if you can’t tell from the example above, `CHANGELOG.md` is the best convention so far. @@ -110,7 +112,8 @@ version: 0.4.0 It’s a mess. All these names only makes it harder for people to find it. - ### Why can’t people just use a `git log` diff? + ### Why can’t people just use a git log diff? + Because log diffs are full of noise — by nature. They could not make a suitable changelog even in a hypothetical project run by perfect humans who never make typos, never forget to commit new files, never miss any part of a refactoring. @@ -161,6 +164,13 @@ version: 0.4.0 So please [**pitch in**][gh]. + ### Press + + I [talked with Adam Stacoviak and Jerod Santo on The Changelog][thechangelog] + (fitting, right?) podcast about why maintainers and + contributors should care, and the motivations behind this project. + If you can spare the time (1:06), it’s a good listen. + [CHANGELOG]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CHANGELOG.md [CONTRIBUTING]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CONTRIBUTING.md [LICENSE]: https://github.com/olivierlacan/keep-a-changelog/blob/master/LICENSE @@ -172,3 +182,4 @@ version: 0.4.0 [shields]: http://shields.io/ [thechangelog]: http://5by5.tv/changelog/127 [vandamme]: https://github.com/tech-angels/vandamme/ + [iso]: http://www.iso.org/iso/home/standards/iso8601.htm From 69723cdea2904b394f023e1a720431d6a2b12013 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Fri, 28 Apr 2017 16:02:57 -0700 Subject: [PATCH 31/37] Improve commit log diffs section --- CHANGELOG.md | 3 +++ source/en/0.4.0/index.html.haml | 41 +++++++++++++++------------------ 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7dbbb76..b6e5e74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Start versioning based on the current English version at 0.3.0 to help translation authors keep things up-to-date. - Rewrite "What makes unicorns cry?" section. +- Rewrite "Ignoring Deprecations" sub-section to clarify the ideal scenario. +- Improve "Commit log diffs" sub-section to further argument against them. +- Merge "Why can’t people just use a git log diff?" with "Commit log diffs" - Fix typos in Simplified Chinese and Traditional Chinese translations. - Fix typos in Brazilian Portugese translation. - Fix typos in Turkish translation. diff --git a/source/en/0.4.0/index.html.haml b/source/en/0.4.0/index.html.haml index 9fd4221..100d540 100644 --- a/source/en/0.4.0/index.html.haml +++ b/source/en/0.4.0/index.html.haml @@ -68,12 +68,25 @@ version: 0.4.0 #### Commit log diffs - Just don’t do that, you’re helping nobody. + Using commit log diffs as changelogs is a bad idea: they're full of noise. + Things like merge commits, commits with obscure titles, documentation changes, + etc. + + The purpose of a commit is to document a step in the evolution of the source + code. Some projects clean up commits, some don't. + + The purpose of a changelog entry is to document the noteworthy difference, + often across multiple commits, to communicate them clearly to end users. #### Ignoring Deprecations When people upgrade from one version to another, it should be painfully clear - when something will break. + when something will break. It should be possible to upgrade to a version + that lists deprecations, remove what's deprecated, then upgrade to the version + where the deprecations become removals. + + If you do nothing else, list deprecations, removals, and any breaking changes + in your changelog. #### Confusing Dates @@ -104,26 +117,10 @@ version: 0.4.0 ### What should the changelog file be named? - Well, if you can’t tell from the example above, `CHANGELOG.md` is the - best convention so far. - - Some projects also use `HISTORY.txt`, `HISTORY.md`, `History.md`, `NEWS.txt`, - `NEWS.md`, `News.txt`, `RELEASES.txt`, `RELEASE.md`, `releases.md`, etc. - - It’s a mess. All these names only makes it harder for people to find it. - - ### Why can’t people just use a git log diff? - - Because log diffs are full of noise — by nature. They could not make a suitable - changelog even in a hypothetical project run by perfect humans who never make - typos, never forget to commit new files, never miss any part of a refactoring. - The purpose of a commit is to document one atomic step in the process by which - the code evolves from one state to another. The purpose of a changelog is to - document the noteworthy differences between these states. - - As is the difference between good comments and the code itself, - so is the difference between a changelog and the commit log: - one describes the *why*, the other the how. + Call it `CHANGELOG.md`. Some projects use `HISTORY`, `NEWS`, or `RELEASES`. + While it's easy to think that the name of your changelog file doesn't matter + that much, why make it harder for your end users to consistently find notable + changes? ### Can changelogs be automatically parsed? It’s difficult, because people follow wildly different formats and file names. From 50eec2a19cdd201a120f1c458250ad74c6c97795 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Fri, 28 Apr 2017 16:03:04 -0700 Subject: [PATCH 32/37] Fix TOC --- config.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.rb b/config.rb index 71ef6f2..452b468 100644 --- a/config.rb +++ b/config.rb @@ -128,7 +128,7 @@ class CustomMarkdownRenderer < Redcarpet::Render::HTML @header = Redcarpet::Markdown.new( Redcarpet::Render::HTML_TOC.new(nesting_level: 3), { with_toc_data: true } - ).render(top).html_safe + ).render(top + bottom).html_safe full_document end From fde9698cb013ff44a3f320d0db9803635172b590 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Tue, 16 May 2017 10:43:22 -0600 Subject: [PATCH 33/37] Convert 0.4.0 to 1.0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It’s time. Reworked sections and extracted out-of-band information into a frequently asked questions section as a sort of catch all to keep everything focused. Gave up Markdown since it seriously limits our styling possibilities while Haml doesn’t hurt the legibility or the barrier to entry much. Only part I don’t love yet are the reference links that are now up top in the source file. --- source/en/0.4.0/index.html.haml | 182 -------------------- source/en/1.0.0/index.html.haml | 287 ++++++++++++++++++++++++++++++++ 2 files changed, 287 insertions(+), 182 deletions(-) delete mode 100644 source/en/0.4.0/index.html.haml create mode 100644 source/en/1.0.0/index.html.haml diff --git a/source/en/0.4.0/index.html.haml b/source/en/0.4.0/index.html.haml deleted file mode 100644 index 100d540..0000000 --- a/source/en/0.4.0/index.html.haml +++ /dev/null @@ -1,182 +0,0 @@ ---- -description: Keep a Changelog -title: Keep a Changelog -language: en -version: 0.4.0 ---- - -:markdown - # Keep a Changelog - - ## Don’t let your friends dump git logs into changelogs™ - - Version **#{current_page.metadata[:page][:version]}** - - ### What’s a changelog? - - A changelog is a file which contains a curated, chronologically ordered - list of notable changes for each version of a project. - - ### Why keep a changelog? - - To make it easier for users and contributors to see precisely what notable - changes have been made between each release (or version) of the project. - - ### Who needs a changelog? - - People do. Whether consumers or developers, the end users of software are - human beings who care about what's in the sofware. When the software changes, - people want to know why and how. - - ### How do I make a changelog? - - Let's look at our own changelog as an example: - -
#{File.read("CHANGELOG.md")}
- - #### Guiding Principles - - - Changelogs are *for humans*, not machines. - - There should be an entry for every single version. - - The same [types of changes](#types-of-changes) should be grouped. - - Versions and sections should be linkable. - - The latest version comes first. - - The release date of each versions is displayed. - - Mention if the project follows [Semantic Versioning][semver]. - - ##### Types of changes - - `Added` for new features. - - `Changed` for changes in existing functionality. - - `Deprecated` for once-stable features removed in upcoming releases. - - `Removed` for deprecated features removed in this release. - - `Fixed` for any bug fixes. - - `Security` to invite users to upgrade in case of vulnerabilities. - - ### How can I reduce the effort required to maintain a changelog? - - Keep an `"Unreleased"` section at the top for keeping track of any changes. - - This serves two purposes: - - - People can see what changes they might expect in upcoming releases - - At release time, you can convert `"Unreleased"` to the version's release - number and add a new `"Unreleased"` header at the top. - - ### Can a changelog be bad? - - Yes, and this is how changelogs can hurt more than help: - - #### Commit log diffs - - Using commit log diffs as changelogs is a bad idea: they're full of noise. - Things like merge commits, commits with obscure titles, documentation changes, - etc. - - The purpose of a commit is to document a step in the evolution of the source - code. Some projects clean up commits, some don't. - - The purpose of a changelog entry is to document the noteworthy difference, - often across multiple commits, to communicate them clearly to end users. - - #### Ignoring Deprecations - - When people upgrade from one version to another, it should be painfully clear - when something will break. It should be possible to upgrade to a version - that lists deprecations, remove what's deprecated, then upgrade to the version - where the deprecations become removals. - - If you do nothing else, list deprecations, removals, and any breaking changes - in your changelog. - - #### Confusing Dates - - In the U.S., people put the month first ("06-02-2012" for June 2nd, 2012, - which makes *no* sense), while many people in the rest of the world write a - robotic-looking "2 June 2012", yet pronounce it differently. "2012-06-02" - works logically from largest to smallest, doesn't overlap in ambiguous ways - with other date formats, and is an [ISO standard][iso]. Thus, it is the - recommended date format for changelogs. - - There’s more. Help me collect those unicorn tears by [opening an - issue][issues] or a pull request. - - ### Is there a standard changelog format? - - Sadly, no. Calm down. I know you're furiously rushing to find that link to the - GNU changelog style guide, or the two-paragraph GNU NEWS file "guideline". The - GNU style guide is a nice start but it is sadly naive. There's nothing wrong - with being naive but when people need guidance it's rarely very helpful. - Especially when there are many situations and edge cases to deal with. - - This project [contains what I hope will become a better CHANGELOG file - convention][CHANGELOG]. I don't think the status quo is good enough, and I - think that as a community we can come up with better conventions if we try to - extract good practices from real software projects. Please take a look around - and remember that [discussions and suggestions for improvements are - welcome][issues]! - - ### What should the changelog file be named? - - Call it `CHANGELOG.md`. Some projects use `HISTORY`, `NEWS`, or `RELEASES`. - While it's easy to think that the name of your changelog file doesn't matter - that much, why make it harder for your end users to consistently find notable - changes? - - ### Can changelogs be automatically parsed? - It’s difficult, because people follow wildly different formats and file names. - - [Vandamme][vandamme] is a Ruby gem - created by the [Gemnasium][gemnasium] team and which parses - many (but not all) open source project changelogs. - - ### What about yanked releases? - Yanked releases are versions that had to be pulled because of a serious - bug or security issue. Often these versions don't even appear in change - logs. They should. This is how you should display them: - - `## 0.0.5 - 2014-12-13 [YANKED]` - - The `[YANKED]` tag is loud for a reason. It's important for people to - notice it. Since it's surrounded by brackets it's also easier to parse - programmatically. - - ### Should you ever rewrite a changelog? - Sure. There are always good reasons to improve a changelog. I regularly open - pull requests to add missing releases to open source projects with unmaintained - changelogs. - - It's also possible you may discover that you forgot to address a breaking change - in the notes for a version. It's obviously important for you to update your - changelog in this case. - - ### How can I contribute? - This document is not the **truth**; it’s my carefully considered - opinion, along with information and examples I gathered. - Although I provide an actual [CHANGELOG][] on [the GitHub repo][gh], - I have purposefully not created a proper *release* or clear list of rules - to follow (as [SemVer.org][semver] does, for instance). - - This is because I want our community to reach a consensus. I believe the - discussion is as important as the end result. - - So please [**pitch in**][gh]. - - ### Press - - I [talked with Adam Stacoviak and Jerod Santo on The Changelog][thechangelog] - (fitting, right?) podcast about why maintainers and - contributors should care, and the motivations behind this project. - If you can spare the time (1:06), it’s a good listen. - - [CHANGELOG]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CHANGELOG.md - [CONTRIBUTING]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CONTRIBUTING.md - [LICENSE]: https://github.com/olivierlacan/keep-a-changelog/blob/master/LICENSE - [README]: https://github.com/olivierlacan/keep-a-changelog/blob/master/README.md - [gemnasium]: https://gemnasium.com/ - [gh]: https://github.com/olivierlacan/keep-a-changelog - [issues]: https://github.com/olivierlacan/keep-a-changelog/issues - [semver]: http://semver.org/ - [shields]: http://shields.io/ - [thechangelog]: http://5by5.tv/changelog/127 - [vandamme]: https://github.com/tech-angels/vandamme/ - [iso]: http://www.iso.org/iso/home/standards/iso8601.htm diff --git a/source/en/1.0.0/index.html.haml b/source/en/1.0.0/index.html.haml new file mode 100644 index 0000000..7640683 --- /dev/null +++ b/source/en/1.0.0/index.html.haml @@ -0,0 +1,287 @@ +--- +description: Keep a Changelog +title: Keep a Changelog +language: en +version: 1.0.0 +--- + +- changelog = "https://github.com/olivierlacan/keep-a-changelog/blob/master/CHANGELOG.md" +- gemnasium = "https://gemnasium.com/" +- gh = "https://github.com/olivierlacan/keep-a-changelog" +- issues = "https://github.com/olivierlacan/keep-a-changelog/issues" +- semver = "http://semver.org/" +- shields = "http://shields.io/" +- thechangelog = "http://5by5.tv/changelog/127" +- vandamme = "https://github.com/tech-angels/vandamme/" +- iso = "http://www.iso.org/iso/home/standards/iso8601.htm" + +.header + .title + %h1 Keep a Changelog + + %h2 Don’t let your friends dump git logs into changelogs. + + Version #{current_page.metadata[:page][:version]} + + %pre.changelog= File.read("CHANGELOG.md") + +.answers + %h3#what + %a.anchor{ href: "#what", aria_hidden: "true" } + What is a changelog? + + %p + A changelog is a file which contains a curated, chronologically + ordered list of notable changes for each version of a project. + + %h3#why + %a.anchor{ href: "#why", aria_hidden: "true" } + Why keep a changelog? + + %p + To make it easier for users and contributors to see precisely what + notable changes have been made between each release (or version) of + the project. + + %h3#who + %a.anchor{ href: "#who", aria_hidden: "true" } + Who needs a changelog? + + %p + People do. Whether consumers or developers, the end users of + software are human beings who care about what's in the sofware. When + the software changes, people want to know why and how. + +.good-practices + %h3#how + %a.anchor{ href: "#how", aria_hidden: "true" } + How do I make a good changelog? + + %h4#principles + %a.anchor{ href: "#principles", aria_hidden: "true" } + Guiding Principles + + %ul + %li + Changelogs are for humans, not machines. + %li + There should be an entry for every single version. + %li + The same types of changes should be grouped. + %li + Versions and sections should be linkable. + %li + The latest version comes first. + %li + The release date of each versions is displayed. + %li + Mention if the project follows + = link_to "Semantic Versioning.", semver + + %a.anchor{ href: "#types", aria_hidden: "true" } + %h4#types Types of changes + + %ul + %li + Added for new features. + %li + Changed for changes in existing functionality. + %li + Deprecated for once-stable features removed in + upcoming releases. + %li + Removed for deprecated features removed in this + release. + %li + Fixed for any bug fixes. + %li + Security to invite users to upgrade in case of + vulnerabilities. + +.effort + %a.anchor{ href: "#effort", aria_hidden: "true" } + %h3#effort How can I reduce the effort required to maintain a changelog? + + %p + Keep an Unreleased section at the top to + track upcoming changes. + + %p This serves two purposes: + + %ul + %li + People can see what changes they might expect in upcoming releases + %li + At release time, you can move the Unreleased section + changes into a new release version section. + +.bad-practices + %h3#bad-practices + %a.anchor{ href: "#bad-practices", aria_hidden: "true" } + Can changelogs be bad? + + %p Yes. Here are a few ways they can be less than useful. + + %h4#log-diffs + %a.anchor{ href: "#log-diffs", aria_hidden: "true" } + Commit log diffs + + %p + Using commit log diffs as changelogs is a bad idea: they're full of + noise. Things like merge commits, commits with obscure titles, + documentation changes, etc. + + %p + The purpose of a commit is to document a step in the evolution of + the source code. Some projects clean up commits, some don't. + + %p + The purpose of a changelog entry is to document the noteworthy + difference, often across multiple commits, to communicate them + clearly to end users. + + %h4#ignoring-deprecations + %a.anchor{ href: "#ignoring-deprecations", aria_hidden: "true" } + Ignoring Deprecations + + %p + When people upgrade from one version to another, it should be + painfully clear when something will break. It should be possible to + upgrade to a version that lists deprecations, remove what's + deprecated, then upgrade to the version where the deprecations + become removals. + + %p + If you do nothing else, list deprecations, removals, and any + breaking changes in your changelog. + + + %h4#confusing-dates + %a.anchor{ href: "#confusing-dates", aria_hidden: "true" } + Confusing Dates + + %p + In the U.S., people put the month first ("06-02-2012" for June 2nd, + 2012, which makes *no* sense), while many people in the rest of the + world write a robotic-looking "2 June 2012", yet pronounce it + differently. "2012-06-02" works logically from largest to smallest, + doesn't overlap in ambiguous ways with other date formats, and is an + [ISO standard][iso]. Thus, it is the recommended date format for + changelogs. + + %p + There’s more. Help me collect those unicorn tears by + = link_to "opening an issue", "#issues" + or a pull request. + +.frequently-asked-questions + %h3#frequently-asked-questions + %a.anchor{ href: "#frequently-asked-questions", aria_hidden: "true" } + Frequently Asked Questions + + %h4#standard + %a.anchor{ href: "#standard", aria_hidden: "true" } + Is there a standard changelog format? + + %p + Not really. There's the GNU changelog style guide, or the two- + paragraph-long GNU NEWS file "guideline". Both are inadequate or + insufficient. + + %p + This project aims to be + = link_to "a better changelog convention.", changelog + It's comes from observing good practices in the open source + community and gathering them. + + %p + Healthy criticism, discussion and suggestions for improvements + = link_to "are welcome.", issues + + + %h4#filename + %a.anchor{ href: "#filename", aria_hidden: "true" } + What should the changelog file be named? + + %p + Call it CHANGELOG.md. Some projects use + HISTORY, NEWS or RELEASES. + + %p + While it's easy to think that the name of your changelog file + doesn't matter that much, why make it harder for your end users to + consistently find notable changes? + + + %h4#automatic + %a.anchor{ href: "#automatic", aria_hidden: "true" } + Can changelogs be automatically parsed? + + %p + It’s difficult, because people follow wildly different formats and + file names. + + %p + #{link_to "Vandamme", vandamme} is a Ruby gem created by the + #{link_to "Gemnasium", gemnasium} team and which parses many (but + not all) open source project changelogs. + + + %h4#yanked + %a.anchor{ href: "#yanked", aria_hidden: "true" } + What about yanked releases? + + %p + Yanked releases are versions that had to be pulled because of a + serious bug or security issue. Often these versions don't even + appear in change logs. They should. This is how you should display + them: + + %p ## 0.0.5 - 2014-12-13 [YANKED] + + %p + The [YANKED] tag is loud for a reason. It's important + for people to notice it. Since it's surrounded by brackets it's also + easier to parse programmatically. + + + %h4#rewrite + %a.anchor{ href: "#rewrite", aria_hidden: "true" } + Should you ever rewrite a changelog? + + %p + Sure. There are always good reasons to improve a changelog. I + regularly open pull requests to add missing releases to open source + projects with unmaintained changelogs. + + %p + It's also possible you may discover that you forgot to address a + breaking change in the notes for a version. It's obviously important + for you to update your changelog in this case. + + + %h4#contribute + %a.anchor{ href: "#contribute", aria_hidden: "true" } + How can I contribute? + + %p + This document is not the truth; it’s my carefully + considered opinion, along with information and examples I gathered. + Although I provide an actual #{link_to "CHANGELOG", changelog} on + #{link_to "the GitHub repo", gh}, I have purposefully not created a + proper release or clear list of rules to follow (as + #{link_to "SemVer.org", semver} does, for instance). + + %p + This is because I want our community to reach a consensus. I believe + the discussion is as important as the end result. + + %p So please #{link_to "pitch in", gh}. + +.press + %h3 Press + %p + I went on #{link_to "The Changelog podcast", thechangelog} + about why maintainers and contributors should care, and the + motivations behind this project. If you can spare the time (1:06), + it’s a good listen. From f770df17f910d49581a25740592c123b6c99cfbb Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Tue, 16 May 2017 10:43:55 -0600 Subject: [PATCH 34/37] Add glorious @tylerfortune8 styling for 1.0.0 --- CHANGELOG.md | 23 +-- config.rb | 14 +- source/assets/images/bg-hero@2x.png | Bin 0 -> 164834 bytes source/assets/images/bg-img1@2x.png | Bin 0 -> 38039 bytes source/assets/images/bg-img2@2x.png | Bin 0 -> 37183 bytes .../assets/images/keep-a-changelog-mark.svg | 1 + source/assets/javascripts/all.js | 33 +++- source/assets/stylesheets/anchors.sass | 16 ++ .../assets/stylesheets/application.css.sass | 120 ++++---------- source/assets/stylesheets/layout.sass | 31 ++++ source/assets/stylesheets/sections.sass | 151 ++++++++++++++++++ .../assets/stylesheets/table-of-contents.sass | 29 ++++ source/layouts/layout.html.haml | 57 +++---- 13 files changed, 332 insertions(+), 143 deletions(-) create mode 100644 source/assets/images/bg-hero@2x.png create mode 100644 source/assets/images/bg-img1@2x.png create mode 100644 source/assets/images/bg-img2@2x.png create mode 100644 source/assets/images/keep-a-changelog-mark.svg create mode 100644 source/assets/stylesheets/anchors.sass create mode 100644 source/assets/stylesheets/layout.sass create mode 100644 source/assets/stylesheets/sections.sass create mode 100644 source/assets/stylesheets/table-of-contents.sass diff --git a/CHANGELOG.md b/CHANGELOG.md index b6e5e74..2477c97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] ### Added -- "Why keep a changelog?" section -- "Who needs a changelog?" section -- "How do I make a changelog?" section +- "Why keep a changelog?" section. +- "Who needs a changelog?" section. +- "How do I make a changelog?" section. +- "Frequently Asked Questions" section. - New "Guiding Principles" sub-section to "How do I make a changelog?". - Simplified and Traditional Chinese translations from @tianshuo. - German translation from @mpbzh. @@ -24,9 +25,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Start versioning based on the current English version at 0.3.0 to help translation authors keep things up-to-date. - Rewrite "What makes unicorns cry?" section. -- Rewrite "Ignoring Deprecations" sub-section to clarify the ideal scenario. -- Improve "Commit log diffs" sub-section to further argument against them. -- Merge "Why can’t people just use a git log diff?" with "Commit log diffs" +- Rewrite "Ignoring Deprecations" sub-section to clarify the ideal + scenario. +- Improve "Commit log diffs" sub-section to further argument against + them. +- Merge "Why can’t people just use a git log diff?" with "Commit log + diffs" - Fix typos in Simplified Chinese and Traditional Chinese translations. - Fix typos in Brazilian Portugese translation. - Fix typos in Turkish translation. @@ -46,8 +50,8 @@ translation authors keep things up-to-date. ## [0.2.0] - 2015-10-06 ### Changed -- Remove exclusionary mentions of "open source" since this project can benefit -both "open" and "closed" source projects equally. +- Remove exclusionary mentions of "open source" since this project can +benefit both "open" and "closed" source projects equally. ## [0.1.0] - 2015-10-06 ### Added @@ -113,7 +117,8 @@ notable changes. ## 0.0.1 - 2014-05-31 ### Added -- This CHANGELOG file to hopefully serve as an evolving example of a standardized open source project CHANGELOG. +- This CHANGELOG file to hopefully serve as an evolving example of a + standardized open source project CHANGELOG. - CNAME file to enable GitHub Pages custom domain - README now contains answers to common questions about CHANGELOGs - Good examples and basic guidelines, including proper date formatting. diff --git a/config.rb b/config.rb index 452b468..f204783 100644 --- a/config.rb +++ b/config.rb @@ -21,6 +21,7 @@ $languages = { und bei der Übersetzung mithelfen." }, "en" => { + default: true, name: "English", notice: "" }, @@ -120,19 +121,6 @@ class CustomMarkdownRenderer < Redcarpet::Render::HTML %Q[] end - def preprocess(full_document) - version_regex = /Version \*\*\d.\d.\d\*\*/ - top = full_document.split("").last - - @header = Redcarpet::Markdown.new( - Redcarpet::Render::HTML_TOC.new(nesting_level: 3), - { with_toc_data: true } - ).render(top + bottom).html_safe - - full_document - end - def header(text, header_level) slug = text.parameterize tag_name = "h#{header_level}" diff --git a/source/assets/images/bg-hero@2x.png b/source/assets/images/bg-hero@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9005b625d5d6fdb71442fa4ab513d103e0e42874 GIT binary patch literal 164834 zcmV)cK&ZcoP)uF=TahR%Lnc@8(Z!0bD25iSC1K;1_8A)@G0hr?Kyk&7x zWE5gp=iJ3bn-IXO4w`|yqP%D9b`3If{!7o`)a>ua$;=vILtbdF=NutT->5!zFCixs6K$Yr7V;WxP&oq%+Ev^DplYd*0XqnuyG>)jAuEC)3#_fDwNg6HaQ* z$|HhfwLpLwiwT-x#9~RvX2oKSyt=H~IJFsz4f4BUF~uR*LHnim!woCKR$~@RY;noT z9k}yb)WjK!TSCQjZuz&nHu9ii%0DbUjli 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 literal 0 HcmV?d00001 diff --git a/source/assets/images/bg-img1@2x.png b/source/assets/images/bg-img1@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..890bf4b2402c6e195fe8c62dcfe33a0ce14c9750 GIT binary patch literal 38039 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 literal 0 HcmV?d00001 diff --git a/source/assets/images/keep-a-changelog-mark.svg b/source/assets/images/keep-a-changelog-mark.svg new file mode 100644 index 0000000..9a1fcd6 --- /dev/null +++ b/source/assets/images/keep-a-changelog-mark.svg @@ -0,0 +1 @@ +Artboard 1 copy 3 \ No newline at end of file diff --git a/source/assets/javascripts/all.js b/source/assets/javascripts/all.js index 2c03f2d..52f13fa 100644 --- a/source/assets/javascripts/all.js +++ b/source/assets/javascripts/all.js @@ -1 +1,32 @@ -//= require_tree . +document.addEventListener("DOMContentLoaded", function(){ + var select = document.querySelector('.locales select'); + select.addEventListener('change', function(event){ + origin = window.location.origin; + languageCode = event.currentTarget.selectedOptions[0].value + window.location.replace(origin + "/" + languageCode) + }); + + var faqHeaders = document.querySelectorAll('.frequently-asked-questions h4'); + + for(header of faqHeaders){ + header.addEventListener('click', toggleVisibility); + } + + function toggleVisibility(event) { + element = event.target; + element.classList.toggle('is-visible') + + lastParagraph = element.nextElementSibling; + paragraphs = []; + paragraphs.push(lastParagraph); + + while (lastParagraph.nextElementSibling.tagName == "P") { + lastParagraph = lastParagraph.nextElementSibling; + paragraphs.push(lastParagraph) + } + + for(paragraph of paragraphs) { + paragraph.classList.toggle('is-visible'); + } + } +}); diff --git a/source/assets/stylesheets/anchors.sass b/source/assets/stylesheets/anchors.sass new file mode 100644 index 0000000..1d05765 --- /dev/null +++ b/source/assets/stylesheets/anchors.sass @@ -0,0 +1,16 @@ +.anchor + display: none + font-style: normal + font-weight: normal + position: absolute + right: 100% + top: 0 + +.anchor::before + line-height: 3.2 + content: "∞" + color: $color-ocre + padding-right: 0.1em + +.anchor:hover + text-decoration: none diff --git a/source/assets/stylesheets/application.css.sass b/source/assets/stylesheets/application.css.sass index 6fe7aba..6daa2b5 100644 --- a/source/assets/stylesheets/application.css.sass +++ b/source/assets/stylesheets/application.css.sass @@ -1,71 +1,47 @@ -$base-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif +$base-font-family: 'Muli', "Helvetica Neue", Helvetica, Arial, sans-serif $source-code-font-family: "Source Code Pro", monospace $color-black: #342828 +$color-white: #FFFFFF $color-ocre: #E05735 -$color-gold: #EFA33C +$color-gold: #faa930 +$color-bark: #3F2B2D $color-sand: #F2DDBC $color-light-sand: lighten($color-sand, 10%) +@import "layout" +@import "anchors" +@import "sections" + html font: 16px/1.4 $base-font-family color: #342828 - background-color: #F2DDBC + background-color: $color-sand a color: $color-ocre - font-weight: bold text-decoration: none a:hover text-decoration: underline -.toc - position: fixed - z-index: 9999 - top: 10% - left: 0 - - ul - list-style-position: inside - list-style-type: decimal-leading-zero - padding: 0 0 0 1em - li - padding-left: 1em - line-height: 2 - a - padding: 0 1em - line-height: 2 - display: none - - span - display: none - - li:hover - color: $color-sand - background: $color-black - li:hover a - color: $color-sand - font-weight: bold - background-color: $color-black - display: inline-block - h1 color: $color-ocre - font-size: 4.7em + font-size: 3.2em font-weight: bold font-family: $base-font-family margin-bottom: 0 line-height: 1 text-transform: lowercase + width: 50% h2 - font-size: 1.4em + font-size: 1.2em margin-top: 0.2em margin-bottom: 2em h1, h2 - text-align: center + text-align: left h3 font-size: 1.3em @@ -77,56 +53,11 @@ h3 h3:hover .anchor, h3:focus .anchor display: block -.anchor - display: none - font-style: normal - font-weight: normal - position: absolute - right: 100% - top: 0 - -.anchor::before - content: '¶' - -.anchor:hover - text-decoration: none - h3 ~ p margin-top: 0 -article - margin: 0 auto - width: 640px - -article p - font-size: 1.3em - -article code - border-radius: 0.315em - border: 1px solid #ccc - padding: 0 0.3em 0.040em - font-size: 0.9em - -article img - margin: 0 auto - max-width: 100% - text-align: center - display: block - box-shadow: rgba(0, 0, 0, 0.37) 0px 0px 6px - border-radius: 7px - padding: 0.4em 0.9em - -article ul - font-size: 1.1em - line-height: 1.5 - list-style-type: square - padding-left: 1em - -footer - font-size: .7em - border-top: 1px solid #e9e6e1 - margin-top: 1em - margin-bottom: 2em +h1, h2, h3 + margin-top: 0 padding-top: 1em .license @@ -138,18 +69,23 @@ footer .about, .license margin-top: 0 -.changelog - border: 1px solid #aaa - margin: 0 0.5em - padding: 1em - overflow-x: auto - height: 20em - font-size: 0.9em +.locales, .mark + margin-bottom: -2em + margin-top: 2em + margin-right: 2em + +.mark + margin-left: 3em + float: left + +.locales + float: right .locales li + float: right + font-size: 0.7em display: inline list-style-type: none - padding-right: 20px white-space: nowrap pre, code diff --git a/source/assets/stylesheets/layout.sass b/source/assets/stylesheets/layout.sass new file mode 100644 index 0000000..7df30f1 --- /dev/null +++ b/source/assets/stylesheets/layout.sass @@ -0,0 +1,31 @@ +$break-small: em(480px) +$break-medium: em(800px) +$break-large: em(1024px) + +article + margin: 0 auto + width: 65em + +.main + background-color: $color-white + margin-bottom: 2em + + div + padding-left: 20% + padding-right: 20% + padding-bottom: 3em + +article p + font-size: 1.3em + +article code + border-radius: 0.315em + border: 1px solid #ccc + padding: 0 0.3em 0.040em + font-size: 0.9em + +article ul + font-size: 1.1em + line-height: 1.5 + list-style-type: square + padding-left: 1em diff --git a/source/assets/stylesheets/sections.sass b/source/assets/stylesheets/sections.sass new file mode 100644 index 0000000..1fc8ff0 --- /dev/null +++ b/source/assets/stylesheets/sections.sass @@ -0,0 +1,151 @@ +div.header + padding-top: 6em + padding-bottom: 1em + background-color: $color-ocre + background-image: image-url("bg-hero@2x.png") + background-size: 100% + + h1 + color: $color-sand + + h2 + font-weight: normal + + .title + width: 80% + margin: 0 auto + + .changelog + margin: 1em 0.5em + padding: 1em + overflow-x: auto + height: 20em + font-size: 0.8em + margin-bottom: -16em + background-color: $color-white + box-shadow: 0px 4px 12px 0px hsla(0, 0%, 0%, 0.2) + +div.answers + margin-top: 12em + padding-left: 25% + padding-right: 25% + background-color: $color-white + + h3 + font-size: 1.7em + color: $color-ocre + + a + color: $color-gold + + p + font-size: 1em + +.good-practices + background-color: $color-gold + background-image: image-url("bg-img1@2x.png") + background-position: bottom left + background-repeat: no-repeat + background-size: 100% + + h3 + font-size: 1.6em + font-weight: bold + width: 50% + + h4 + padding-left: 13em + + ul + font-size: 1em + padding-left: 14em + + a + color: $color-white + text-decoration: underline + +div.bad-practices + color: $color-white + background-color: $color-bark + background-image: image-url("bg-img2@2x.png") + background-position: bottom left + background-repeat: no-repeat + background-size: 100% + + a + color: $color-gold + text-decoration: underline + + h3 + padding-top: 3em + font-size: 1.7em + color: $color-gold + float: left + width: 35% + + h4, p + padding-left: 12em + p + clear: left + font-size: 1em + +div.effort + padding-left: 25% + padding-right: 25% + background-color: $color-white + + h3 + font-size: 1.6em + font-weight: bold + color: $color-ocre + +div.frequently-asked-questions + padding-left: 25% + padding-right: 25% + background-color: $color-white + + h2 + color: $color-ocre + + h4 + cursor: pointer + border-bottom: 1px solid black + padding: 0.4em 1.1em + + &:after + content: "⌄" + text-align: right + float: right + font-size: 2.8em + line-height: 0.4 + margin-right: -0.3em + + + &.is-visible:after + content: "-" + + h4 ~ p + display: none + font-size: 0.9em + + h4 ~ p.is-visible + display: inherit + +.footer + font-size: .6em + font-weight: normal + border-top: 1px solid #e9e6e1 + padding-top: 1em + padding-left: 2em + padding-right: 2em + + background-color: $color-ocre + color: $color-white + + a + color: $color-black + + &:after + content: "" + display: table + clear: both diff --git a/source/assets/stylesheets/table-of-contents.sass b/source/assets/stylesheets/table-of-contents.sass new file mode 100644 index 0000000..a305890 --- /dev/null +++ b/source/assets/stylesheets/table-of-contents.sass @@ -0,0 +1,29 @@ +.toc + position: fixed + z-index: 9999 + top: 10% + left: 0 + + ul + list-style-position: inside + list-style-type: decimal-leading-zero + padding: 0 0 0 1em + li + padding-left: 1em + line-height: 2 + a + padding: 0 1em + line-height: 2 + display: none + + span + display: none + + li:hover + color: $color-sand + background: $color-black + li:hover a + color: $color-sand + font-weight: bold + background-color: $color-black + display: inline-block diff --git a/source/layouts/layout.html.haml b/source/layouts/layout.html.haml index 586dd6d..075e388 100644 --- a/source/layouts/layout.html.haml +++ b/source/layouts/layout.html.haml @@ -1,41 +1,42 @@ !!! 5 %html - %head{lang: current_page.data.language} - %meta{charset: 'utf-8'} - %meta{content: 'IE=edge', 'http-equiv' => 'X-UA-Compatible'} - %meta{name: 'viewport', content: 'width=device-width, initial-scale=1.0'} - %meta{name: 'description', content: current_page.data.description} + %head{ lang: current_page.data.language } + %meta{ charset: 'utf-8' } + %meta{ content: 'IE=edge', 'http-equiv' => 'X-UA-Compatible' } + %meta{ name: 'viewport', content: 'width=device-width, initial-scale=1.0' } + %meta{ name: 'description', content: current_page.data.description } -# Open Graph - %meta{property: 'og:article:publisher', content: config.publisher_url} - %meta{property: 'og:title', content: current_page.data.title} - %meta{property: 'og:type', content: 'article'} - %meta{property: 'og:url', content: path_to_url(current_page.url)} - %meta{property: 'og:description', content: current_page.data.description} + %meta{ property: 'og:article:publisher', content: config.publisher_url } + %meta{ property: 'og:title', content: current_page.data.title } + %meta{ property: 'og:type', content: 'article' } + %meta{ property: 'og:url', content: path_to_url(current_page.url) } + %meta{ property: 'og:description', content: current_page.data.description } = yield_content :og -# Icons - %link{rel: 'canonical', href: path_to_url(current_page.url)} + %link{ rel: 'canonical', href: path_to_url(current_page.url) } %title= current_page.data.title + + %link{ rel: "stylesheet", href: "https://fonts.googleapis.com/css?family=Muli:400,700" } = stylesheet_link_tag '//fonts.googleapis.com/css?family=Source+Code+Pro:400,700' = stylesheet_link_tag 'application' - - :javascript - try{Typekit.load();}catch(e){} + = javascript_include_tag 'all' %body %article - %header{role: "banner"} - %nav.locales{role: "navigation"} - %ul + %header{ role: "banner" } + = image_tag "keep-a-changelog-mark.svg", width: 100, class: "mark" + %nav.locales{ role: "navigation" } + %select - $languages.each do |language| - %li= link_to "#{language.last[:name]}", "/#{language.first}/", - { rel: "alternate", lang: "#{language}", hreflang: "#{language}" } + - selected = current_page.metadata[:page][:language] == language.first + %option{ selected: selected, label: language.last[:name], value: language.first } - .main{role: "main"} + .main{ role: "main" } - if current_page.metadata[:page][:version] != $last_version - code = current_page.metadata[:page][:language] - versions = Dir.entries("source/#{code}") - %w[. ..] @@ -55,14 +56,14 @@ = yield - %footer.clearfix{role: "banner"} - %p.license - This project is - #{link_to "MIT Licensed", "http://choosealicense.com/licenses/mit/"}. - %p.about - #{link_to "Typed", "https://github.com/olivierlacan/keep-a-changelog/"} - with trepidation by - #{link_to "Olivier Lacan", "http://olivierlacan.com/"}. + %footer.footer.clearfix{ role: "banner" } + %p.license + This project is + #{link_to "MIT Licensed", "http://choosealicense.com/licenses/mit/"}. + %p.about + #{link_to "Typed", "https://github.com/olivierlacan/keep-a-changelog/"} + with trepidation by + #{link_to "Olivier Lacan", "http://olivierlacan.com/"}. - unless config.gauges_id.blank? :javascript From 0dccc2b12176a92158d591cb0e5ee36e7059a6fb Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Wed, 17 May 2017 11:07:11 -0600 Subject: [PATCH 35/37] Add logo and Tyler to footer --- source/layouts/layout.html.haml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/layouts/layout.html.haml b/source/layouts/layout.html.haml index f7264a2..d751ef7 100644 --- a/source/layouts/layout.html.haml +++ b/source/layouts/layout.html.haml @@ -56,6 +56,20 @@ = yield + %footer.footer.clearfix{ role: "banner" } + = image_tag "keep-a-changelog-mark.svg", width: 30, class: "mark" + + %p.about + This project is + = link_to "MIT Licensed", "http://choosealicense.com/licenses/mit/" + \ // + = link_to "Created & maintained", "https://github.com/olivierlacan/keep-a-changelog/" + by + = link_to "Olivier Lacan", "http://olivierlacan.com/" + \ // + Designed by + = link_to "Tyler Fortune", "http://tylerfortune.me/" + - unless config.gauges_id.blank? :javascript var _gauges = _gauges || []; From a0a8e31dfc219dbea2a776687f27481ddcc475e0 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Wed, 17 May 2017 11:07:37 -0600 Subject: [PATCH 36/37] Add GitHub releases section in FAQ --- source/en/1.0.0/index.html.haml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/source/en/1.0.0/index.html.haml b/source/en/1.0.0/index.html.haml index 7640683..b90616a 100644 --- a/source/en/1.0.0/index.html.haml +++ b/source/en/1.0.0/index.html.haml @@ -212,6 +212,28 @@ version: 1.0.0 doesn't matter that much, why make it harder for your end users to consistently find notable changes? + %h4#github-releases + %a.anchor{ href: "#github-releases", aria_hidden: "true" } + What about GitHub Releases? + + %p + It's a great initiative. #{link_to "Releases", ghr} can be used to + turn simple git tags (for example a tag named v1.0.0) + into rich release notes by manually adding release notes or it can + pull annotated git tag messages and turn them into notes. + + %p + GitHub Releases create a non-portable changelog that can only be + displayed to users within the context of GitHub. It's possible to + make them look very much like the Keep a Changelog format, but it + tends to be a bit more involved. + + %p + The current version of GitHub releases is also arguably not very + discoverable by end-users, unlike the typical uppercase files + (README, CONTRIBUTING, etc.). Another + minor issue is that the interface doesn't currently offer links to + commit logs between each release. %h4#automatic %a.anchor{ href: "#automatic", aria_hidden: "true" } From 57a3020b78ed67cb77f537e685ac5caaff478db8 Mon Sep 17 00:00:00 2001 From: Olivier Lacan Date: Wed, 24 May 2017 11:38:52 -0400 Subject: [PATCH 37/37] Sweating the details with styles --- source/assets/stylesheets/anchors.sass | 3 +- .../assets/stylesheets/application.css.sass | 30 ++++---- source/assets/stylesheets/layout.sass | 12 ++++ source/assets/stylesheets/sections.sass | 71 +++++++++++++------ source/en/1.0.0/index.html.haml | 63 ++++++++-------- 5 files changed, 116 insertions(+), 63 deletions(-) diff --git a/source/assets/stylesheets/anchors.sass b/source/assets/stylesheets/anchors.sass index 1d05765..bde83e2 100644 --- a/source/assets/stylesheets/anchors.sass +++ b/source/assets/stylesheets/anchors.sass @@ -13,4 +13,5 @@ padding-right: 0.1em .anchor:hover - text-decoration: none + a + text-decoration: none diff --git a/source/assets/stylesheets/application.css.sass b/source/assets/stylesheets/application.css.sass index 6daa2b5..92146fa 100644 --- a/source/assets/stylesheets/application.css.sass +++ b/source/assets/stylesheets/application.css.sass @@ -6,7 +6,7 @@ $color-white: #FFFFFF $color-ocre: #E05735 $color-gold: #faa930 $color-bark: #3F2B2D -$color-sand: #F2DDBC +$color-sand: #FEECD3 $color-light-sand: lighten($color-sand, 10%) @import "layout" @@ -60,23 +60,27 @@ h1, h2, h3 margin-top: 0 padding-top: 1em -.license - float: left +.about + text-align: center .about - float: right - -.about, .license margin-top: 0 -.locales, .mark - margin-bottom: -2em - margin-top: 2em - margin-right: 2em +header + .locales, .mark + margin-bottom: -2em + margin-top: 2em + margin-right: 2em -.mark - margin-left: 3em - float: left + .mark + margin-left: 3em + float: left + +.footer + line-height: 2.2 + + .mark + float: left .locales float: right diff --git a/source/assets/stylesheets/layout.sass b/source/assets/stylesheets/layout.sass index 7df30f1..e0be2b5 100644 --- a/source/assets/stylesheets/layout.sass +++ b/source/assets/stylesheets/layout.sass @@ -15,6 +15,18 @@ article padding-right: 20% padding-bottom: 3em + aside + background-color: lighten(desaturate($color-bark, 5%), 10%) + margin-bottom: -3em + margin-left: -35% + margin-right: -35% + margin-top: 3em + padding: 2em 20% + text-align: center + + aside & + background-position: top + article p font-size: 1.3em diff --git a/source/assets/stylesheets/sections.sass b/source/assets/stylesheets/sections.sass index 1fc8ff0..517179e 100644 --- a/source/assets/stylesheets/sections.sass +++ b/source/assets/stylesheets/sections.sass @@ -1,6 +1,6 @@ div.header - padding-top: 6em - padding-bottom: 1em + padding-top: 5em + padding-bottom: 0.1em background-color: $color-ocre background-image: image-url("bg-hero@2x.png") background-size: 100% @@ -11,19 +11,25 @@ div.header h2 font-weight: normal + a + color: $color-black + .title width: 80% margin: 0 auto + margin-bottom: -2em .changelog - margin: 1em 0.5em - padding: 1em - overflow-x: auto - height: 20em - font-size: 0.8em - margin-bottom: -16em background-color: $color-white box-shadow: 0px 4px 12px 0px hsla(0, 0%, 0%, 0.2) + font-size: 0.8em + height: 20em + margin-bottom: -14em + margin-left: 0.5em + margin-right: 0.5em + margin-top: 1em + overflow-x: auto + padding: 1em div.answers margin-top: 12em @@ -47,6 +53,10 @@ div.answers background-position: bottom left background-repeat: no-repeat background-size: 100% + padding-top: 2em + + a.anchor + color: $color-black h3 font-size: 1.6em @@ -54,15 +64,16 @@ div.answers width: 50% h4 - padding-left: 13em + padding-left: 15em ul font-size: 1em - padding-left: 14em + padding-left: 16em - a - color: $color-white - text-decoration: underline + p + a + color: $color-white + text-decoration: underline div.bad-practices color: $color-white @@ -71,13 +82,23 @@ div.bad-practices background-position: bottom left background-repeat: no-repeat background-size: 100% + padding-top: 3em - a - color: $color-gold - text-decoration: underline + code + color: $color-black + background-color: desaturate(lighten($color-bark, 50%), 10%) + border: none + + p, aside + a + color: $color-gold + text-decoration: underline + + aside + a + text-decoration: none h3 - padding-top: 3em font-size: 1.7em color: $color-gold float: left @@ -90,6 +111,7 @@ div.bad-practices font-size: 1em div.effort + padding-top: 2em padding-left: 25% padding-right: 25% background-color: $color-white @@ -100,6 +122,7 @@ div.effort color: $color-ocre div.frequently-asked-questions + padding-top: 2em padding-left: 25% padding-right: 25% background-color: $color-white @@ -107,10 +130,15 @@ div.frequently-asked-questions h2 color: $color-ocre + h3 + color: $color-ocre + margin-bottom: 1.5em + font-size: 1.7em + h4 cursor: pointer - border-bottom: 1px solid black - padding: 0.4em 1.1em + border-bottom: 1px solid transparentize($color-bark, 0.8) + padding: 0 1.1em 1.3em 0 &:after content: "⌄" @@ -140,10 +168,11 @@ div.frequently-asked-questions padding-right: 2em background-color: $color-ocre - color: $color-white + color: $color-sand a - color: $color-black + color: $color-white + text-decoration: underline &:after content: "" diff --git a/source/en/1.0.0/index.html.haml b/source/en/1.0.0/index.html.haml index b90616a..05ad279 100644 --- a/source/en/1.0.0/index.html.haml +++ b/source/en/1.0.0/index.html.haml @@ -14,14 +14,16 @@ version: 1.0.0 - thechangelog = "http://5by5.tv/changelog/127" - vandamme = "https://github.com/tech-angels/vandamme/" - iso = "http://www.iso.org/iso/home/standards/iso8601.htm" +- ghr = "https://help.github.com/articles/creating-releases/" .header .title %h1 Keep a Changelog - %h2 Don’t let your friends dump git logs into changelogs. - Version #{current_page.metadata[:page][:version]} + = link_to changelog do + Version + %strong= current_page.metadata[:page][:version] %pre.changelog= File.read("CHANGELOG.md") @@ -75,36 +77,40 @@ version: 1.0.0 %li The release date of each versions is displayed. %li - Mention if the project follows - = link_to "Semantic Versioning.", semver + Mention whether you follow #{link_to "Semantic Versioning", semver}. %a.anchor{ href: "#types", aria_hidden: "true" } %h4#types Types of changes %ul %li - Added for new features. + %code Added + for new features. %li - Changed for changes in existing functionality. + %code Changed + for changes in existing functionality. %li - Deprecated for once-stable features removed in - upcoming releases. + %code Deprecated + for soon-to-be removed features. %li - Removed for deprecated features removed in this - release. + %code Removed + for now removed features. %li - Fixed for any bug fixes. + %code Fixed + for any bug fixes. %li - Security to invite users to upgrade in case of - vulnerabilities. + %code Security + in case of vulnerabilities. .effort - %a.anchor{ href: "#effort", aria_hidden: "true" } - %h3#effort How can I reduce the effort required to maintain a changelog? + + %h3#effort + %a.anchor{ href: "#effort", aria_hidden: "true" } + How can I reduce the effort required to maintain a changelog? %p - Keep an Unreleased section at the top to - track upcoming changes. + Keep an Unreleased section at the top to track upcoming + changes. %p This serves two purposes: @@ -161,16 +167,16 @@ version: 1.0.0 Confusing Dates %p - In the U.S., people put the month first ("06-02-2012" for June 2nd, - 2012, which makes *no* sense), while many people in the rest of the - world write a robotic-looking "2 June 2012", yet pronounce it - differently. "2012-06-02" works logically from largest to smallest, - doesn't overlap in ambiguous ways with other date formats, and is an - [ISO standard][iso]. Thus, it is the recommended date format for - changelogs. + In the U.S., people put the month first (06-02-2012 for + June 2nd, 2012), while many people in the rest of the world write a + robotic-looking 2 June 2012, yet pronounce it + differently. 2012-06-02 works logically from largest to + smallest, doesn't overlap in ambiguous ways with other date formats, + and is an #{link_to "ISO standard", iso}. Thus, it is the + recommended date format for changelogs. - %p - There’s more. Help me collect those unicorn tears by + %aside + There’s more. Help me collect these antipatterns by = link_to "opening an issue", "#issues" or a pull request. @@ -298,10 +304,11 @@ version: 1.0.0 This is because I want our community to reach a consensus. I believe the discussion is as important as the end result. - %p So please #{link_to "pitch in", gh}. + %p + So please #{link_to "pitch in", gh}. .press - %h3 Press + %h3 Conversations %p I went on #{link_to "The Changelog podcast", thechangelog} about why maintainers and contributors should care, and the