release-howto.txt 7.92 KB
Newer Older
1 2 3 4 5

                        How to do a GIMP release
                      ----------------------------
                  a check-list for doing a GIMP release

6
 ( ) Announce a string freeze on the GIMP Developer mailing list.
7

Jehan's avatar
Jehan committed
8
     Mention that a release is planned, what branch will be frozen, and
9 10 11 12
     how long the string freeze is going to last. Plan for a couple of
     weeks at least. No translatable strings must be touched during
     this time. An example announcement message is:
     https://mail.gnome.org/archives/gimp-developer-list/2016-October/msg00004.html
13

14 15 16 17 18 19
 ( ) Announce the planned release on the GNOME I18N mailing list.

     Let them know about the planned release, what branch it's based
     on, and how many changes to expect. An example message is:
     https://mail.gnome.org/archives/gnome-i18n/2016-October/msg00035.html

20 21 22 23
 ( ) Also notify the maintainers of the official builds for Windows
     (irc:ender/@jernejs), macOS (irc:Samm/@samm-git) and flatpak
     (irc:Jehan/@Jehan) of the upcoming release so they have some time
     to sort out issues with their builds.
24

25
 ( ) Make sure we have a <release> tag inside
26 27 28
     desktop/org.gimp.GIMP.appdata.xml.in.in for this upcoming
     version, with type="development" for development or RC releases
     (set type="stable", or just no type for stable releases).
29

30
     Some installers may feature more prominently software with recent
31 32
     releases if the appropriate tag was set (e.g. GNOME Software has a
     "Recent Releases" category).
33

34 35
     If a description is added, it may be featured in installers and
     will be translatable (use <_p> or <_li> tags to make the strings
36 37
     localizable). So it is better to prepare the description text as
     early as possible.
38

39 40 41 42 43 44
 ( ) Wait until the date specified in the announcements, use this time
     to get bug fixes applied which don't modify strings.

 ( ) Check that you have working ssh access to pentagon.gnome.org and
     that you are a member of the gimpadmins group. If not, ask
     Michael Natterer or Michael Schumacher for assistance.
45

46
 ( ) Check that download.gimp.org has enough space to upload the
47 48
     release and to place it into the download area. If not, make
     place or ask Michael Natterer or Michael Schumacher to do that.
49

50
 ( ) Check that you have admin access to the GIMP product on
51 52
     bugzilla.gimp.org and commit access to the gimp-web module, or
     that someone can do the changes for you.
53

54 55 56 57
 ( ) Check if NEWS, authors.xml (and the generated AUTHORS), README or
     INSTALL need to be updated, as well as any release notes on
     gimp.org. Don't forget to add any "Index of new symbols in GIMP
     2.x" to the gtk-doc generated devel-docs.
58

59
 ( ) Does the splash screen need to be changed?
60

61 62 63 64 65
     Splash requirements:

     [ ] Accepted license: a libre license, such as CC 0, CC by, CC
         by-sa or Free Art.
     [ ] XCF file must be provided.
66 67
     [ ] Minimum size: full HD (splash images will be scaled down to 1/2
         of the main display when too big; but they won't be scaled up.
68 69
         Therefore anything smaller than fullHD will look tiny and
         unsuited on a 4K or higher res display).
70 71
     [ ] Loading text will appear in bottom quarter, so image contents
         must be adapted.
72

73 74 75 76
 ( ) If ever the actual release date evolved and is different from the
     planned date, update the "date" in the <release> tag of the appdata
     in: desktop/org.gimp.GIMP.appdata.xml.in

77 78 79
 ( ) Bump the version number to an even micro in configure.ac and
     commit this change. It should be the version number of the
     release you are about to make. Releases always have even micro
80 81 82 83 84
     numbers.

     [ ] In configure.ac, modify gimp_micro_version accordingly.

     [ ] In configure.ac, modify gimp_interface_age accordingly.
85

86
 ( ) Make dist tarballs:
87

88 89
     [ ] Start with a checkout of the GIMP tree. Make sure the
         checkout is up to date, clean from uncommitted changes.
90

91 92
     [ ] Run 'git clean -x -d -f' (Warning: you will lose any files
         that are not added).
93

