1# Contributing
2
3This is Open Source Software. We realized that we didn't pass the Patch Test
4
5## What to contribute
6
7Here's a few places to start:
8
9- Report any bugs you find.
10- No, seriously! Most of the bugs don't even get reported, or the reporter only writes "Doesn't work for me" and then vanishes.
11- ["help wanted" issues](https://github.com/majn/telegram-purple/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+-label%3A%22in-pipeline%22), especially automated testing
12- ["secret chat" issues](https://github.com/majn/telegram-purple/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+label%3A%22secret+chats%22+-label%3A%22in-pipeline%22+)
13- Portability (especially endianness) of tgl (external project)
14- [Issues of tgl](https://github.com/vysheng/tgl/issues) -- lots and lots of false or obsolete reports
15- Slim down the size of the generated files in `tgl/auto`, as this currently dominates the build time. Yuk!
16- Make sure that the libpurple-devs don't break libpurple any further.
17
18## How to contribute
19
20Write [an issue](https://github.com/majn/telegram-purple/issues/new), shoot us a mail (scrape the address from the git history), or contact us in dev chat (changing URL, see README for that).
21
22## How to release
23
24#### Translations
25
26Ideally, do a string freeze beforehand; however, this has proven to be too impractical for this project.
27
28Go to the [translation site](https://www.transifex.com/telegram-purple-developers/telegram-purple/content/),
29and close the current resource for new translations.  Rename and re-prioritize it appropriately.
30Download the zip-file, extract it, remove the annoying prefix.  Move all files to `po/`, except `en.po`.
31
32While waiting for the download link, create the new resource with the new potfile,
33then re-upload all the old translations there.
34
35Run `make po/*.po` to fix the filenames.  Do not delete any files.  Rationale see `Makefile`.
36
37Adjust `po/LINGUAS*` as you see fit.
38
39Also import the translations for `AppStream/po/`, and run `make -C Appstream translate`.
40
41#### Increment version
42
43Attempt to use semver.
44
45Adjust `configure.ac`, in macro `AC_INIT`.  Remember to run `autoreconf`.
46
47Adjust `telegram-adium/telegram-adium/telegram-adium-Info.plist`.
48
49Adjust `rpm/purple-telegram.spec`, in version at the top and "changelog" below.
50
51Don't update debian: It's abandoned anyway.
52
53AppStream: Nothing to do.
54
55Update `CHANGELOG.md`.
56
57#### Run some tests
58
59First locally, then on Travis.
60Also, install it locally.  Don't forget to `./configure` first.
61
62#### Prepare release files
63
64Fetch/pull recent changes.
65
66Merge into `master`.
67
68Make a tag: `git tag v1.something`
69Remember to push the tag to github.
70
71Make a dist-bundle: `make dist`
72Keep the resulting `telegram-purple_1.something.orig.tar.gz` safe.
73
74Make the windows installer: `./mkwindows.sh`
75Keep the resulting `telegram-purple-1.something+gcafebabe5.exe` safe.
76
77#### Create release on github
78
79See the [release page](https://github.com/majn/telegram-purple/releases/).
80Feel free to be inspired by the previous release-messages.
81
82Remember to upload the origtar *and* Windows installer.
83
84#### Close associated issues
85
86All relevant issues are marked with `in-pipeline`, but sadly too many are marked this way.
87
88#### Organize branches
89
90Create a new branch `dev-1.nextsomething`, delete the old branch.
91
92#### Create new translation goal on transifex
93
94Be pessimistic in the slug-name.
95
96Run `./autogen.sh` to make all string changes available.
97
98Also, create an announcement that yes there is a new resource,
99but this resource may change significantly until the next string freeze.
100