about summary refs log tree commit diff
path: root/nixpkgs/nixos/doc/manual/development/releases.xml
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/doc/manual/development/releases.xml')
-rwxr-xr-xnixpkgs/nixos/doc/manual/development/releases.xml293
1 files changed, 293 insertions, 0 deletions
diff --git a/nixpkgs/nixos/doc/manual/development/releases.xml b/nixpkgs/nixos/doc/manual/development/releases.xml
new file mode 100755
index 000000000000..1cdec64f69b0
--- /dev/null
+++ b/nixpkgs/nixos/doc/manual/development/releases.xml
@@ -0,0 +1,293 @@
+<chapter xmlns="http://docbook.org/ns/docbook"
+        xmlns:xlink="http://www.w3.org/1999/xlink"
+        xmlns:xi="http://www.w3.org/2001/XInclude"
+        version="5.0"
+        xml:id="ch-releases">
+ <title>Releases</title>
+ <section xml:id="release-process">
+  <title>Release process</title>
+
+  <para>
+   Going through an example of releasing NixOS 17.09:
+  </para>
+
+  <section xml:id="one-month-before-the-beta">
+   <title>One month before the beta</title>
+
+   <itemizedlist spacing="compact">
+    <listitem>
+     <para>
+      Send an email to the nix-devel mailinglist as a warning about upcoming
+      beta "feature freeze" in a month.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      Discuss with Eelco Dolstra and the community (via IRC, ML) about what
+      will reach the deadline. Any issue or Pull Request targeting the release
+      should be included in the release milestone.
+     </para>
+    </listitem>
+   </itemizedlist>
+  </section>
+
+  <section xml:id="at-beta-release-time">
+   <title>At beta release time</title>
+
+   <itemizedlist spacing="compact">
+    <listitem>
+     <para>
+      <link xlink:href="https://github.com/NixOS/nixpkgs/issues/13559">Create
+      an issue for tracking Zero Hydra Failures progress. ZHF is an effort to
+      get build failures down to zero.</link>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <literal>git tag -a -s -m &quot;Release 17.09-beta&quot; 17.09-beta
+      &amp;&amp; git push --tags</literal>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      From the master branch run <literal>git checkout -B
+      release-17.09</literal>.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <link xlink:href="https://github.com/NixOS/nixos-org-configurations/pull/18">
+      Make sure a channel is created at http://nixos.org/channels/. </link>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <link xlink:href="https://github.com/NixOS/nixpkgs/compare/bdf161ed8d21...6b63c4616790">
+      Bump the <literal>system.defaultChannel</literal> attribute in
+      <literal>nixos/modules/misc/version.nix</literal> </link>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <link xlink:href="https://github.com/NixOS/nixpkgs/commit/d6b08acd1ccac0d9d502c4b635e00b04d3387f06">
+      Update <literal>versionSuffix</literal> in
+      <literal>nixos/release.nix</literal></link>, use <literal>git log
+      --format=%an|wc -l</literal> to get the commit count
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <literal>echo -n &quot;18.03&quot; &gt; .version</literal> on master.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <link xlink:href="https://github.com/NixOS/nixpkgs/commit/b8a4095003e27659092892a4708bb3698231a842">
+      Pick a new name for the unstable branch. </link>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      Create a new release notes file for the upcoming release + 1, in this
+      case <literal>rl-1803.xml</literal>.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      Create two Hydra jobsets: release-17.09 and release-17.09-small with
+      <literal>stableBranch</literal> set to false.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      Remove attributes that we know we will not be able to support,
+      especially if there is a stable alternative. E.g. Check that our
+      Linux kernels'
+      <link xlink:href="https://www.kernel.org/category/releases.html">
+      projected end-of-life</link> are after our release projected
+      end-of-life
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      Edit changelog at
+      <literal>nixos/doc/manual/release-notes/rl-1709.xml</literal> (double
+      check desktop versions are noted)
+     </para>
+     <itemizedlist spacing="compact">
+      <listitem>
+       <para>
+        Get all new NixOS modules <literal>git diff
+        release-17.03..release-17.09 nixos/modules/module-list.nix|grep
+        ^+</literal>
+       </para>
+      </listitem>
+      <listitem>
+       <para>
+        Note systemd, kernel, glibc and Nix upgrades.
+       </para>
+      </listitem>
+     </itemizedlist>
+    </listitem>
+   </itemizedlist>
+  </section>
+
+  <section xml:id="during-beta">
+   <title>During Beta</title>
+
+   <itemizedlist spacing="compact">
+    <listitem>
+     <para>
+      Monitor the master branch for bugfixes and minor updates and cherry-pick
+      them to the release branch.
+     </para>
+    </listitem>
+   </itemizedlist>
+  </section>
+
+  <section xml:id="before-the-final-release">
+   <title>Before the final release</title>
+
+   <itemizedlist spacing="compact">
+    <listitem>
+     <para>
+      Re-check that the release notes are complete.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      Release Nix (currently only Eelco Dolstra can do that).
+      <link xlink:href="https://github.com/NixOS/nixpkgs/commit/53710c752a85f00658882531bc90a23a3d1287e4">
+      Make sure fallback is updated. </link>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <link xlink:href="https://github.com/NixOS/nixpkgs/commit/40fd9ae3ac8048758abdcfc7d28a78b5f22fe97e">
+      Update README.md with new stable NixOS version information. </link>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      Change <literal>stableBranch</literal> to true and wait for channel to
+      update.
+     </para>
+    </listitem>
+   </itemizedlist>
+  </section>
+
+  <section xml:id="at-final-release-time">
+   <title>At final release time</title>
+
+   <itemizedlist spacing="compact">
+    <listitem>
+     <para>
+      <literal>git tag -s -a -m &quot;Release 15.09&quot; 15.09</literal>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      Update "Chapter 4. Upgrading NixOS" section of the manual to match 
+      new stable release version.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      Update http://nixos.org/nixos/download.html and
+      http://nixos.org/nixos/manual in
+      https://github.com/NixOS/nixos-org-configurations
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      Get number of commits for the release: <literal>git log
+      release-14.04..release-14.12 --format=%an|wc -l</literal>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      Commits by contributor: <literal>git log release-14.04..release-14.12
+      --format=%an|sort|uniq -c|sort -rn</literal>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      Send an email to nix-dev to announce the release with above information.
+      Best to check how previous email was formulated to see what needs to be
+      included.
+     </para>
+    </listitem>
+   </itemizedlist>
+  </section>
+ </section>
+ <section xml:id="release-managers">
+  <title>Release Management Team</title>
+  <para>
+   For each release there are two release managers. After each release the
+   release manager having managed two releases steps down and the release
+   management team of the last release appoints a new release manager.
+  </para>
+  <para>
+   This makes sure a release management team always consists of one release
+   manager who already has managed one release and one release manager being
+   introduced to their role, making it easier to pass on knowledge and
+   experience.
+  </para>
+  <para>
+   A release manager's role and responsibilities are:
+  </para>
+  <itemizedlist>
+   <listitem><para>manage the release process</para></listitem>
+   <listitem><para>start discussions about features and changes for a given release</para></listitem>
+   <listitem><para>create a roadmap</para></listitem>
+   <listitem><para>release in cooperation with Eelco Dolstra</para></listitem>
+   <listitem><para>decide which bug fixes, features, etc... get backported after a release</para></listitem>
+  </itemizedlist>
+ </section>
+ <section xml:id="release-schedule">
+  <title>Release schedule</title>
+
+  <informaltable>
+   <tgroup cols="2">
+    <colspec align="left" />
+    <colspec align="left" />
+    <thead>
+     <row>
+      <entry>
+            Date
+          </entry>
+      <entry>
+            Event
+          </entry>
+     </row>
+    </thead>
+    <tbody>
+     <row>
+      <entry>
+            2016-07-25
+          </entry>
+      <entry>
+            Send email to nix-dev about upcoming branch-off
+          </entry>
+     </row>
+     <row>
+      <entry>
+            2016-09-01
+          </entry>
+      <entry><literal>release-16.09</literal> branch and corresponding jobsets are created,
+            change freeze
+          </entry>
+     </row>
+     <row>
+      <entry>
+            2016-09-30
+          </entry>
+      <entry>
+            NixOS 16.09 released
+          </entry>
+     </row>
+    </tbody>
+   </tgroup>
+  </informaltable>
+ </section>
+</chapter>