94 95 96 97
     [ ] Run 'git diff'. This should not generate any output, or your
         tree has local modifications.

     [ ] Run ./autogen.sh --enable-gtk-doc
98

99
     [ ] Run 'make' to do a complete build of the source tree.
100

101 102
     [ ] Run 'make distcheck'. Avoid passing make -j since that can
         cause mysterious fails.
103

104
     [ ] If changes to generated files are made by the above command
105 106
         (run 'git diff' to find out), commit+push them and repeat
         from the beginning of this sub-section.
107

108 109
     [ ] If there are problems reported by 'make distcheck', fix
         them. If you made changes in the tree to get 'make distcheck'
110 111
         running, commit+push them and repeat from the beginning of
         this sub-section.
112

113 114
     [ ] If 'make distcheck' passed and created tarballs, go to the
         next item.
115

116 117 118 119
 ( ) A successful run of the 'make distcheck' would create the final
     dist tarballs. It will include a ChangeLog generated from the
     'git log'. Note that we don't bother with any release commit,
     that's what tags are for (see below).
120

121 122 123
 ( ) Tag the release (don't forget to push the tag)
       git tag -s GIMP_2_x_y
       git push origin GIMP_2_x_y
124

125 126 127
 ( ) Bump the version number (past the tagged version) in configure.ac
     to the next odd micro and commit this change. GIT versions always
     have odd micro numbers.
128

129 130 131 132
     [ ] In configure.ac, modify gimp_micro_version accordingly.

     [ ] In configure.ac, modify gimp_interface_age accordingly.

133
 ( ) Publish dist tarballs:
134

135 136
     [ ] Use `sha256sum` and `sha512sum` to create checksums of the
         tarball (tar.bz2).
137

138 139
     [ ] Upload the tarball (tar.bz2) to your home directory on
         pentagon.gnome.org.
140

141 142 143 144 145 146 147 148 149 150
     [ ] Copy the tarball to its final destination in the download area
         (/srv/ftp/pub/gimp/v2.x). Really use "cp" not "mv" or SELinux
         will make the uploaded file unreadable to the web server unless
         some obscure status bit is toggled.

     [ ] Update the `SHA256SUMS` and `SHA512SUMS` files present in the
         same download area by adding the computed sha256 and sha512
         sums.
         Note: do not add new MD5 sums anymore. They are considered
         unsafe.
151 152 153 154 155 156 157 158

     [ ] Update the 0.0_LATEST-IS- file in the corresponding directory
         on the download server.

     [ ] Change permissions of the new files to make them writable by
         the 'gimpadmins' group. This will allow other members of this
         group to correct mistakes and to update the 0.0_LATEST-IS-
         file next time.
159 160 161

 ( ) Add the new version to the GIMP product on bugzilla.gimp.org.

162 163
 ( ) Check out or update the 'gimp-web' module, check out its testing
     branch.
164

165
     [ ] Update the file 'GIMP_VERSIONS' adding the version, release
166 167 168
         date, tarball name and its SHA256 and SHA512 hashes under
         "STABLE".
         Note: do not add new MD5 sums in 'GIMP_VERSIONS' as well.
169 170 171

     [ ] Create a news items for the release in content/news/

172 173 174 175
     [ ] Run `make authors.md` in GIMP repository. This will generate
         the file `authors.md`. Move it to ./content/about/authors.md on
         the 'gimp-web' module and commit it.

176
     [ ] Commit and push the changes, the web server should then
177 178
         update itself soon (it checks for updates every 5 minutes).
         Go to https://testing.gimp.org to verify the changes.
179

180 181
 ( ) Announce the release on gimp.org and send a release announcement
     to the gimp-user and gimp-developer mailing lists.
182 183 184 185 186

     [ ] Check out the gimp-web master branch and merge or cherry-pick
         the changes you did in the testing branch.

     [ ] Push the changes, the web server should then update itself
187 188
         soon (it checks for updates every 15 minutes).
         Go to https://www.gimp.org to verify the changes.
189 190 191 192

     [ ] Due to the tendency of news sites to front-run release
         articles even before actual announcements appear, publish
         everything as fast as possible.
193 194

 ( ) Grab a properly chilled beverage and enjoy yourself.