app: s/sprintf/g_snprintf/ in xcf_save_image()
[gimp.git] / devel-docs / release-howto.txt
blobeaf4234856293420b6bdfe967a92b8ef612a6182
2                         How to do a GIMP release
3                       ----------------------------
4                   a check-list for doing a GIMP release
6  ( ) Announce a string freeze on the GIMP Developer mailing list.
8      Mention that a release is planned, what branch will be frozen, and
9      how long the string freeze is going to last. Plan for a couple of
10      weeks at least. No translatable strings must be touched during
11      this time. An example announcement message is:
12      https://mail.gnome.org/archives/gimp-developer-list/2016-October/msg00004.html
14  ( ) Announce the planned release on the GNOME I18N mailing list.
16      Let them know about the planned release, what branch it's based
17      on, and how many changes to expect. An example message is:
18      https://mail.gnome.org/archives/gnome-i18n/2016-October/msg00035.html
20  ( ) Also notify the maintainers of the official builds for Windows,
21      macOS and flatpak of the upcoming release so they have some time to
22      sort out issues with their builds.
24  ( ) Make sure we have a <release> tag inside
25      desktop/org.gimp.GIMP.appdata.xml.in.in for this upcoming
26      version, with type="development" for development or RC releases
27      (set type="stable", or just no type for stable releases).
29      Some installers may feature more prominently software with recent
30      releases if the appropriate tag was set (e.g. GNOME Software has a
31      "Recent Releases" category).
33      If a description is added, it may be featured in installers and
34      will be translatable (use <_p> or <_li> tags to make the strings
35      localizable). So it is better to prepare the description text as
36      early as possible.
38  ( ) Wait until the date specified in the announcements, use this time
39      to get bug fixes applied which don't modify strings.
41  ( ) Check that you have working ssh access to pentagon.gnome.org and
42      that you are a member of the gimpadmins group. If not, ask
43      Michael Natterer or Michael Schumacher for assistance.
45  ( ) Check that download.gimp.org has enough space to upload the
46      release and to place it into the download area. If not, make
47      place or ask Michael Natterer or Michael Schumacher to do that.
49  ( ) Check that you have admin access to the GIMP product on
50      bugzilla.gimp.org and commit access to the gimp-web module, or
51      that someone can do the changes for you.
53  ( ) Check if NEWS, authors.xml (and the generated AUTHORS), README or
54      INSTALL need to be updated, as well as any release notes on
55      gimp.org. Don't forget to add any "Index of new symbols in GIMP
56      2.x" to the gtk-doc generated devel-docs.
58  ( ) Does the splash screen need to be changed?
60      Splash requirements:
62      [ ] Accepted license: a libre license, such as CC 0, CC by, CC
63          by-sa or Free Art.
64      [ ] XCF file must be provided.
65      [ ] Minimum size: full HD (splash images will be scaled down to 1/2
66          of the main display when too big; but they won't be scaled up.
67          Therefore anything smaller than fullHD will look tiny and
68          unsuited on a 4K or higher res display).
69      [ ] Loading text will appear in bottom quarter, so image contents
70          must be adapted.
72  ( ) If ever the actual release date evolved and is different from the
73      planned date, update the "date" in the <release> tag of the appdata
74      in: desktop/org.gimp.GIMP.appdata.xml.in
76  ( ) Bump the version number to an even micro in configure.ac and
77      commit this change. It should be the version number of the
78      release you are about to make. Releases always have even micro
79      numbers.
81      [ ] In configure.ac, modify gimp_micro_version accordingly.
83      [ ] In configure.ac, modify gimp_interface_age accordingly.
85  ( ) Make dist tarballs:
87      [ ] Start with a checkout of the GIMP tree. Make sure the
88          checkout is up to date, clean from uncommitted changes.
90      [ ] Run 'git clean -x -d -f' (Warning: you will lose any files
91          that are not added).
93      [ ] Run 'git diff'. This should not generate any output, or your
94          tree has local modifications.
96      [ ] Run ./autogen.sh --enable-gtk-doc
98      [ ] Run 'make' to do a complete build of the source tree.
100      [ ] Run 'make distcheck'. Avoid passing make -j since that can
101          cause mysterious fails.
103      [ ] If changes to generated files are made by the above command
104          (run 'git diff' to find out), commit+push them and repeat
105          from the beginning of this sub-section.
107      [ ] If there are problems reported by 'make distcheck', fix
108          them. If you made changes in the tree to get 'make distcheck'
109          running, commit+push them and repeat from the beginning of
110          this sub-section.
112      [ ] If 'make distcheck' passed and created tarballs, go to the
113          next item.
115  ( ) A successful run of the 'make distcheck' would create the final
116      dist tarballs. It will include a ChangeLog generated from the
117      'git log'. Note that we don't bother with any release commit,
118      that's what tags are for (see below).
120  ( ) Tag the release (don't forget to push the tag)
121        git tag -s GIMP_2_x_y
122        git push origin GIMP_2_x_y
124  ( ) Bump the version number (past the tagged version) in configure.ac
125      to the next odd micro and commit this change. GIT versions always
126      have odd micro numbers.
128      [ ] In configure.ac, modify gimp_micro_version accordingly.
130      [ ] In configure.ac, modify gimp_interface_age accordingly.
132  ( ) Publish dist tarballs:
134      [ ] Use `sha256sum` and `sha512sum` to create checksums of the
135          tarball (tar.bz2).
137      [ ] Upload the tarball (tar.bz2) to your home directory on
138          pentagon.gnome.org.
140      [ ] Copy the tarball to its final destination in the download area
141          (/srv/ftp/pub/gimp/v2.x). Really use "cp" not "mv" or SELinux
142          will make the uploaded file unreadable to the web server unless
143          some obscure status bit is toggled.
145      [ ] Update the `SHA256SUMS` and `SHA512SUMS` files present in the
146          same download area by adding the computed sha256 and sha512
147          sums.
148          Note: do not add new MD5 sums anymore. They are considered
149          unsafe.
151      [ ] Update the 0.0_LATEST-IS- file in the corresponding directory
152          on the download server.
154      [ ] Change permissions of the new files to make them writable by
155          the 'gimpadmins' group. This will allow other members of this
156          group to correct mistakes and to update the 0.0_LATEST-IS-
157          file next time.
159  ( ) Add the new version to the GIMP product on bugzilla.gimp.org.
161  ( ) Check out or update the 'gimp-web' module, check out its testing
162      branch.
164      [ ] Update the file 'GIMP_VERSIONS' adding the version, release
165          date, tarball name and its SHA256 and SHA512 hashes under
166          "STABLE".
167          Note: do not add new MD5 sums in 'GIMP_VERSIONS' as well.
169      [ ] Create a news items for the release in content/news/
171      [ ] Run `make authors.md` in GIMP repository. This will generate
172          the file `authors.md`. Move it to ./content/about/authors.md on
173          the 'gimp-web' module and commit it.
175      [ ] Commit and push the changes, the web server should then
176          update itself soon (it checks for updates every 5 minutes).
177          Go to https://testing.gimp.org to verify the changes.
179  ( ) Announce the release on gimp.org and send a release announcement
180      to the gimp-user and gimp-developer mailing lists.
182      [ ] Check out the gimp-web master branch and merge or cherry-pick
183          the changes you did in the testing branch.
185      [ ] Push the changes, the web server should then update itself
186          soon (it checks for updates every 15 minutes).
187          Go to https://www.gimp.org to verify the changes.
189      [ ] Due to the tendency of news sites to front-run release
190          articles even before actual announcements appear, publish
191          everything as fast as possible.
193  ( ) Grab a properly chilled beverage and enjoy yourself.