[Minor] Content Jiggle
Rearrange content to be easier to navigate and less noisy on the menu bar
I think it's important to arrange the site to be optimised for non -technical end-users. So development oriented content needs to be contained to its own section. While end-user oriented content is accesible at first glance
I've moved content arround, merged some section, renamed some sections and reweighted.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/about/_index.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,7 @@
+date: 2019-12-28T23:57:14Z --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/about/community.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,32 @@
+date: 2019-05-19T17:51:27.000Z + - developer.pidgin.im/wiki/PidginCommunity +lastmod: 2019-08-22T04:43:37.000Z +Pidgin is a huge project with a community that helps to provide support. We +have a number of ways you can get in touch with us. +The Pidgin team can be reached via mailing lists for support and development + - [support@pidgin.im](mailto:support@pidgin.im) ([List Info](https://lists.pidgin.im/listinfo/support)) ([List Archive](https://lists.pidgin.im/pipermail/support/)) + - [devel@pidgin.im](mailto:devel@pidgin.im) ([List Info](https://lists.pidgin.im/listinfo/devel)) ([List Archive](https://lists.pidgin.im/pipermail/devel/)) + - We offer a few other mailing lists. [See the full list.](https://lists.pidgin.im/listinfo) +If you prefer chat-based contact, the Pidgin community has two primary chat + - `#pidgin` on `irc.freenode.net` on IRC + - `devel@conference.pidgin.im`, a Jabber/XMPP MUC (Multi-User Chat) +We often get people asking how they can help. Take a look at the +[Contributing](/contributing) page for suggestions! There are lots of things to +do for people, and a lot of them don't even involve the source code! --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/about/philosophy.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,30 @@
+title: Philosophy and Goals +date: 2019-08-22T03:45:43.000Z +lastmod: 2019-08-22T03:45:43.000Z +Pidgin has a number of design goals that we consider our philosophy. For +### Protocol/Service Agnosticism +We believe that once all your accounts are configured in Pidgin, it shouldn't +matter what protocol or service is being used when messaging a contact. The +purpose of using Pidgin is to communicate; the communication itself is more +important than the gritty details of how it's happening. This is exemplified +as "I want to talk to John" versus "I want to talk to John on his XMPP account +at jabber.org." It's our belief that "I want to talk to John" is our users' +expectation, and we aim to make Pidgin that simple. +Pidgin, as a project, has overarching goals for the future of the project: +The main protocol-related goal for the Pidgin project is to remove support for +the proprietary services from the libpurple source code and have them as +separate plugins. This protects the core project from some legal issues and +allows much faster response to protocol-level changes if the owners of a given +service make changes that break the plugin. There is no specific timeline to do +this; we simply aim to do it at some point in the future. --- a/hugo/content/building/2.x.y/_index.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
----
-title: 2.x.y
-date: 2019-01-11T03:13:47.000Z
-lastmod: 2019-09-04T03:20:39.000Z
----
-If you're building for Windows you'll want to have a look at [windows](windows) instead.
-Pidgin's default build has a lot of dependencies. This document will hopefully
-help you find and install them all.
-## Packaged Dependencies
-These dependencies are ones that should be found in your distribution's package
-### I have the source; how do I build this thing?
-Assuming you have all of the necessary libraries and their headers installed
-(see the next few questions), you compile libpurple, Pidgin and Finch just like
- $ tar xjvf pidgin-2.x.y.tar.bz2
- $ ./configure && make && sudo make install
-This will install libpurple, Pidgin and Finch to `/usr/local`. If you want to
-install it elsewhere, pass `--prefix=/some/other/prefix` to `./configure`. (You
-really don't want to install it to `/usr`.) See `./configure --help` for other
-options you can change at compile-time.
-If you got the source tree from our Mercurial database (which you probably
-shouldn't have), you'll need to run `./autogen.sh` instead of `./configure` the
-first time around. If you get an error like the following, you may need a newer
- running /usr/bin/automake -a -c --gnu... failed.
- Makefile.am:79: directory should not contain `/'
- pidgin/pixmaps/Makefile.am:4: directory should not contain `/'
-If you are trying to compile on Windows, you need the answer to a different
-## Why can't I compile Pidgin?
-You're probably missing some dependencies. The `configure` script will tell you
-when you are missing required dependencies. Remember that if you're using an
-RPM-based (RedHat Enterprise Linux, CentOS, SUSE, Mandriva, etc.) or
-Debian-based system (Debian, Ubuntu, etc.) that having just a library's package
-installed is not sufficient--you must also have the `-devel` (RPM systems) or
-`-dev` (Debian-based systems) package for each library installed. If `configure`
-is succeeding, but `make` fails, this is harder to diagnose and you will
-probably want to drop by the IRC channel or XMPP conference listed on
-[Community](/community) to get help.
-## How do I install the dependencies on Debian or Ubuntu?
-You need to install the development headers; these are the `-dev` packages. A
-simple `apt-get build-dep pidgin` will find and install all of the required
-header packages for you.
-If `apt-get build-dep` fails with a message like
- E: You must put some 'source' URIs in your sources.list
-then you need to add `deb-src` lines to your `/etc/apt/sources.list`
-corresponding to each of the `deb` lines already there. If editing configuration
-files scares you, Ubuntu has a "Software Sources" control panel in _System_ ->
-_Administration_ which has some magic checkboxes to do this for you.
-## How do I install the dependencies on Fedora (or similar)?
-RPM-based distribution users may find `yum-builddep pidgin`
-useful if a source RPM is available and the distribution uses the yum tools.
-Note that on current Fedora, you would use `dnf builddep pidgin`, which is in
-the `dnf-plugins-core` package. If you're still using yum, the `yum-builddep`
-command is in the `yum-utils` package, which is not necessarily installed by
-## How do I apply the patch "something.diff"?
-Type `patch -p1 < something.diff` from the top level of the source directory
-(`pidgin/`, not `pidgin/pidgin/` or `pidgin/finch/`).
-## Is there a way to compile without some protocols?
-There are actually two ways:
- - Run `./configure` with the `--with-static-prpls` option with the
- `--disable-plugins` option. This will let you choose which protocols to
- include by specifying them as a comma-separated list, such as the following
- (but note that you won't be able to use any other protocols or plugins):
- `./configure --disable-plugins --with-static-prpls=irc,bonjour`
- - Use the `--with-dynamic-prpls` option to `./configure` by specifying a
- comma-separated list, like so: `./configure --with-dynamic-prpls=irc,xmpp`
-## Can I compile just Finch, not Pidgin?
-Sure. Pass `--disable-gtkui` to `./configure`.
\ No newline at end of file
--- a/hugo/content/building/2.x.y/windows.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,421 +0,0 @@
----
-title: Windows
-date: 2019-09-04T02:46:13.000Z
- - developer.pidgin.im/wiki/BuildingWinPidgin
- - developer.pidgin.im/wiki/BuildingWinPidgin/Pre2.7.0
-lastmod: 2019-09-17T02:47:39.000Z
----
-Note: These instructions are kept current for the development version of
-`release-2.x.y` branch of Pidgin. You may need to look at an older version of
-this page in order to build a released version of Pidgin. Alternatively, you
-may need the instructions for 3.0.0 branch.
-## Set up your build environment
-### Install A Bash Shell
-The Pidgin build system requires a full Unix shell to run. You can install
-[Cygwin](https://cygwin.com) or [MSYS2](https://www.msys2.org/) to accomplish
-this. However, these instructions are heavily geared towards Cygwin so MSYS
-steps may be different and/or missing all together.
-Alternatively, you may use the third-party script
-[Pidgin Windev](https://github.com/renatosilva/pidgin-windev), which
-creates the development environment automatically. This tool works for
-When installing [Cygwin](https://cygwin.com) you will be asked which additional
-packages you would like to install. You need to make sure that the following
-packages are installed. Some of these are selected by default, but the ones in
-bold are not installed by default.
-After installing [MSYS2](https://www.msys2.org/), you'll need to make sure that
-you have all the base dependencies installed as well. You can do that with the
-$ pacman -Sy ca-certificates gawk grep make patch tar unzip wget zip
-The following instructions were written under the assumption that the
-[Pidgin source](#get-the-pidgin-source-code) will be extracted or checked out
-into `$PIDGIN_DEV_ROOT/pidgin-<version>` and that you install all of Pidgin's
-build dependencies under `$PIDGIN_DEV_ROOT/win32-dev` (the point being that
-the pidgin source root and `win32-dev` directories should be on the same level). Similar to the example below:
-You don't have to actually define an environment variable called
-`PIDGIN_DEV_ROOT`, it is simply used here as a placeholder.
-**Note** You should avoid using a `$PIDGIN_DEV_ROOT` path that contains
-spaces as that can cause unnecessary complications.
-Most people will find that the standard build environment directory is
-completely adequate. It is, however, possible to override the locations of the
-various dependencies and target directories. This is often useful to test
-against a development version of a library dependency or to override compiler
-This is done by overriding the various Makefile variables in a `local.mak`
-file in the `$PIDGIN_DEV_ROOT/pidgin-<version>` directory. This file does not
-The variables that can be overridden with this method are defined in the
-[libpurple/win32/global.mak](https://{{< repo pidgin >}}src/release-2.x.y/libpurple/win32/global.mak)
-file. For example, to install Pidgin over `c:\Program Files\Pidgin` instead
-of `$PIDGIN_DEV_ROOT/pidgin/win32-install-dir`, create a
-`$PIDGIN_DEV_ROOT/pidgin/local.mak` containing:
-#Override the install location
-PIDGIN_INSTALL_DIR = /cygdrive/c/Program\ Files/Pidgin
-PURPLE_INSTALL_DIR = /cygdrive/c/Program\ Files/Pidgin
-One nice use of the `local.mak` file is for cross compiling, there is an
-additional example in the [#cross-compiling section below].
-## Get the Pidgin source code
-The development source is available via Mercurial in the `release-2.x.y`
-branch. See [version control](/development/version-control/) for more
-If you want to build a release tarball, the instructions in the rest of this
-document should work for you, however they are written for the most recent
-2.x.y release so there may be issues with older versions.
-Installing all of the build dependencies can be tedious, so you may want to
-check out [Pidgin Windev](https://github.com/renatosilva/pidgin-windev) which
-Install the MinGW "GCC Version 4.7.2" packages from the
-[MinGW site](http://www.mingw.org) by following
-[their instructions](http://www.mingw.org/node/24/revisions/908/view).
-* [binutils-2.24](https://sourceforge.net/projects/mingw/files/MinGW/Base/binutils/binutils-2.24/binutils-2.24-1-mingw32-bin.tar.xz/download)
-* mingw-runtime-3.20 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/mingwrt/mingwrt-3.20/mingwrt-3.20-2-mingw32-dev.tar.lzma/download) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/mingwrt/mingwrt-3.20/mingwrt-3.20-2-mingw32-dll.tar.lzma/download))
-* [w32api-3.17](https://sourceforge.net/projects/mingw/files/MinGW/Base/w32api/w32api-3.17/w32api-3.17-2-mingw32-dev.tar.lzma/)
-* Required runtime libraries for GCC:
- * mpc-0.8.1-1 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/mpc/mpc-0.8.1-1/mpc-0.8.1-1-mingw32-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/mpc/mpc-0.8.1-1/libmpc-0.8.1-1-mingw32-dll-2.tar.lzma/))
- * mpfr-2.4.1-1 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/mpfr/mpfr-2.4.1-1/mpfr-2.4.1-1-mingw32-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/mpfr/mpfr-2.4.1-1/libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma/))
- * gmp-5.0.1-1 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/gmp/gmp-5.0.1-1/gmp-5.0.1-1-mingw32-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/gmp/gmp-5.0.1-1/libgmp-5.0.1-1-mingw32-dll-10.tar.lzma/))
- * pthreads-2.9.0-pre-20110507-2 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/pthreads-w32-2.9.0-pre-20110507-2/pthreads-w32-2.9.0-mingw32-pre-20110507-2-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/pthreads-w32-2.9.0-pre-20110507-2/libpthreadgc-2.9.0-mingw32-pre-20110507-2-dll-2.tar.lzma/))
- * iconv ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/libiconv-1.14-2/libiconv-1.14-2-mingw32-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/libiconv-1.14-2/libiconv-1.14-2-mingw32-dll-2.tar.lzma/))
- * [intl-0.18.1.1-2](https://sourceforge.net/projects/mingw/files/MinGW/Base/gettext/gettext-0.18.1.1-2/libintl-0.18.1.1-2-mingw32-dll-8.tar.lzma/)
- * [gomp-4.7.2-1](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/libgomp-4.7.2-1-mingw32-dll-1.tar.lzma/)
- * [ssp-4.7.2-1](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/libssp-4.7.2-1-mingw32-dll-0.tar.lzma/)
- * [quadmath-4.7.2-1](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/libquadmath-4.7.2-1-mingw32-dll-0.tar.lzma/)
-* gcc-core-4.7.2-1 ([bin](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/gcc-core-4.7.2-1-mingw32-bin.tar.lzma/) and dev and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/libgcc-4.7.2-1-mingw32-dll-1.tar.lzma/))
-* [gcc-4.7.2-1-mingw32-src](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/gcc-4.7.2-1-mingw32-src.tar.lzma/download)
- * so we can distribute the libssp source since we distribute the binary
-Extract all of the above into the desired location (e.g.
-`$PIDGIN_DEV_ROOT/win32-dev/mingw-4.7.2`)
-Prepare a `libssp-src.tar.gz` file containing the libssp sources and licenses:
-cd $PIDGIN_DEV_ROOT/win32-dev/mingw-4.7.2
-tar -C libsspsrctmp -xf gcc-4.7.2-1-mingw32-src/gcc-4.7.2.tar.bz2 gcc-4.7.2/COPYING3 gcc-4.7.2/COPYING.RUNTIME gcc-4.7.2/libssp --strip-components=1
-tar -C libsspsrctmp -czf bin/libssp-src.tar.gz .
-Finally, set the MinGW gcc's bin directory to be before Cygwin's in your
-For example (You should add the following to your `~/.bashrc` file, which is
-found in `C:\cygwin\home\YourUsername\` by default):
-export PATH=/cygdrive/c/devel/pidgin-devel/win32-dev/mingw-4.7.2/bin:$PATH
-Pidgin depends on GTK 2.14.7 (newer runtime versions can be used). The GTK
-All-in-one bundle contains all of GTK's dependencies in one zip file. Download
-[gtk+-bundle_2.14.7-20090119_win32.zip](https://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.14/gtk+-bundle_2.14.7-20090119_win32.zip)
-and extract to `$PIDGIN_DEV_ROOT/win32-dev/gtk_2_0-2.14` (you'll need to create
-Visit the [GTK website](https://www.gtk.org/download/windows.php) for official
-binary and source releases.
-You'll need gettext to compile translations. Download
-[gettext-tools-0.17.zip](https://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-tools-0.17.zip)
-[gettext-runtime-0.17-1.zip](https://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-0.17-1.zip).
-Extract both to `$PIDGIN_DEV_ROOT/win32-dev/gettext-0.17` (you'll need to
-[libxml2-2.9.2_daa1.tar.gz](https://data.imfreedom.org/pidgin/win32/libxml2-2.9.2_daa1.tar.gz)
-to `$PIDGIN_DEV_ROOT/win32-dev`.
-You'll need a functioning perl 5.20.x runtime (if the perl executable isn't in
-your `PATH`, you will need to override the `PERL` variable in
-`pidgin/local.mak` to point to the appropriate perl executable). A good option
-is [Strawberry Perl](http://strawberryperl.com/).
-[perl-5.20.1.1.tar.gz](https://data.imfreedom.org/pidgin/win32/perl-5.20.1.1.tar.gz)
-development package and extract to `$PIDGIN_DEV_ROOT/win32-dev` (it creates its
-own directory). This is a subset of the full 32-bit strawberry perl zip
-containing just the headers, import lib, and source for perl.
-**Note** If using MSYS and you installed the `mingw-developer-toolkit`, keep
-in mind that it installs `msys-perl-bin` (Perl 5.6) which takes precedence
-over the newer perl in your path, and that will cause problems! The easiest
-solution is to set the `PERL` variable in your `pidgin/local.mak` to point to
-[gtkspell-2.0.16.tar.bz2](https://data.imfreedom.org/pidgin/win32/gtkspell-2.0.16.tar.bz2)
-to `$PIDGIN_DEV_ROOT/win32-dev`.
-[enchant_1.6.0_win32.zip](https://data.imfreedom.org/pidgin/win32/enchant_1.6.0_win32.zip)
-to `$PIDGIN_DEV_ROOT/win32-dev/`.
-[nss-3.24-nspr-4.12.tar.gz](https://data.imfreedom.org/pidgin/win32/nss-3.24-nspr-4.12.tar.gz)
-under `$PIDGIN_DEV_ROOT/win32-dev`.
-**NOTE** NSS/NSPR are built from the upstream sources using
-[these instructions](buildings-win-nss/).
-[silc-toolkit-1.1.12.tar.gz](https://data.imfreedom.org/pidgin/win32/silc-toolkit-1.1.12.tar.gz)
-to `$PIDGIN_DEV_ROOT/win32-dev`.
-[meanwhile-1.0.2_daa3-win32.zip](https://data.imfreedom.org/pidgin/win32/meanwhile-1.0.2_daa3-win32.zip)
-to `$PIDGIN_DEV_ROOT/win32-dev`.
-[cyrus-sasl-2.1.26_daa1.tar.gz](https://data.imfreedom.org/pidgin/win32/cyrus-sasl-2.1.26_daa1.tar.gz)
-to `$PIDGIN_DEV_ROOT/win32-dev`.
-[intltool_0.40.4-1_win32.zip](https://ftp.acc.umu.se/pub/GNOME/binaries/win32/intltool/0.40/intltool_0.40.4-1_win32.zip)
-to `$PIDGIN_DEV_ROOT/win32-dev/intltool_0.40.4-1_win32`.
-#### Crash Reporting Library
-[pidgin-inst-deps-20130214.tar.gz](https://data.imfreedom.org/pidgin/win32/pidgin-inst-deps-20130214.tar.gz)
-to `$PIDGIN_DEV_ROOT/win32-dev`.
-The Windows build will take a while, but you can start it with the following
-cd $PIDGIN_DEV_ROOT/pidgin-<version>
-make -f Makefile.mingw install
-Now just wait and let your compiler do its thing. When finished, Pidgin will
-be in `$PIDGIN_DEV_ROOT/pidgin-<version>/win32-install-dir`.
-### Building the Installer
-If you would like to build the Pidgin installer, you'll need to setup
-[NSIS](https://nsis.sourceforge.io/Download). Once you have installed
-NSIS, please make sure that it is in your shell's `PATH`.
-Next you'll need to download the
-[nsisunz plugin](https://nsis.sourceforge.io/Nsisunz_plug-in),
-and extract `nsisunz.dll` into the `Plugins` directory of your NSIS
-You'll also need to install the `SHA1Plugin` from
-`$PIDGIN_DEV_ROOT/win32-dev/pidgin-inst-deps-20130214/SHA1Plugin.dll` into
-the NSIS `Plugins` directory.
-Finally, you'll need to decide if you would like to sign the executables though
-this is not necessary for personal use.
-To sign the executables, you'll need to get an appropriate code signing
-certificate by downloading and installing
-[Mono](https://www.mono-project.com/Download). In your `local.mak` file (see
-[customizing](#customizing) above), define the `MONO_SIGNCODE` variable to the
-fully qualified path to the `signcode` batch file in the Mono `bin` directory,
-as well as the `SIGNCODE_SPC` and `SIGNCODE_PVK` variable to the appropriate
-files in your certificate.
-Also, you'll need a PGP key to verify add pgp signatures to the files. GnuPG
-is the primary PGP client most people use. You can read more
-[here](https://www.gnupg.org/gph/en/manual/c14.html).
-Once you have everything setup your `local.mak` should look something like the
-MONO_SIGNCODE=/cygdrive/c/Program\ Files\ \(x86\)/Mono-2.10.8/bin/signcode
-SIGNCODE_SPC=c:\\Path\\to\\authenticode.spc
-SIGNCODE_PVK=c:\\Path\\to\\authenticode.pvk
-#Set up gpg to use a separate keyring
-GPG_SIGN=gpg --no-default-keyring --secret-keyring /path/to/secring.gpg
-If you aren't going to be signing anything, your `local.mak` should look like
-MONO_SIGNCODE=echo ***Bypassing signcode***
-GPG_SIGN=echo ***Bypassing gpg***
-At this point, you can finally build the installer. However, there are
-actually two different installers; an "Offline" installer that includes all
-dependencies (except spellchecking dictionaries) and the debug symbols and an
-"Online" installer that includes only Pidgin itself and will download the
-various dependencies if necessary.
-The `Makefile.mingw` targets for these are `installer_offline` and `installer`
-respectively. You can build both with the `installers` target.
-cd $PIDGIN_DEV_ROOT/pidgin-<version>
-make -f Makefile.mingw installers
-When it finishes, your installer(s) should be in
-`$PIDGIN_DEV_ROOT/pidgin-<version>/` directory.
-There is a quite good **Just In Time** debugger for MinGW named
-[drmingw](https://github.com/jrfonseca/drmingw). You can download it from
-their [releases](https://github.com/jrfonseca/drmingw/releases).
-There is also a version of `gdb` available from MinGW, if you prefer.
-It is quite easy to cross compile Pidgin for Windows on a Linux machine.
-To begin, you'll need to install MinGW. On Debian/Ubuntu, this involves
-installing packages `mingw32`, `mingw32-binutils`, and `mingw32-runtime`. On
-other distributions, the packages may be named differently.
-Set up a build environment as described [above](set-up-your-build-environment).
-You should already have a bash shell and have just installed the mingw
-Create a `local.mak` file in the source directory root to override the
-Makefile variables, something like the following:
-CC := /usr/bin/i586-mingw32msvc-cc
-MAKENSIS := /usr/bin/makensis
-WINDRES := /usr/bin/i586-mingw32msvc-windres
-STRIP := /usr/bin/i586-mingw32msvc-strip
-INTLTOOL_MERGE := /usr/bin/intltool-merge
-INCLUDE_PATHS := -I$(PIDGIN_TREE_TOP)/../win32-dev/w32api/include
-LIB_PATHS := -L$(PIDGIN_TREE_TOP)/../win32-dev/w32api/lib
-If your distribution doesn't include a recent enough win32api, you can
-download it from the [MinGW site](http://www.mingw.org/), extract it into
-your `win32-dev` directory, and override the `INCLUDE_PATHS` and `LIB_PATHS`
-variables in your `local.mak` as shown above.
-NSIS version 2.46 or greater is required to cross-compile. If compiling NSIS
-from source, the [scons](https://www.scons.org/) package is a dependency.
-This can usually be installed through your linux distribution's package
-archive. An example of how to install the NSIS package is given below
-(Assuming use of the NSIS 2.46 version).
-wget https://prdownloads.sourceforge.net/nsis/nsis-2.46-src.tar.bz2?download
-wget https://prdownloads.sourceforge.net/nsis/nsis-2.46.zip?download
-tar -jxvf nsis-2.46-src.tar.bz2
-scons SKIPSTUBS=all SKIPPLUGINS=all SKIPUTILS=all SKIPMISC=all NSIS_CONFIG_CONST_DATA_PATH=no
-sudo scons install-compiler
-sudo unzip nsis-2.46 -d /usr/local/share
-sudo mv /usr/local/share/nsis-2.46/ /usr/local/share/nsis
-Once this is done, you'll need to update `local.mak` to point to the new NSIS
-MAKENSIS := /usr/local/bin/makensis
-Finally, you should be able to follow the [build](#build) instructions above.
--- a/hugo/content/building/3.0.0/_index.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
----
-title: 3.0.0
-date: 2019-09-04T02:46:13.000Z
-lastmod: 2019-09-04T03:42:40.000Z
----
-Pidgin 3.0.0 is the in-development next major version of Pidgin. Its build
-instructions are quite different than Pidgin 2.x.y and have not yet been
--- a/hugo/content/building/_index.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
----
-title: Building
-date: 2019-01-11T05:44:25.000Z
-lastmod: 2019-09-04T03:42:40.000Z
----
-Building Pidgin can be tricky, but hopefully we've made it pretty clear in the
-following pages. First thing first is that we you need to decide which version
-of Pidgin you are going to build.
-If you are just trying to build Pidgin to run it, then you probably want the
-[2.x.y](2.x.y/) release which is our stable version.
-If you're interested in developing Pidgin itself or just want to live on the
-edge then you may want to try out the development version which we call
--- a/hugo/content/community/_index.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
----
-title: Community
-date: 2019-05-19T17:51:27.000Z
- - developer.pidgin.im/wiki/PidginCommunity
-lastmod: 2019-08-22T04:43:37.000Z
----
-Pidgin is a huge project with a community that helps to provide support. We
-have a number of ways you can get in touch with us.
-The Pidgin team can be reached via mailing lists for support and development
- - [support@pidgin.im](mailto:support@pidgin.im) ([List Info](https://lists.pidgin.im/listinfo/support)) ([List Archive](https://lists.pidgin.im/pipermail/support/))
- - [devel@pidgin.im](mailto:devel@pidgin.im) ([List Info](https://lists.pidgin.im/listinfo/devel)) ([List Archive](https://lists.pidgin.im/pipermail/devel/))
- - We offer a few other mailing lists. [See the full list.](https://lists.pidgin.im/listinfo)
-If you prefer chat-based contact, the Pidgin community has two primary chat
- - `#pidgin` on `irc.freenode.net` on IRC
- - `devel@conference.pidgin.im`, a Jabber/XMPP MUC (Multi-User Chat)
-We often get people asking how they can help. Take a look at the
-[Contributing](/contributing) page for suggestions! There are lots of things to
-do for people, and a lot of them don't even involve the source code!
--- a/hugo/content/contributing/_index.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
----
-title: Contributing
-date: 2017-09-19T02:00:55.000Z
-lastmod: 2019-08-21T04:05:48.000Z
----
-Pidgin is a huge project with a ton of things to be done, even if you're not a
-coder. Below is a short list of things you can do to help get involved!!
- * Triage the issue tracker
- * Try to reproduce described bugs. If you can find an easy way to
- reproduce, leave a comment to explain how to do it.
- * Find/mark/close duplicates. Seriously, even just one or two duplicates
- found and properly marked is a huge help to our backlog!
- * Suggest patches be turned into pull requests, or bring patches to the
- attention of the core dev team.
- * IRC: #pidgin on freenode
- * XMPP (formerly Jabber): devel@conference.pidgin.im
- * Proofread the documentation--this is a really, really easy way to start!
- * Help facilitate translators and translations
- * via [transifex](https://www.transifex.com/pidgin/pidgin/)
- * help translate this repo
- * Convert wiki pages to markdown for inclusion in this repo.
- * Walk the links on [ThirdPartyPlugins](https://developer.pidgin.im/wiki/ThirdPartyPlugins)
- and mark broken ones as such. This is another really easy way to start!
- * Participate in discussion on IRC, XMPP, and/or the Mailing Lists.
-For the coders out there:
- * Find/fix build warnings
- * Find/fix bugs on your own or via the issue tracker
- * Participate in design discussions
--- a/hugo/content/contributing/mercurial.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
----
-title: Using Mercurial
-date: 2019-02-01T05:09:48.000Z
- - developer.pidgin.im/wiki/UsingPidginMercurial
-lastmod: 2019-08-29T20:33:38.000Z
----
-Mercurial is configured through several rc files. You can override the
-system-wide settings on a per-user or per-repository basis by changing either
-`~/.hgrc` or `<repository>/.hg/hgrc`. See `man hgrc` for details.
-You must set your username when working with Mercurial repositories. To do
-that, add two lines to `~/.hgrc` (or optionally `<repository>/.hg/hgrc`, if you
-want to use a different username for other Mercurial repositories):
-username = First Last <email@address.tld>
-Other useful options that can be set in the `[ui]` section of an `hgrc` are the
-merge tool and to make Mercurial verbose or not:
-username = First Last <email@address.tld>
-Git diffs can be useful too, and making `hg log -v` the default behavior for `hg
-### Clone the Repository and Select a Branch
-To start working with Pidgin from Mercurial, you'll probably want to clone our
-hg clone https://{{< repo pidgin >}} pidgin
-This will give you a `pidgin` directory with the 3.0.0 development code by
-default. If you want to develop against Pidgin 3.0.0, you're all set!
-Naturally, Pidgin has a number of branches within its repository, and these
-branches handle various projects including our maintenance of Pidgin 2.x.y. We
-won't go into all the branches here, as there are a lot of them, but we know
-some people would like to work against Pidgin 2.x.y instead of 3.0.0. In order
-to do that, clone the repository as above, but then do this:
-You now have a Pidgin 2 tree to work with. Happy hacking!
--- a/hugo/content/development/_index.md Mon Dec 09 22:40:33 2019 -0600
+++ b/hugo/content/development/_index.md Sun Dec 29 19:05:33 2019 +0000
@@ -2,7 +2,7 @@
date: 2019-01-15T03:38:25.000Z
lastmod: 2019-01-21T22:34:09.000Z
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/building/2.x.y/_index.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,103 @@
+date: 2019-01-11T03:13:47.000Z +lastmod: 2019-09-04T03:20:39.000Z +If you're building for Windows you'll want to have a look at [windows](windows) instead. +Pidgin's default build has a lot of dependencies. This document will hopefully +help you find and install them all. +## Packaged Dependencies +These dependencies are ones that should be found in your distribution's package +### I have the source; how do I build this thing? +Assuming you have all of the necessary libraries and their headers installed +(see the next few questions), you compile libpurple, Pidgin and Finch just like + $ tar xjvf pidgin-2.x.y.tar.bz2 + $ ./configure && make && sudo make install +This will install libpurple, Pidgin and Finch to `/usr/local`. If you want to +install it elsewhere, pass `--prefix=/some/other/prefix` to `./configure`. (You +really don't want to install it to `/usr`.) See `./configure --help` for other +options you can change at compile-time. +If you got the source tree from our Mercurial database (which you probably +shouldn't have), you'll need to run `./autogen.sh` instead of `./configure` the +first time around. If you get an error like the following, you may need a newer + running /usr/bin/automake -a -c --gnu... failed. + Makefile.am:79: directory should not contain `/' + pidgin/pixmaps/Makefile.am:4: directory should not contain `/' +If you are trying to compile on Windows, you need the answer to a different +## Why can't I compile Pidgin? +You're probably missing some dependencies. The `configure` script will tell you +when you are missing required dependencies. Remember that if you're using an +RPM-based (RedHat Enterprise Linux, CentOS, SUSE, Mandriva, etc.) or +Debian-based system (Debian, Ubuntu, etc.) that having just a library's package +installed is not sufficient--you must also have the `-devel` (RPM systems) or +`-dev` (Debian-based systems) package for each library installed. If `configure` +is succeeding, but `make` fails, this is harder to diagnose and you will +probably want to drop by the IRC channel or XMPP conference listed on +[Community](/community) to get help. +## How do I install the dependencies on Debian or Ubuntu? +You need to install the development headers; these are the `-dev` packages. A +simple `apt-get build-dep pidgin` will find and install all of the required +header packages for you. +If `apt-get build-dep` fails with a message like + E: You must put some 'source' URIs in your sources.list +then you need to add `deb-src` lines to your `/etc/apt/sources.list` +corresponding to each of the `deb` lines already there. If editing configuration +files scares you, Ubuntu has a "Software Sources" control panel in _System_ -> +_Administration_ which has some magic checkboxes to do this for you. +## How do I install the dependencies on Fedora (or similar)? +RPM-based distribution users may find `yum-builddep pidgin` +useful if a source RPM is available and the distribution uses the yum tools. +Note that on current Fedora, you would use `dnf builddep pidgin`, which is in +the `dnf-plugins-core` package. If you're still using yum, the `yum-builddep` +command is in the `yum-utils` package, which is not necessarily installed by +## How do I apply the patch "something.diff"? +Type `patch -p1 < something.diff` from the top level of the source directory +(`pidgin/`, not `pidgin/pidgin/` or `pidgin/finch/`). +## Is there a way to compile without some protocols? +There are actually two ways: + - Run `./configure` with the `--with-static-prpls` option with the + `--disable-plugins` option. This will let you choose which protocols to + include by specifying them as a comma-separated list, such as the following + (but note that you won't be able to use any other protocols or plugins): + `./configure --disable-plugins --with-static-prpls=irc,bonjour` + - Use the `--with-dynamic-prpls` option to `./configure` by specifying a + comma-separated list, like so: `./configure --with-dynamic-prpls=irc,xmpp` +## Can I compile just Finch, not Pidgin? +Sure. Pass `--disable-gtkui` to `./configure`. \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/building/2.x.y/windows.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,421 @@
+date: 2019-09-04T02:46:13.000Z + - developer.pidgin.im/wiki/BuildingWinPidgin + - developer.pidgin.im/wiki/BuildingWinPidgin/Pre2.7.0 +lastmod: 2019-09-17T02:47:39.000Z +Note: These instructions are kept current for the development version of +`release-2.x.y` branch of Pidgin. You may need to look at an older version of +this page in order to build a released version of Pidgin. Alternatively, you +may need the instructions for 3.0.0 branch. +## Set up your build environment +### Install A Bash Shell +The Pidgin build system requires a full Unix shell to run. You can install +[Cygwin](https://cygwin.com) or [MSYS2](https://www.msys2.org/) to accomplish +this. However, these instructions are heavily geared towards Cygwin so MSYS +steps may be different and/or missing all together. +Alternatively, you may use the third-party script +[Pidgin Windev](https://github.com/renatosilva/pidgin-windev), which +creates the development environment automatically. This tool works for +When installing [Cygwin](https://cygwin.com) you will be asked which additional +packages you would like to install. You need to make sure that the following +packages are installed. Some of these are selected by default, but the ones in +bold are not installed by default. +After installing [MSYS2](https://www.msys2.org/), you'll need to make sure that +you have all the base dependencies installed as well. You can do that with the +$ pacman -Sy ca-certificates gawk grep make patch tar unzip wget zip +The following instructions were written under the assumption that the +[Pidgin source](#get-the-pidgin-source-code) will be extracted or checked out +into `$PIDGIN_DEV_ROOT/pidgin-<version>` and that you install all of Pidgin's +build dependencies under `$PIDGIN_DEV_ROOT/win32-dev` (the point being that +the pidgin source root and `win32-dev` directories should be on the same level). Similar to the example below: +You don't have to actually define an environment variable called +`PIDGIN_DEV_ROOT`, it is simply used here as a placeholder. +**Note** You should avoid using a `$PIDGIN_DEV_ROOT` path that contains +spaces as that can cause unnecessary complications. +Most people will find that the standard build environment directory is +completely adequate. It is, however, possible to override the locations of the +various dependencies and target directories. This is often useful to test +against a development version of a library dependency or to override compiler +This is done by overriding the various Makefile variables in a `local.mak` +file in the `$PIDGIN_DEV_ROOT/pidgin-<version>` directory. This file does not +The variables that can be overridden with this method are defined in the +[libpurple/win32/global.mak](https://{{< repo pidgin >}}src/release-2.x.y/libpurple/win32/global.mak) +file. For example, to install Pidgin over `c:\Program Files\Pidgin` instead +of `$PIDGIN_DEV_ROOT/pidgin/win32-install-dir`, create a +`$PIDGIN_DEV_ROOT/pidgin/local.mak` containing: +#Override the install location +PIDGIN_INSTALL_DIR = /cygdrive/c/Program\ Files/Pidgin +PURPLE_INSTALL_DIR = /cygdrive/c/Program\ Files/Pidgin +One nice use of the `local.mak` file is for cross compiling, there is an +additional example in the [#cross-compiling section below]. +## Get the Pidgin source code +The development source is available via Mercurial in the `release-2.x.y` +branch. See [version control](/development/version-control/) for more +If you want to build a release tarball, the instructions in the rest of this +document should work for you, however they are written for the most recent +2.x.y release so there may be issues with older versions. +Installing all of the build dependencies can be tedious, so you may want to +check out [Pidgin Windev](https://github.com/renatosilva/pidgin-windev) which +Install the MinGW "GCC Version 4.7.2" packages from the +[MinGW site](http://www.mingw.org) by following +[their instructions](http://www.mingw.org/node/24/revisions/908/view). +* [binutils-2.24](https://sourceforge.net/projects/mingw/files/MinGW/Base/binutils/binutils-2.24/binutils-2.24-1-mingw32-bin.tar.xz/download) +* mingw-runtime-3.20 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/mingwrt/mingwrt-3.20/mingwrt-3.20-2-mingw32-dev.tar.lzma/download) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/mingwrt/mingwrt-3.20/mingwrt-3.20-2-mingw32-dll.tar.lzma/download)) +* [w32api-3.17](https://sourceforge.net/projects/mingw/files/MinGW/Base/w32api/w32api-3.17/w32api-3.17-2-mingw32-dev.tar.lzma/) +* Required runtime libraries for GCC: + * mpc-0.8.1-1 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/mpc/mpc-0.8.1-1/mpc-0.8.1-1-mingw32-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/mpc/mpc-0.8.1-1/libmpc-0.8.1-1-mingw32-dll-2.tar.lzma/)) + * mpfr-2.4.1-1 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/mpfr/mpfr-2.4.1-1/mpfr-2.4.1-1-mingw32-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/mpfr/mpfr-2.4.1-1/libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma/)) + * gmp-5.0.1-1 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/gmp/gmp-5.0.1-1/gmp-5.0.1-1-mingw32-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/gmp/gmp-5.0.1-1/libgmp-5.0.1-1-mingw32-dll-10.tar.lzma/)) + * pthreads-2.9.0-pre-20110507-2 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/pthreads-w32-2.9.0-pre-20110507-2/pthreads-w32-2.9.0-mingw32-pre-20110507-2-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/pthreads-w32-2.9.0-pre-20110507-2/libpthreadgc-2.9.0-mingw32-pre-20110507-2-dll-2.tar.lzma/)) + * iconv ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/libiconv-1.14-2/libiconv-1.14-2-mingw32-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/libiconv-1.14-2/libiconv-1.14-2-mingw32-dll-2.tar.lzma/)) + * [intl-0.18.1.1-2](https://sourceforge.net/projects/mingw/files/MinGW/Base/gettext/gettext-0.18.1.1-2/libintl-0.18.1.1-2-mingw32-dll-8.tar.lzma/) + * [gomp-4.7.2-1](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/libgomp-4.7.2-1-mingw32-dll-1.tar.lzma/) + * [ssp-4.7.2-1](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/libssp-4.7.2-1-mingw32-dll-0.tar.lzma/) + * [quadmath-4.7.2-1](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/libquadmath-4.7.2-1-mingw32-dll-0.tar.lzma/) +* gcc-core-4.7.2-1 ([bin](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/gcc-core-4.7.2-1-mingw32-bin.tar.lzma/) and dev and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/libgcc-4.7.2-1-mingw32-dll-1.tar.lzma/)) +* [gcc-4.7.2-1-mingw32-src](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/gcc-4.7.2-1-mingw32-src.tar.lzma/download) + * so we can distribute the libssp source since we distribute the binary +Extract all of the above into the desired location (e.g. +`$PIDGIN_DEV_ROOT/win32-dev/mingw-4.7.2`) +Prepare a `libssp-src.tar.gz` file containing the libssp sources and licenses: +cd $PIDGIN_DEV_ROOT/win32-dev/mingw-4.7.2 +tar -C libsspsrctmp -xf gcc-4.7.2-1-mingw32-src/gcc-4.7.2.tar.bz2 gcc-4.7.2/COPYING3 gcc-4.7.2/COPYING.RUNTIME gcc-4.7.2/libssp --strip-components=1 +tar -C libsspsrctmp -czf bin/libssp-src.tar.gz . +Finally, set the MinGW gcc's bin directory to be before Cygwin's in your +For example (You should add the following to your `~/.bashrc` file, which is +found in `C:\cygwin\home\YourUsername\` by default): +export PATH=/cygdrive/c/devel/pidgin-devel/win32-dev/mingw-4.7.2/bin:$PATH +Pidgin depends on GTK 2.14.7 (newer runtime versions can be used). The GTK +All-in-one bundle contains all of GTK's dependencies in one zip file. Download +[gtk+-bundle_2.14.7-20090119_win32.zip](https://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.14/gtk+-bundle_2.14.7-20090119_win32.zip) +and extract to `$PIDGIN_DEV_ROOT/win32-dev/gtk_2_0-2.14` (you'll need to create +Visit the [GTK website](https://www.gtk.org/download/windows.php) for official +binary and source releases. +You'll need gettext to compile translations. Download +[gettext-tools-0.17.zip](https://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-tools-0.17.zip) +[gettext-runtime-0.17-1.zip](https://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-0.17-1.zip). +Extract both to `$PIDGIN_DEV_ROOT/win32-dev/gettext-0.17` (you'll need to +[libxml2-2.9.2_daa1.tar.gz](https://data.imfreedom.org/pidgin/win32/libxml2-2.9.2_daa1.tar.gz) +to `$PIDGIN_DEV_ROOT/win32-dev`. +You'll need a functioning perl 5.20.x runtime (if the perl executable isn't in +your `PATH`, you will need to override the `PERL` variable in +`pidgin/local.mak` to point to the appropriate perl executable). A good option +is [Strawberry Perl](http://strawberryperl.com/). +[perl-5.20.1.1.tar.gz](https://data.imfreedom.org/pidgin/win32/perl-5.20.1.1.tar.gz) +development package and extract to `$PIDGIN_DEV_ROOT/win32-dev` (it creates its +own directory). This is a subset of the full 32-bit strawberry perl zip +containing just the headers, import lib, and source for perl. +**Note** If using MSYS and you installed the `mingw-developer-toolkit`, keep +in mind that it installs `msys-perl-bin` (Perl 5.6) which takes precedence +over the newer perl in your path, and that will cause problems! The easiest +solution is to set the `PERL` variable in your `pidgin/local.mak` to point to +[gtkspell-2.0.16.tar.bz2](https://data.imfreedom.org/pidgin/win32/gtkspell-2.0.16.tar.bz2) +to `$PIDGIN_DEV_ROOT/win32-dev`. +[enchant_1.6.0_win32.zip](https://data.imfreedom.org/pidgin/win32/enchant_1.6.0_win32.zip) +to `$PIDGIN_DEV_ROOT/win32-dev/`. +[nss-3.24-nspr-4.12.tar.gz](https://data.imfreedom.org/pidgin/win32/nss-3.24-nspr-4.12.tar.gz) +under `$PIDGIN_DEV_ROOT/win32-dev`. +**NOTE** NSS/NSPR are built from the upstream sources using +[these instructions](buildings-win-nss/). +[silc-toolkit-1.1.12.tar.gz](https://data.imfreedom.org/pidgin/win32/silc-toolkit-1.1.12.tar.gz) +to `$PIDGIN_DEV_ROOT/win32-dev`. +[meanwhile-1.0.2_daa3-win32.zip](https://data.imfreedom.org/pidgin/win32/meanwhile-1.0.2_daa3-win32.zip) +to `$PIDGIN_DEV_ROOT/win32-dev`. +[cyrus-sasl-2.1.26_daa1.tar.gz](https://data.imfreedom.org/pidgin/win32/cyrus-sasl-2.1.26_daa1.tar.gz) +to `$PIDGIN_DEV_ROOT/win32-dev`. +[intltool_0.40.4-1_win32.zip](https://ftp.acc.umu.se/pub/GNOME/binaries/win32/intltool/0.40/intltool_0.40.4-1_win32.zip) +to `$PIDGIN_DEV_ROOT/win32-dev/intltool_0.40.4-1_win32`. +#### Crash Reporting Library +[pidgin-inst-deps-20130214.tar.gz](https://data.imfreedom.org/pidgin/win32/pidgin-inst-deps-20130214.tar.gz) +to `$PIDGIN_DEV_ROOT/win32-dev`. +The Windows build will take a while, but you can start it with the following +cd $PIDGIN_DEV_ROOT/pidgin-<version> +make -f Makefile.mingw install +Now just wait and let your compiler do its thing. When finished, Pidgin will +be in `$PIDGIN_DEV_ROOT/pidgin-<version>/win32-install-dir`. +### Building the Installer +If you would like to build the Pidgin installer, you'll need to setup +[NSIS](https://nsis.sourceforge.io/Download). Once you have installed +NSIS, please make sure that it is in your shell's `PATH`. +Next you'll need to download the +[nsisunz plugin](https://nsis.sourceforge.io/Nsisunz_plug-in), +and extract `nsisunz.dll` into the `Plugins` directory of your NSIS +You'll also need to install the `SHA1Plugin` from +`$PIDGIN_DEV_ROOT/win32-dev/pidgin-inst-deps-20130214/SHA1Plugin.dll` into +the NSIS `Plugins` directory. +Finally, you'll need to decide if you would like to sign the executables though +this is not necessary for personal use. +To sign the executables, you'll need to get an appropriate code signing +certificate by downloading and installing +[Mono](https://www.mono-project.com/Download). In your `local.mak` file (see +[customizing](#customizing) above), define the `MONO_SIGNCODE` variable to the +fully qualified path to the `signcode` batch file in the Mono `bin` directory, +as well as the `SIGNCODE_SPC` and `SIGNCODE_PVK` variable to the appropriate +files in your certificate. +Also, you'll need a PGP key to verify add pgp signatures to the files. GnuPG +is the primary PGP client most people use. You can read more +[here](https://www.gnupg.org/gph/en/manual/c14.html). +Once you have everything setup your `local.mak` should look something like the +MONO_SIGNCODE=/cygdrive/c/Program\ Files\ \(x86\)/Mono-2.10.8/bin/signcode +SIGNCODE_SPC=c:\\Path\\to\\authenticode.spc +SIGNCODE_PVK=c:\\Path\\to\\authenticode.pvk +#Set up gpg to use a separate keyring +GPG_SIGN=gpg --no-default-keyring --secret-keyring /path/to/secring.gpg +If you aren't going to be signing anything, your `local.mak` should look like +MONO_SIGNCODE=echo ***Bypassing signcode*** +GPG_SIGN=echo ***Bypassing gpg*** +At this point, you can finally build the installer. However, there are +actually two different installers; an "Offline" installer that includes all +dependencies (except spellchecking dictionaries) and the debug symbols and an +"Online" installer that includes only Pidgin itself and will download the +various dependencies if necessary. +The `Makefile.mingw` targets for these are `installer_offline` and `installer` +respectively. You can build both with the `installers` target. +cd $PIDGIN_DEV_ROOT/pidgin-<version> +make -f Makefile.mingw installers +When it finishes, your installer(s) should be in +`$PIDGIN_DEV_ROOT/pidgin-<version>/` directory. +There is a quite good **Just In Time** debugger for MinGW named +[drmingw](https://github.com/jrfonseca/drmingw). You can download it from +their [releases](https://github.com/jrfonseca/drmingw/releases). +There is also a version of `gdb` available from MinGW, if you prefer. +It is quite easy to cross compile Pidgin for Windows on a Linux machine. +To begin, you'll need to install MinGW. On Debian/Ubuntu, this involves +installing packages `mingw32`, `mingw32-binutils`, and `mingw32-runtime`. On +other distributions, the packages may be named differently. +Set up a build environment as described [above](set-up-your-build-environment). +You should already have a bash shell and have just installed the mingw +Create a `local.mak` file in the source directory root to override the +Makefile variables, something like the following: +CC := /usr/bin/i586-mingw32msvc-cc +MAKENSIS := /usr/bin/makensis +WINDRES := /usr/bin/i586-mingw32msvc-windres +STRIP := /usr/bin/i586-mingw32msvc-strip +INTLTOOL_MERGE := /usr/bin/intltool-merge +INCLUDE_PATHS := -I$(PIDGIN_TREE_TOP)/../win32-dev/w32api/include +LIB_PATHS := -L$(PIDGIN_TREE_TOP)/../win32-dev/w32api/lib +If your distribution doesn't include a recent enough win32api, you can +download it from the [MinGW site](http://www.mingw.org/), extract it into +your `win32-dev` directory, and override the `INCLUDE_PATHS` and `LIB_PATHS` +variables in your `local.mak` as shown above. +NSIS version 2.46 or greater is required to cross-compile. If compiling NSIS +from source, the [scons](https://www.scons.org/) package is a dependency. +This can usually be installed through your linux distribution's package +archive. An example of how to install the NSIS package is given below +(Assuming use of the NSIS 2.46 version). +wget https://prdownloads.sourceforge.net/nsis/nsis-2.46-src.tar.bz2?download +wget https://prdownloads.sourceforge.net/nsis/nsis-2.46.zip?download +tar -jxvf nsis-2.46-src.tar.bz2 +scons SKIPSTUBS=all SKIPPLUGINS=all SKIPUTILS=all SKIPMISC=all NSIS_CONFIG_CONST_DATA_PATH=no +sudo scons install-compiler +sudo unzip nsis-2.46 -d /usr/local/share +sudo mv /usr/local/share/nsis-2.46/ /usr/local/share/nsis +Once this is done, you'll need to update `local.mak` to point to the new NSIS +MAKENSIS := /usr/local/bin/makensis +Finally, you should be able to follow the [build](#build) instructions above. --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/building/3.0.0/_index.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,11 @@
+date: 2019-09-04T02:46:13.000Z +lastmod: 2019-09-04T03:42:40.000Z +Pidgin 3.0.0 is the in-development next major version of Pidgin. Its build +instructions are quite different than Pidgin 2.x.y and have not yet been --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/building/_index.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,18 @@
+date: 2019-01-11T05:44:25.000Z +lastmod: 2019-09-04T03:42:40.000Z +Building Pidgin can be tricky, but hopefully we've made it pretty clear in the +following pages. First thing first is that we you need to decide which version +of Pidgin you are going to build. +If you are just trying to build Pidgin to run it, then you probably want the +[2.x.y](2.x.y/) release which is our stable version. +If you're interested in developing Pidgin itself or just want to live on the +edge then you may want to try out the development version which we call --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/contributing/_index.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,42 @@
+date: 2017-09-19T02:00:55.000Z +lastmod: 2019-08-21T04:05:48.000Z +Pidgin is a huge project with a ton of things to be done, even if you're not a +coder. Below is a short list of things you can do to help get involved!! + * Triage the issue tracker + * Try to reproduce described bugs. If you can find an easy way to + reproduce, leave a comment to explain how to do it. + * Find/mark/close duplicates. Seriously, even just one or two duplicates + found and properly marked is a huge help to our backlog! + * Suggest patches be turned into pull requests, or bring patches to the + attention of the core dev team. + * IRC: #pidgin on freenode + * XMPP (formerly Jabber): devel@conference.pidgin.im + * Proofread the documentation--this is a really, really easy way to start! + * Help facilitate translators and translations + * via [transifex](https://www.transifex.com/pidgin/pidgin/) + * help translate this repo + * Convert wiki pages to markdown for inclusion in this repo. + * Walk the links on [ThirdPartyPlugins](https://developer.pidgin.im/wiki/ThirdPartyPlugins) + and mark broken ones as such. This is another really easy way to start! + * Participate in discussion on IRC, XMPP, and/or the Mailing Lists. +For the coders out there: + * Find/fix build warnings + * Find/fix bugs on your own or via the issue tracker + * Participate in design discussions --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/contributing/mercurial.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,68 @@
+date: 2019-02-01T05:09:48.000Z + - developer.pidgin.im/wiki/UsingPidginMercurial +lastmod: 2019-08-29T20:33:38.000Z +Mercurial is configured through several rc files. You can override the +system-wide settings on a per-user or per-repository basis by changing either +`~/.hgrc` or `<repository>/.hg/hgrc`. See `man hgrc` for details. +You must set your username when working with Mercurial repositories. To do +that, add two lines to `~/.hgrc` (or optionally `<repository>/.hg/hgrc`, if you +want to use a different username for other Mercurial repositories): +username = First Last <email@address.tld> +Other useful options that can be set in the `[ui]` section of an `hgrc` are the +merge tool and to make Mercurial verbose or not: +username = First Last <email@address.tld> +Git diffs can be useful too, and making `hg log -v` the default behavior for `hg +### Clone the Repository and Select a Branch +To start working with Pidgin from Mercurial, you'll probably want to clone our +hg clone https://{{< repo pidgin >}} pidgin +This will give you a `pidgin` directory with the 3.0.0 development code by +default. If you want to develop against Pidgin 3.0.0, you're all set! +Naturally, Pidgin has a number of branches within its repository, and these +branches handle various projects including our maintenance of Pidgin 2.x.y. We +won't go into all the branches here, as there are a lot of them, but we know +some people would like to work against Pidgin 2.x.y instead of 3.0.0. In order +to do that, clone the repository as above, but then do this: +You now have a Pidgin 2 tree to work with. Happy hacking! --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/gsoc/_index.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,36 @@
+title: Google Summer of Code +date: 2019-01-15T03:38:25.000Z + - developer.pidgin.im/wiki/SummerOfCode2007 + - developer.pidgin.im/wiki/SummerOfCode2008 + - developer.pidgin.im/wiki/SummerOfCode2009 + - developer.pidgin.im/wiki/SummerOfCode2010 + - developer.pidgin.im/wiki/SummerOfCode2011 + - developer.pidgin.im/wiki/SummerOfCode2012 + - developer.pidgin.im/wiki/SummerOfCode2013 + - developer.pidgin.im/wiki/SummerOfCode2015 +lastmod: 2019-01-21T22:34:09.000Z +Pidgin has been involved in the +[Google Summer of Code](https://summerofcode.withgoogle.com/) for many years +since it was started. This section contains a running list of project ideas as +well as some documentation on our participation for the years we participated. +You can find our current list of ideas on the [Ideas](/gsoc/ideas) page. If +you have any ideas, feel free to email the mailing list or open a pull request. +## Instructions for Applications +We have some detailed directions on how to make yourself stand out from the +crowd on the [instructions](/gsoc/instructions) page. --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/gsoc/ideas.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,143 @@
+date: 2019-01-11T03:13:47.000Z + - 'https://developer.pidgin.im/wiki/SoCIdeas' +lastmod: 2019-08-22T04:39:28.000Z +These ideas are starting points for Google Summer of Code projects that the +Pidgin, Finch, and libpurple community has agreed are generally desirable and +high impact. For smaller projects, community-submitted ideas, or projects that +for some reason we are not sure are in scope for SoC, please see +[wiki:SoCAndBountyIdeas]. (You can submit SoC proposals with those ideas, or +your own ideas, as well, you just have to convince us they're suitable!) +## Protocol-specific ideas +libpurple supports no native end-to-end encryption over XMPP. There are several +XEP's for this, and there is absolutely room for a new protocol that is +better/easier/more secure/whatever than the existing proposals. See +[wiki:EndToEndXMPPCrypto] and talk to [wiki:elb Ethan Blanton]. Note that +designing a new protocol would **absolutely** require getting some crypto gurus +### Add Voice and Video to the SIP Plugin +There are new IM protocols all the time, and some of them even get popular. If +you have a favorite IM protocol, you can propose implementing it. The bar here +is high, though! You need to convince us not only that it is desirable and that +you can do it, but that it will be maintainable; that means that there needs to +be a plausible community to maintain it (maybe you?) after the summer is over. +Convince us that will happen in your proposal. +### Update more things to the Modern Way +We are replacing as many parts of libpurple and Pidgin with modern +library-provided functionality as feasible for 3.0. For example, we have ripped +out our custom DNS infrastructure and replaced it with GIO DNS that did not +exist when our infrastructure was written. There's still a lot left to do here. + For example, we do not use the GTK icon infrastructure everywhere. Talk to +Michael McConville about some things he identified during his 2015 Maintenance +### Tests and proof of functionality +libpurple has always had an anemic test suite. Part of this is that it's hard +to test the protocol plugins, as we cannot hammer the official servers and we do +not have our own implementations of the protocols. Even where we do (such as +XMPP), that doesn't mean the existing servers are appropriate for testing. +Propose a set of tests that you think can be applied to the codebase and +(ideally) run automatically. +[wiki:grim Gary Kramlich] has an idea for a coordinated testing plugin and +server that would effectively run scripts implementing client-server +interaction unit tests for specific functionality. The idea is that server +scripts emulating specific activities (e.g., successful login or an +authentication failure at login) would be started by a plugin in a libpurple +client, which would then attempt that activity and check for the expected +result on the client side. +Pidgin has historically led the way in instant messaging UI design. Several +Pidgin behaviors have gone on to become ubiquitous. That said, our UI has +stagnated over the years, and it seems like IM UI in general has not done much +in recent history. Propose something novel and interesting and convince us +people would want it - or at least that it's worth seeing if they will. We're +not necessarily looking for crazy or off the wall, but we **are** looking for +libpurple has a large amount of network-facing C code, which makes it a big +target. Code hardening, security auditing, and elimination of common errors +have the potential to be a big win affecting a lot of users. libpurple 3.0 also +offers us an interesting opportunity in that it **should** make possible +protocol plugins written in a VHLL, which would reduce entire classes of +vulnerabilities significantly. Propose some specific hardening or auditing +activities to improve the code quality of libpurple or a libpurple client. +### User Highlighting and Name Completion +Pidgin implements a very basic form of name completion which doesn't work with +some of the newer protocols (namely Hipchat which has a distinction between +highlight names and display names). This project is to create an interface for +protocol plugins to expose what is complete-able as well as implement an API in +libpurple that will be used by the user interfaces. +Also, some of the new protocols have added additional highlights (that should be +complete-able) and cause the user to be notified (blue tab in Pidgin). Examples +of the additional highlights are @here and @all in Hipchat, and @channel in +Many modern messenger protocols have the capability of sharing the user's +screen, with or without remote control. While this can be dangerous, viewing a +shared desktop or sharing the local desktop is interesting to many users, +particularly in managed environments. The maintainers of the purple SIPE +protocol have implemented RDP sharing over Lync, and are interested in helping +Pidgin/libpurple adopt a protocol-agnostic interface for screen sharing as well +as working with us to get XMPP screen sharing capabilities in place. +A libpurple UI that watches the status of the IM networks and reports it back to +a reporting server. The clients would attempt to stay connected to the network +and report on a set interval. Ideally there would be many of these running all +over the world all reporting to a redundant server. --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/gsoc/instructions.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,82 @@
+title: GSoC Instructions +date: 2019-01-15T04:24:21.000Z +anchor: gsoc-instructions + - developer.pidgin.im/wiki/SoCApplicationInstructions +lastmod: 2019-08-21T04:05:48.000Z +Our project has historically allowed a wide variety of applications on topics +both solicited and unsolicited, and we do not intend to change this policy. +However, every application must meet some criteria, which we have set out here, +## Applicant credentials +The application should demonstrate (by reference to previous projects, completed +coursework, job experience, description, etc.) that the applicant possesses the + * Competence in programming in the applicable language for the task at hand. + For Pidgin, Finch, or libpurple themselves this means C. + * An ability to effectively communicate, via written language, technical topics +Every application must describe the project the applicant intends to pursue. +While this may *contain* information from our ideas page or other online +sources, it must *primarily* consist of the applicant's own words and plans. It + * A description of the general task to be completed + * The applicant's estimate of the skills required to complete the task, + particularly noting those skills that will need to be developed during the + course of the project. Note that *it is absolutely fine* if the applicant, + for example, is unfamiliar with a library or protocol necessary to complete + the project, if they can demonstrate that they understand what needs to be + learned and how that learning will be approached. + * A general timeline of the project as envisioned, with a breakdown including + major milestones (e.g., "necessary UI infrastructure", "supporting changes to + protocol X", "draft specification for Y"). +Note that project applications **need not be for projects from our ideas page**. +If you have a great idea for a project, that's fine, propose it! Just be sure +to describe what it is, why you can do it, and how you plan to accomplish it +If a project or applicant has any external factors that the project should be +aware of, those must be spelled out explicitly along with an explanation of how +the project will be affected if those factors fail to come through or otherwise +interfere. For example, if a project depends on a third-party library that is +known to have limitations that may affect the success of the project, the +application should describe those limitations and how they will be mitigated if +they get in the way. Something like this would be appropriate: +> I plan to use libfoo 3.1 to implement a foo protocol plugin, but it doesn't +yet support a pluggable main loop, which libpurple requires. The libfoo +developers intend to address that, but if they do not address it by midsummer, I +will implement it myself and submit a patch upstream. If this happens, I +probably will not be able to complete the extended frobnicator API in libpurple, +but the project will still successfully speak the foo protocol by the end of the +Any potential major demands on the student's time MUST be included, such as: +finals (we know that not all school schedules line up with SoC precisely, and +this will absolutely not disqualify an application!), scheduled vacations or +holidays, existing summer commitments for work or school, potentially +conflicting job applications, etc. +## Improving your chances +After submitting a great proposal, PLEASE join us on IRC +(irc.freenode.net #pidgin) or XMPP MUC (devel@conference.pidgin.im) and discuss +your ideas with the community. Experience has shown that students who are +involved before the Summer of Code starts are more likely to stick with it and +make good progress during the summer. In addition, this provides us more and +better information about how you work with other developers and what your skill +set is. You can greatly improve your chances of selection by engaging with the --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/i18n/_index.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,6 @@
+title: Internationalization +date: 2019-01-15T05:58:46.000Z +lastmod: 2019-01-21T22:34:09.000Z --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/i18n/tips.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,98 @@
+date: 2019-01-15T05:58:46.000Z + - developer.pidgin.im/wiki/TipsForTranslators +lastmod: 2019-08-21T04:05:48.000Z +### Can I help translate? +Yes! Our translations are provided by volunteers. To improve consistency and +quality we prefer to have a designated person or group of people maintain each +If Pidgin already has a translation for your language, please contact the +designated translator(s) and ask if you can help. It's possible they are looking +for someone to take over. You can find their email address in Pidgin's +Help→Translator Information window. Or, for some languages you can try +contacting the translator(s) via +[Transifex](https://www.transifex.com/projects/p/pidgin/). +If you're unable to contact the designated translator(s) or if Pidgin does not +yet have a translation for your language, email the [translators mailing +list](https://pidgin.im/cgi-bin/mailman/listinfo/translators) and ask if anyone +is already working on translating that language. +### When should I submit a translation update? +The translations are shipped with each Pidgin release, so there is no great +advantage to submitting a translation multiple times during a release cycle. We +announce a string freeze on the [translators mailing +list](https://pidgin.im/cgi-bin/mailman/listinfo/translators) before each +release. This is a promise to you that we will not add any new strings or change +any existing ones. During this time you should finish translating any new +strings and submit a new translation to us. +### Where should I submit a translation update? +The preferred method for submitting updated translations is via +[Transifex](https://www.transifex.com/projects/p/pidgin/). If you're the +designated translator for your language then you can request to create a new +language team for your language in Transifex (and please also send an email to +the [translators mailing +list](https://pidgin.im/cgi-bin/mailman/listinfo/translators) and let us know!). +If you're opposed to using Transifex there are two other methods you could use +to send us translations. These cause slightly more overhead for us, so we try to + 1. By [creating a new ticket](https://developer.pidgin.im/newticket) and + attaching your translation file. Please provide your full name, a contact + email address, and the language and country code for your translation + 1. Or you can ask a Pidgin developer to give you commit access directly to our + version control system, then commit the translation yourself. Before you commit + a translation update, please strip line numbers from the .po file by running + `XGETTEXT_ARGS=--no-location intltool-update LL`. This makes the diff smaller + and more human-friendly. +### Translation Stats and a .pot File +You can see the current translation statistics at +https://developer.pidgin.im/l10n/. There is also a link to the nightly version +of the pidgin.pot at the bottom of the page. The .pot file includes the strings +from our Windows installer. Providing a full translation of this file +automatically ensures that Windows users will be able to have a translated +installer for their convenience. +### How Pidgin Handles Translation Updates + * Current translators are always listed in Pidgin's About dialog (Help → + About from Pidgin's Buddy List window) by name, and each translator's e-mail + address is included. Because of this, we need current translators to inform + us if their e-mail address changes. + * Translation updates for each language are accepted ***only*** from its + current translator, except when: + * The current translator has told us he/she wishes to retire from + * The current translator has not submitted an update for at least one year + and does not respond to inquiries. + * The current translator tells us to accept the update and/or treat a new + translator as a co-maintainer of the translation. + * We become aware through verifiable means that the current translator has +In short, this means that if you are not the current translator for a specific +language, we will not normally accept the translation update from you, except as +described above. We do this to minimize confusion among users--we've found over +time that some translators will choose different ways to translate a given word +or phrase, which inevitably confuses users. We apologize for any inconvenience +this may cause, but we believe that following these rules makes translations +* [Transifex](https://www.transifex.com/projects/p/pidgin/) +* [Translation statistics](https://developer.pidgin.im/l10n/) +* [Our translators mailing list](https://pidgin.im/cgi-bin/mailman/listinfo/translators) \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/release-process.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,146 @@
+date: 2019-01-14T18:49:58.000Z + - developer.pidgin.im/wiki/ReleaseProcess +lastmod: 2019-08-23T10:54:49.000Z +The release process for Pidgin is kind of tedious but is described in great +A string freeze should be announced about a week before each release, or longer +if a large number of strings have changed. This is a guarantee from the +developers to the translators that no more strings will be added or changed so +that the translators aren't trying to hit a moving target. + 1. In a clean workspace, cd into the `po/` directory and run `intltool-update + --maintain`. This will print warnings if there are files that need to be + added to either POTFILES.in or POTFILES.skip: + 1. Make sure the newest pidgin.pot exists at + [Transifex](https://www.transifex.com/projects/p/pidgin/resources/) + 1. Send an email to translators@pidgin.im and devel@pidgin.im announcing the +### Commit Updated Translations +Transifex is configured to automatically pull `pidgin.pot` from +https://developer.pidgin.im/l10n/. When it gets a new `pidgin.pot` it merges the +updates to all translations and bumps the "last updated" timestamp. Because of +this it's difficult to tell which translations have updates from translators. +Because of this we fetch and commit ***all*** translations from Transifex before +Ask Gary Kramlich or Richard Laager if you need administrative access to +project](https://www.transifex.com/projects/p/pidgin/resources/) for the + 1. Fetch and commit all translations from Transifex. + 1. `tx pull --force` - Pulls all translations from Transifex, even if local + timestamp is newer than remote. + 1. `XGETTEXT_ARGS=--no-location intltool-update --report` - Merges current + strings into translations and strips filename and line numbers to keep + 1. `find -name \*.po -exec msgfmt -cv {} \;` - Check for mismatched c-format + specifiers. These can cause crashes so look at the output carefully! + If any are found, follow these steps: + 1. Edit the translation in Transifex. + 1. Remove the string with the mismatched c-format specifiers (leave it + 1. `tx pull --force --language=NN` - Pull the updated translation from +**Other Pre-Release Steps** + 1. Make sure list of translators in `pidgin/gtkdialogs.c` matches the Transifex + translations teams. (TODO: This is labor intensive and error prone. Should find a way to automate.) + 1. Check there are no open tickets for this release milestone + 1. Make sure the date and version number are correct in `ChangeLog` and + 1. Change version number at the top of configure.ac, set + `purple_version_suffix` ***and*** `gnt_version_suffix` to `[betaN]` for + betas and `[]` for a full release + 1. Check `pidgin.spec.in`, make sure that `%define beta 7` is + commented/uncommented appropriately + 1. Run `make distcheck` and fix any problems it turns up + 1. Test a tarball to make sure everything works + 1. Verify that win32 builds succeed (including building installers). + 1. Tag the repository. The tag should have a `v` prefix. Ie: `v2.12.0`. + 1. Extract the tagged code `hg archive -r $TAG ../pidgin-$VERSION`. + 1. `cd ../pidgin-$VERSION` + 1. Run `make release`: This will perform the following steps (which can also be + done by hand at this point): + 1. `make commit-check` - Checks a few files for correctness (UTF-8 encoding, + 1. `make version-check` - Make sure version string does not contain "dev," + version is correct in ChangeLogs, and we're building from a clean hg tag. + 1. `make distcheck` - Standard automake target. Builds and verifies + tarballs. If "distcheck" fails and you're sure the failure is innocuous + then you can use `make dist`, instead. + 1. `make sign-packages` - Creates a gpg signature of the two tarballs. + 1. [wiki:BuildingWinPidgin Build on Windows] + 1. If there's a new GTK Bundle, upload the zip file to + [Sourceforge](https://sourceforge.net/projects/pidgin/files/Pidgin/) and + make sure that the `BUNDLE_SHA1SUM` in + `pidgin/win32/nsis/generate_gtk_zip.sh` is correct (this should have been + checked before `make release`). + 1. Check the authenticode signature and timestamp for the installers + (unfortunately needs to be done on a Windows box with the Platform SDK + signtool.exe verify /pa /tw pidgin-$VERSION-offline.exe + signtool.exe verify /pa /tw pidgin-$VERSION.exe + 1. Install `pidgin-$VERSION-offline.exe` and check the authenticode signature + and timestamp of pidgin.exe + signtool.exe verify /pa /tw %ProgramFiles(x86)%\Pidgin\pidgin.exe + 1. Upload the two tarballs, the two signatures, and the Windows builds to + [Sourceforge](https://sourceforge.net/projects/pidgin/files/Pidgin/) + 1. Wait a few hours and let people test. + 1. Build and upload new API docs. + 2. `scp docs/reference/libpurple/html nicobar.pidgin.im:/srv/www/developer.pidgin.im/doxygen/x.y.z/libpurple/` + 3. `scp docs/reference/pidgin/html nicobar.pidgin.im:/srv/www/developer.pidgin.im/doxygen/x.y.z/pidgin/` + 4. `scp docs/reference/finch/html nicobar.pidgin.im:/srv/www/developer.pidgin.im/doxygen/x.y.z/finch/` + 1. Update the Pidgin website + 1. Change `inc/version.inc.php` (only for full releases, not for betas) + 2. Update the ChangeLog in {{< repo link="1" name="www" >}} (this is used + by the release notification plugin) + 1. Send announcement email to announce and packagers mailing lists (sending to + announce also sends to support and devel) + * Someone must approve the posts in the + [support](https://pidgin.im/cgi-bin/mailman/admindb/support) and + [devel](https://pidgin.im/cgi-bin/mailman/admindb/devel) admin interface. + 1. Increment version number in `configure.ac` & set `purple_version_suffix` and + `gnt_version_suffix` to `devel` + 1. Update `#pidgin` topic + 1. Add new Trac Version for this release + 1. Add new Trac milestone for the next release + 1. "Complete" old milestone + 1. Bump the auto-close script to target auto-closed bugs to the new milestone + (`/srv/trac/developer.pidgin.im/mercurial_support/trac-hg-post-commit-hook.py` + 1. Update "The Road to" on WikiStart to list tickets for the new version --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/voice-and-video/_index.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,88 @@
+date: 2019-03-17T23:11:17.000Z + - developer.pidgin.im/wiki/vv +lastmod: 2019-08-23T02:53:18.000Z +Voice and video in libPurple is being worked on using +[Farstream](https://www.freedesktop.org/wiki/Software/Farstream/) (formerly +Farsight). There are a few parts to this implementation. Firstly, basic API +support needs to be added to libPurple. Then Pidgin and Finch need to be able to +initiate, participate in, and terminate the voice and video sessions. After +these two requirements are met, each protocol will require both the signaling to +be implemented (such as SIP or Jingle) and the proper Farstream plugins. +Farstream has rawudp, iceudp, and multicast transmitter plugins and an MSN +webcam plugin. Basic voice and video support for libPurple, Pidgin, and Finch +(voice support only) have been added to the "default" development branch. +XMPP/GTalk/Gmail is working, but not complete. None of the other protocols have +### Protocol Specific Information +XMPP, GTalk, and Gmail use RTP. XMPP uses Jingle. GTalk and Gmail use their own +flavor of Jingle. XMPP uses rawudp and XMPP, GTalk, and Gmail use the libnice +Farstream transmitter plugin. +Voice and video support for XMPP/GTalk was worked on for a [Summer of Code +project](/wiki/GSoC2008/VoiceAndVideo) +Sametime seems to support at least voice chat according to +[this IBM document](http://publib.boulder.ibm.com/infocenter/sametime/v8r0/index.jsp?topic=/com.ibm.help.sametime.standard.doc/st_adm_avserv_aboutvoicechat_r.html) +This is a placeholder for information regarding GG voice. +[An announcement that might be of +interest](http://www.finanznachrichten.de/nachrichten-2008-10/12104971-global-ip-solutions-ab-gadu-gadu-launches-new-version-of-instant-messenger-with-excellent-voice-powered-by-gips-004.htm) +### Building with Voice and Video +Please be familiar with compiling and installing code from source. Please also +submit any bugs you find to Trac ([TipsForBugReports](/wiki/TipsForBugReports)). +Make sure you are using the latest release of Pidgin. +Farsight 2 0.0.9 and libNice 0.0.7 are the minimum versions required, but the +newest versions you can get are best. Make sure to check Farsight2's README and +make sure you have all of the dependencies for it. gst-plugins-base is also +required for the gstreamer-interfaces-0.10 interface. Some distros call it +libgstreamer-plugins-base0.10-dev. If everything in order, the configure script +should output this line: +> Build with voice and video.... yes +For help with building, see +[Installing Pidgin](/wiki/Installing%20Pidgin#Compiling). Please carefully +read through that section and any extra information for the distribution you're +#### Codec Configuration +If a certain codec isn't working for you, you need to create an "fs-codec.conf" +file in your purple config directory. See this for the specification: +[fs-codec-list-from-keyfile](https://www.freedesktop.org/software/farstream/apidoc/farstream/farstream-libs-FsCodec.html#fs-codec-list-from-keyfile) +So, for example, if you want to disable the MPV codec you'd put this in the +- [http://www.freedesktop.org/wiki/Software/Farstream/](http://www.freedesktop.org/wiki/Software/Farstream/) +- [http://code.google.com/apis/talk/libjingle/index.html](http://code.google.com/apis/talk/libjingle/index.html) +- [http://trac.adium.im/wiki/VoiceAndVideo](http://trac.adium.im/wiki/VoiceAndVideo) +- [http://trac.adium.im/wiki/PidginVV](http://trac.adium.im/wiki/PidginVV) --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/development/voice-and-video/voice-and-video-API.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,95 @@
+title: Voice and Video API +date: 2019-03-17T23:11:17.000Z + - developer.pidgin.im/wiki/vvAPI +lastmod: 2019-08-21T04:05:48.000Z +For functions that could be per conference, session, participant, or stream, +they would have a session and a participant parameter. A NULL for either of +these would be a wildcard. +*_initiate # Creates a PurpleMedia instance. Probably have a flag as to whether it's the initiator or responder +init-media # Same as the current signal. Is triggered when *_initiate is called +init-video-src # These are all triggered when the corresponding *_get_\* functions are called +init-video-sink # The one problem I've thought of with them is that this way it wouldn't +init-audio-src # be very easy to have multiple srcs or sinks of the same type. +*_get # Returns a global instance of the PurpleMediaManager +*_get_pipeline # Returns a global pipeline to be used for all PurpleMedia instances. +*_get_video_src # These all create their respective types if they don't exist. +*_get_video_sink # Otherwise they return a src/sink-pad for the existing src/sink. +# The next three functions will probably have a type parameter (audio or video, src or sink) +*_get_plugins # Return a list of audio/video GStreamer plugins (eg. v4lsrc, alsasrc) +*_get_devices # Return a list of devices for a specific plugin +*_get_devices_autodetect # Eventually, return a list of devices detected for all supported plugins +All of these functions will have parameters for session_id and participant_id +NULL for either of these would indicate a wildcard and do this operation for all +*_add_stream # Adds a stream/session/participant to the conference, automatically creates participants and FsSessions as necessary +*_add_candidate # Adds a single candidate to the stream (May not be necessary. Could alternately add a list) +*_set_candidates # Sets a list of candidates for the stream +*_set_codecs # Sets a list of codecs for the stream +*_set_direction # Changes the direction of a stream/session/participant (could use *_add_stream to accomplish this) +*_accept # Accept a session (User clicked the accept button) +# The following two could probably be merged into one function +*_mute # Mutes an audio stream/session/participant (sending and/or receiving?) +*_pause # Pauses a video stream/session/participant (sending and/or receiving?) +*_end # Ends a stream/session/participant/conference +These signals also apply to the wildcard note above +ready # Waits for both codecs-ready to be TRUE and candidates-prepared to have fired (possibly also wait for the user to click accept if they are the responder otherwise we'll probably need an "accepted" signal) +state-changed # Has an enum state (containing such states as connected, end, and ice-specific values) Signals for stream/session/participant/conference +More signals may be necessary for different protocols. Jingle ice-udp may also +need a new-candidate and/or new-candidate-pair and a codecs-changed equivalent +I'm not certain all of these will be necessary +*_codecs # gets codecs per sessions +*_candidates # gets candidates per stream +*_streams # gets stream_ids by session or by participant +*_sessions # gets session_ids in the conference +*_participants # gets participant names by conference or by session --- a/hugo/content/drafts/_index.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
----
-title: Drafts
-date: 2019-01-14T18:49:58.000Z
-lastmod: 2019-01-21T22:34:09.000Z
----
-**THIS PAGE SHOULD NOT BE IN PRODUCTION**
\ No newline at end of file
--- a/hugo/content/drafts/download.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
----
-title: Download
-date: 2019-01-16T20:14:59.000Z
- - pidgin.im/download/windows/
- - pidgin.im/download/linux/
- - pidgin.im/download/mac/
- - pidgin.im/download/source/
-lastmod: 2019-08-23T02:53:18.000Z
----
-<!-- Never pipe curl sudo bash -->
-[![](/images/download.png)](http://sourceforge.net/projects/pidgin/files/Pidgin/2.13.0/pidgin-2.13.0.exe/download?accel_key=62%3Aa4c0d8b6-1952-11e9-abae-525400fc71c5&click_id=a4c154bc-1952-11e9-abae-525400fc71c5&source=accel)
-This version of Pidgin downloads an appropriate version of GTK. GTK is now
-installed locally for Pidgin, and not system-wide, thus Pidgin will not
-interfere with other GTK apps on your system.
-If you would like to have GTK included in the installer, we have an [offline
-installer](https://sourceforge.net/projects/pidgin/files/Pidgin/2.13.0/pidgin-2.13.0-offline.exe/download)
-that bundles everything except spell-checking dictionaries.
-We do not provide pre-built packages for Linux and Unix distributions. We
-recommend installing Pidgin using your operating system's standard package
-If your operating system doesn't provide a pre-built package, or if their
-pre-built package is out of date and you want to upgrade, then you can try
-[building from source](#Source).
-sudo apt-get install pidgin
-For a native Mac OS X experience we recommend [Adium](https://adium.im/), which
-uses libpurple (the core of Pidgin) for much of its protocol support.
-If you're sure you want to use Pidgin on OS X, you may find the packages
-provided through [Homebrew](https://brew.sh/),
-[Fink](https://finkproject.org/download/) or
-[Macports](https://www.macports.org/install.php) more convenient than compiling
-from source. Please note, *we do not provide support for issues related to
-installing Homebrew, Fink, Macports, or their packages of Pidgin*. Contact those
-projects directly with questions or concerns.
-If you're sure you want to use Pidgin on OS X and you don't want to use
-Homebrew, Fink or Macports, you can [download the Pidgin
-source](https://pidgin.im/download/source/) and compile.
-[![](/images/download.png)](https://sourceforge.net/projects/pidgin/files/Pidgin/2.13.0/pidgin-2.13.0.tar.bz2/download?accel_key=62%3Abd2389f8-1952-11e9-9fd1-5254004ddb8f&click_id=bd238c5a-1952-11e9-9fd1-5254004ddb8f&source=accel)
-This download is for the source code of Pidgin 2.13.0.
-If you want to **use** Pidgin, you should either download and use our Windows
-installer or look for pre-built packages from your operating system
-If you are looking to **modify** Pidgin, you may want to look at our
-[instructions for checking out the code from our
-repository](https://developer.pidgin.im/wiki/UsingPidginMercurial).
-We do not provide pre-built packages for Linux and Unix distributions. We
-recommend installing Pidgin using your operating system's standard package
-If your operating system doesn't provide a pre-built package, or if their
-pre-built package is out of date and you want to upgrade, then you can try
-[building from source](#Source).
-sudo apt-get install finch
--- a/hugo/content/drafts/release-process.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
----
-title: Release Process
-date: 2019-01-14T18:49:58.000Z
- - developer.pidgin.im/wiki/ReleaseProcess
-lastmod: 2019-08-23T10:54:49.000Z
----
-The release process for Pidgin is kind of tedious but is described in great
-A string freeze should be announced about a week before each release, or longer
-if a large number of strings have changed. This is a guarantee from the
-developers to the translators that no more strings will be added or changed so
-that the translators aren't trying to hit a moving target.
- 1. In a clean workspace, cd into the `po/` directory and run `intltool-update
- --maintain`. This will print warnings if there are files that need to be
- added to either POTFILES.in or POTFILES.skip:
- 1. Make sure the newest pidgin.pot exists at
- [Transifex](https://www.transifex.com/projects/p/pidgin/resources/)
- 1. Send an email to translators@pidgin.im and devel@pidgin.im announcing the
-### Commit Updated Translations
-Transifex is configured to automatically pull `pidgin.pot` from
-https://developer.pidgin.im/l10n/. When it gets a new `pidgin.pot` it merges the
-updates to all translations and bumps the "last updated" timestamp. Because of
-this it's difficult to tell which translations have updates from translators.
-Because of this we fetch and commit ***all*** translations from Transifex before
-Ask Gary Kramlich or Richard Laager if you need administrative access to
-project](https://www.transifex.com/projects/p/pidgin/resources/) for the
- 1. Fetch and commit all translations from Transifex.
- 1. `tx pull --force` - Pulls all translations from Transifex, even if local
- timestamp is newer than remote.
- 1. `XGETTEXT_ARGS=--no-location intltool-update --report` - Merges current
- strings into translations and strips filename and line numbers to keep
- 1. `find -name \*.po -exec msgfmt -cv {} \;` - Check for mismatched c-format
- specifiers. These can cause crashes so look at the output carefully!
- If any are found, follow these steps:
- 1. Edit the translation in Transifex.
- 1. Remove the string with the mismatched c-format specifiers (leave it
- 1. `tx pull --force --language=NN` - Pull the updated translation from
-**Other Pre-Release Steps**
- 1. Make sure list of translators in `pidgin/gtkdialogs.c` matches the Transifex
- translations teams. (TODO: This is labor intensive and error prone. Should find a way to automate.)
- 1. Check there are no open tickets for this release milestone
- 1. Make sure the date and version number are correct in `ChangeLog` and
- 1. Change version number at the top of configure.ac, set
- `purple_version_suffix` ***and*** `gnt_version_suffix` to `[betaN]` for
- betas and `[]` for a full release
- 1. Check `pidgin.spec.in`, make sure that `%define beta 7` is
- commented/uncommented appropriately
- 1. Run `make distcheck` and fix any problems it turns up
- 1. Test a tarball to make sure everything works
- 1. Verify that win32 builds succeed (including building installers).
- 1. Tag the repository. The tag should have a `v` prefix. Ie: `v2.12.0`.
- 1. Extract the tagged code `hg archive -r $TAG ../pidgin-$VERSION`.
- 1. `cd ../pidgin-$VERSION`
- 1. Run `make release`: This will perform the following steps (which can also be
- done by hand at this point):
- 1. `make commit-check` - Checks a few files for correctness (UTF-8 encoding,
- 1. `make version-check` - Make sure version string does not contain "dev,"
- version is correct in ChangeLogs, and we're building from a clean hg tag.
- 1. `make distcheck` - Standard automake target. Builds and verifies
- tarballs. If "distcheck" fails and you're sure the failure is innocuous
- then you can use `make dist`, instead.
- 1. `make sign-packages` - Creates a gpg signature of the two tarballs.
- 1. [wiki:BuildingWinPidgin Build on Windows]
- 1. If there's a new GTK Bundle, upload the zip file to
- [Sourceforge](https://sourceforge.net/projects/pidgin/files/Pidgin/) and
- make sure that the `BUNDLE_SHA1SUM` in
- `pidgin/win32/nsis/generate_gtk_zip.sh` is correct (this should have been
- checked before `make release`).
- 1. Check the authenticode signature and timestamp for the installers
- (unfortunately needs to be done on a Windows box with the Platform SDK
- signtool.exe verify /pa /tw pidgin-$VERSION-offline.exe
- signtool.exe verify /pa /tw pidgin-$VERSION.exe
- 1. Install `pidgin-$VERSION-offline.exe` and check the authenticode signature
- and timestamp of pidgin.exe
- signtool.exe verify /pa /tw %ProgramFiles(x86)%\Pidgin\pidgin.exe
- 1. Upload the two tarballs, the two signatures, and the Windows builds to
- [Sourceforge](https://sourceforge.net/projects/pidgin/files/Pidgin/)
- 1. Wait a few hours and let people test.
- 1. Build and upload new API docs.
- 2. `scp docs/reference/libpurple/html nicobar.pidgin.im:/srv/www/developer.pidgin.im/doxygen/x.y.z/libpurple/`
- 3. `scp docs/reference/pidgin/html nicobar.pidgin.im:/srv/www/developer.pidgin.im/doxygen/x.y.z/pidgin/`
- 4. `scp docs/reference/finch/html nicobar.pidgin.im:/srv/www/developer.pidgin.im/doxygen/x.y.z/finch/`
- 1. Update the Pidgin website
- 1. Change `inc/version.inc.php` (only for full releases, not for betas)
- 2. Update the ChangeLog in {{< repo link="1" name="www" >}} (this is used
- by the release notification plugin)
- 1. Send announcement email to announce and packagers mailing lists (sending to
- announce also sends to support and devel)
- * Someone must approve the posts in the
- [support](https://pidgin.im/cgi-bin/mailman/admindb/support) and
- [devel](https://pidgin.im/cgi-bin/mailman/admindb/devel) admin interface.
- 1. Increment version number in `configure.ac` & set `purple_version_suffix` and
- `gnt_version_suffix` to `devel`
- 1. Update `#pidgin` topic
- 1. Add new Trac Version for this release
- 1. Add new Trac milestone for the next release
- 1. "Complete" old milestone
- 1. Bump the auto-close script to target auto-closed bugs to the new milestone
- (`/srv/trac/developer.pidgin.im/mercurial_support/trac-hg-post-commit-hook.py`
- 1. Update "The Road to" on WikiStart to list tickets for the new version
--- a/hugo/content/drafts/voice-and-video-API.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
----
-title: Voice and Video API
-date: 2019-03-17T23:11:17.000Z
- - developer.pidgin.im/wiki/vvAPI
-lastmod: 2019-08-21T04:05:48.000Z
----
-For functions that could be per conference, session, participant, or stream,
-they would have a session and a participant parameter. A NULL for either of
-these would be a wildcard.
-*_initiate # Creates a PurpleMedia instance. Probably have a flag as to whether it's the initiator or responder
-init-media # Same as the current signal. Is triggered when *_initiate is called
-init-video-src # These are all triggered when the corresponding *_get_\* functions are called
-init-video-sink # The one problem I've thought of with them is that this way it wouldn't
-init-audio-src # be very easy to have multiple srcs or sinks of the same type.
-*_get # Returns a global instance of the PurpleMediaManager
-*_get_pipeline # Returns a global pipeline to be used for all PurpleMedia instances.
-*_get_video_src # These all create their respective types if they don't exist.
-*_get_video_sink # Otherwise they return a src/sink-pad for the existing src/sink.
-# The next three functions will probably have a type parameter (audio or video, src or sink)
-*_get_plugins # Return a list of audio/video GStreamer plugins (eg. v4lsrc, alsasrc)
-*_get_devices # Return a list of devices for a specific plugin
-*_get_devices_autodetect # Eventually, return a list of devices detected for all supported plugins
-All of these functions will have parameters for session_id and participant_id
-NULL for either of these would indicate a wildcard and do this operation for all
-*_add_stream # Adds a stream/session/participant to the conference, automatically creates participants and FsSessions as necessary
-*_add_candidate # Adds a single candidate to the stream (May not be necessary. Could alternately add a list)
-*_set_candidates # Sets a list of candidates for the stream
-*_set_codecs # Sets a list of codecs for the stream
-*_set_direction # Changes the direction of a stream/session/participant (could use *_add_stream to accomplish this)
-*_accept # Accept a session (User clicked the accept button)
-# The following two could probably be merged into one function
-*_mute # Mutes an audio stream/session/participant (sending and/or receiving?)
-*_pause # Pauses a video stream/session/participant (sending and/or receiving?)
-*_end # Ends a stream/session/participant/conference
-These signals also apply to the wildcard note above
-ready # Waits for both codecs-ready to be TRUE and candidates-prepared to have fired (possibly also wait for the user to click accept if they are the responder otherwise we'll probably need an "accepted" signal)
-state-changed # Has an enum state (containing such states as connected, end, and ice-specific values) Signals for stream/session/participant/conference
-More signals may be necessary for different protocols. Jingle ice-udp may also
-need a new-candidate and/or new-candidate-pair and a codecs-changed equivalent
-I'm not certain all of these will be necessary
-*_codecs # gets codecs per sessions
-*_candidates # gets candidates per stream
-*_streams # gets stream_ids by session or by participant
-*_sessions # gets session_ids in the conference
-*_participants # gets participant names by conference or by session
--- a/hugo/content/drafts/voice-and-video.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
----
-title: Voice and Video
-date: 2019-03-17T23:11:17.000Z
- - developer.pidgin.im/wiki/vv
-lastmod: 2019-08-23T02:53:18.000Z
----
-Voice and video in libPurple is being worked on using
-[Farstream](https://www.freedesktop.org/wiki/Software/Farstream/) (formerly
-Farsight). There are a few parts to this implementation. Firstly, basic API
-support needs to be added to libPurple. Then Pidgin and Finch need to be able to
-initiate, participate in, and terminate the voice and video sessions. After
-these two requirements are met, each protocol will require both the signaling to
-be implemented (such as SIP or Jingle) and the proper Farstream plugins.
-Farstream has rawudp, iceudp, and multicast transmitter plugins and an MSN
-webcam plugin. Basic voice and video support for libPurple, Pidgin, and Finch
-(voice support only) have been added to the "default" development branch.
-XMPP/GTalk/Gmail is working, but not complete. None of the other protocols have
-### Protocol Specific Information
-XMPP, GTalk, and Gmail use RTP. XMPP uses Jingle. GTalk and Gmail use their own
-flavor of Jingle. XMPP uses rawudp and XMPP, GTalk, and Gmail use the libnice
-Farstream transmitter plugin.
-Voice and video support for XMPP/GTalk was worked on for a [Summer of Code
-project](/wiki/GSoC2008/VoiceAndVideo)
-Sametime seems to support at least voice chat according to
-[this IBM document](http://publib.boulder.ibm.com/infocenter/sametime/v8r0/index.jsp?topic=/com.ibm.help.sametime.standard.doc/st_adm_avserv_aboutvoicechat_r.html)
-This is a placeholder for information regarding GG voice.
-[An announcement that might be of
-interest](http://www.finanznachrichten.de/nachrichten-2008-10/12104971-global-ip-solutions-ab-gadu-gadu-launches-new-version-of-instant-messenger-with-excellent-voice-powered-by-gips-004.htm)
-### Building with Voice and Video
-Please be familiar with compiling and installing code from source. Please also
-submit any bugs you find to Trac ([TipsForBugReports](/wiki/TipsForBugReports)).
-Make sure you are using the latest release of Pidgin.
-Farsight 2 0.0.9 and libNice 0.0.7 are the minimum versions required, but the
-newest versions you can get are best. Make sure to check Farsight2's README and
-make sure you have all of the dependencies for it. gst-plugins-base is also
-required for the gstreamer-interfaces-0.10 interface. Some distros call it
-libgstreamer-plugins-base0.10-dev. If everything in order, the configure script
-should output this line:
-> Build with voice and video.... yes
-For help with building, see
-[Installing Pidgin](/wiki/Installing%20Pidgin#Compiling). Please carefully
-read through that section and any extra information for the distribution you're
-#### Codec Configuration
-If a certain codec isn't working for you, you need to create an "fs-codec.conf"
-file in your purple config directory. See this for the specification:
-[fs-codec-list-from-keyfile](https://www.freedesktop.org/software/farstream/apidoc/farstream/farstream-libs-FsCodec.html#fs-codec-list-from-keyfile)
-So, for example, if you want to disable the MPV codec you'd put this in the
-- [http://www.freedesktop.org/wiki/Software/Farstream/](http://www.freedesktop.org/wiki/Software/Farstream/)
-- [http://code.google.com/apis/talk/libjingle/index.html](http://code.google.com/apis/talk/libjingle/index.html)
-- [http://trac.adium.im/wiki/VoiceAndVideo](http://trac.adium.im/wiki/VoiceAndVideo)
-- [http://trac.adium.im/wiki/PidginVV](http://trac.adium.im/wiki/PidginVV)
--- a/hugo/content/gsoc/_index.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
----
-title: Google Summer of Code
-date: 2019-01-15T03:38:25.000Z
- - developer.pidgin.im/wiki/SummerOfCode2007
- - developer.pidgin.im/wiki/SummerOfCode2008
- - developer.pidgin.im/wiki/SummerOfCode2009
- - developer.pidgin.im/wiki/SummerOfCode2010
- - developer.pidgin.im/wiki/SummerOfCode2011
- - developer.pidgin.im/wiki/SummerOfCode2012
- - developer.pidgin.im/wiki/SummerOfCode2013
- - developer.pidgin.im/wiki/SummerOfCode2015
-lastmod: 2019-01-21T22:34:09.000Z
----
-Pidgin has been involved in the
-[Google Summer of Code](https://summerofcode.withgoogle.com/) for many years
-since it was started. This section contains a running list of project ideas as
-well as some documentation on our participation for the years we participated.
-You can find our current list of ideas on the [Ideas](/gsoc/ideas) page. If
-you have any ideas, feel free to email the mailing list or open a pull request.
-## Instructions for Applications
-We have some detailed directions on how to make yourself stand out from the
-crowd on the [instructions](/gsoc/instructions) page.
--- a/hugo/content/gsoc/ideas.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
----
-title: GSoC Ideas
-date: 2019-01-11T03:13:47.000Z
- - 'https://developer.pidgin.im/wiki/SoCIdeas'
-lastmod: 2019-08-22T04:39:28.000Z
----
-These ideas are starting points for Google Summer of Code projects that the
-Pidgin, Finch, and libpurple community has agreed are generally desirable and
-high impact. For smaller projects, community-submitted ideas, or projects that
-for some reason we are not sure are in scope for SoC, please see
-[wiki:SoCAndBountyIdeas]. (You can submit SoC proposals with those ideas, or
-your own ideas, as well, you just have to convince us they're suitable!)
-## Protocol-specific ideas
-libpurple supports no native end-to-end encryption over XMPP. There are several
-XEP's for this, and there is absolutely room for a new protocol that is
-better/easier/more secure/whatever than the existing proposals. See
-[wiki:EndToEndXMPPCrypto] and talk to [wiki:elb Ethan Blanton]. Note that
-designing a new protocol would **absolutely** require getting some crypto gurus
-### Add Voice and Video to the SIP Plugin
-There are new IM protocols all the time, and some of them even get popular. If
-you have a favorite IM protocol, you can propose implementing it. The bar here
-is high, though! You need to convince us not only that it is desirable and that
-you can do it, but that it will be maintainable; that means that there needs to
-be a plausible community to maintain it (maybe you?) after the summer is over.
-Convince us that will happen in your proposal.
-### Update more things to the Modern Way
-We are replacing as many parts of libpurple and Pidgin with modern
-library-provided functionality as feasible for 3.0. For example, we have ripped
-out our custom DNS infrastructure and replaced it with GIO DNS that did not
-exist when our infrastructure was written. There's still a lot left to do here.
- For example, we do not use the GTK icon infrastructure everywhere. Talk to
-Michael McConville about some things he identified during his 2015 Maintenance
-### Tests and proof of functionality
-libpurple has always had an anemic test suite. Part of this is that it's hard
-to test the protocol plugins, as we cannot hammer the official servers and we do
-not have our own implementations of the protocols. Even where we do (such as
-XMPP), that doesn't mean the existing servers are appropriate for testing.
-Propose a set of tests that you think can be applied to the codebase and
-(ideally) run automatically.
-[wiki:grim Gary Kramlich] has an idea for a coordinated testing plugin and
-server that would effectively run scripts implementing client-server
-interaction unit tests for specific functionality. The idea is that server
-scripts emulating specific activities (e.g., successful login or an
-authentication failure at login) would be started by a plugin in a libpurple
-client, which would then attempt that activity and check for the expected
-result on the client side.
-Pidgin has historically led the way in instant messaging UI design. Several
-Pidgin behaviors have gone on to become ubiquitous. That said, our UI has
-stagnated over the years, and it seems like IM UI in general has not done much
-in recent history. Propose something novel and interesting and convince us
-people would want it - or at least that it's worth seeing if they will. We're
-not necessarily looking for crazy or off the wall, but we **are** looking for
-libpurple has a large amount of network-facing C code, which makes it a big
-target. Code hardening, security auditing, and elimination of common errors
-have the potential to be a big win affecting a lot of users. libpurple 3.0 also
-offers us an interesting opportunity in that it **should** make possible
-protocol plugins written in a VHLL, which would reduce entire classes of
-vulnerabilities significantly. Propose some specific hardening or auditing
-activities to improve the code quality of libpurple or a libpurple client.
-### User Highlighting and Name Completion
-Pidgin implements a very basic form of name completion which doesn't work with
-some of the newer protocols (namely Hipchat which has a distinction between
-highlight names and display names). This project is to create an interface for
-protocol plugins to expose what is complete-able as well as implement an API in
-libpurple that will be used by the user interfaces.
-Also, some of the new protocols have added additional highlights (that should be
-complete-able) and cause the user to be notified (blue tab in Pidgin). Examples
-of the additional highlights are @here and @all in Hipchat, and @channel in
-Many modern messenger protocols have the capability of sharing the user's
-screen, with or without remote control. While this can be dangerous, viewing a
-shared desktop or sharing the local desktop is interesting to many users,
-particularly in managed environments. The maintainers of the purple SIPE
-protocol have implemented RDP sharing over Lync, and are interested in helping
-Pidgin/libpurple adopt a protocol-agnostic interface for screen sharing as well
-as working with us to get XMPP screen sharing capabilities in place.
-A libpurple UI that watches the status of the IM networks and reports it back to
-a reporting server. The clients would attempt to stay connected to the network
-and report on a set interval. Ideally there would be many of these running all
-over the world all reporting to a redundant server.
--- a/hugo/content/gsoc/instructions.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
----
-title: GSoC Instructions
-date: 2019-01-15T04:24:21.000Z
-anchor: gsoc-instructions
- - developer.pidgin.im/wiki/SoCApplicationInstructions
-lastmod: 2019-08-21T04:05:48.000Z
----
-Our project has historically allowed a wide variety of applications on topics
-both solicited and unsolicited, and we do not intend to change this policy.
-However, every application must meet some criteria, which we have set out here,
-## Applicant credentials
-The application should demonstrate (by reference to previous projects, completed
-coursework, job experience, description, etc.) that the applicant possesses the
- * Competence in programming in the applicable language for the task at hand.
- For Pidgin, Finch, or libpurple themselves this means C.
- * An ability to effectively communicate, via written language, technical topics
-Every application must describe the project the applicant intends to pursue.
-While this may *contain* information from our ideas page or other online
-sources, it must *primarily* consist of the applicant's own words and plans. It
- * A description of the general task to be completed
- * The applicant's estimate of the skills required to complete the task,
- particularly noting those skills that will need to be developed during the
- course of the project. Note that *it is absolutely fine* if the applicant,
- for example, is unfamiliar with a library or protocol necessary to complete
- the project, if they can demonstrate that they understand what needs to be
- learned and how that learning will be approached.
- * A general timeline of the project as envisioned, with a breakdown including
- major milestones (e.g., "necessary UI infrastructure", "supporting changes to
- protocol X", "draft specification for Y").
-Note that project applications **need not be for projects from our ideas page**.
-If you have a great idea for a project, that's fine, propose it! Just be sure
-to describe what it is, why you can do it, and how you plan to accomplish it
-If a project or applicant has any external factors that the project should be
-aware of, those must be spelled out explicitly along with an explanation of how
-the project will be affected if those factors fail to come through or otherwise
-interfere. For example, if a project depends on a third-party library that is
-known to have limitations that may affect the success of the project, the
-application should describe those limitations and how they will be mitigated if
-they get in the way. Something like this would be appropriate:
-> I plan to use libfoo 3.1 to implement a foo protocol plugin, but it doesn't
-yet support a pluggable main loop, which libpurple requires. The libfoo
-developers intend to address that, but if they do not address it by midsummer, I
-will implement it myself and submit a patch upstream. If this happens, I
-probably will not be able to complete the extended frobnicator API in libpurple,
-but the project will still successfully speak the foo protocol by the end of the
-Any potential major demands on the student's time MUST be included, such as:
-finals (we know that not all school schedules line up with SoC precisely, and
-this will absolutely not disqualify an application!), scheduled vacations or
-holidays, existing summer commitments for work or school, potentially
-conflicting job applications, etc.
-## Improving your chances
-After submitting a great proposal, PLEASE join us on IRC
-(irc.freenode.net #pidgin) or XMPP MUC (devel@conference.pidgin.im) and discuss
-your ideas with the community. Experience has shown that students who are
-involved before the Summer of Code starts are more likely to stick with it and
-make good progress during the summer. In addition, this provides us more and
-better information about how you work with other developers and what your skill
-set is. You can greatly improve your chances of selection by engaging with the
--- a/hugo/content/help/_index.md Mon Dec 09 22:40:33 2019 -0600
+++ b/hugo/content/help/_index.md Sun Dec 29 19:05:33 2019 +0000
@@ -2,6 +2,7 @@
date: 2019-05-20T03:45:13.000Z
lastmod: 2019-08-21T04:05:48.000Z
We get asked questions about Pidgin a lot. Many of those questions are actually
--- a/hugo/content/help/contactus.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
----
-title: Contact Us
-date: 2019-06-04T04:02:49.000Z
-lastmod: 2019-08-21T04:05:48.000Z
----
-If you'd like to contact the Pidgin team, please take a look at our
-[Community](/community) page for resources that will be helpful to you!
\ No newline at end of file
--- a/hugo/content/i18n/_index.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
----
-title: Internationalization
-date: 2019-01-15T05:58:46.000Z
-lastmod: 2019-01-21T22:34:09.000Z
----
--- a/hugo/content/i18n/tips.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
----
-title: Tips
-date: 2019-01-15T05:58:46.000Z
- - developer.pidgin.im/wiki/TipsForTranslators
-lastmod: 2019-08-21T04:05:48.000Z
----
-### Can I help translate?
-Yes! Our translations are provided by volunteers. To improve consistency and
-quality we prefer to have a designated person or group of people maintain each
-If Pidgin already has a translation for your language, please contact the
-designated translator(s) and ask if you can help. It's possible they are looking
-for someone to take over. You can find their email address in Pidgin's
-Help→Translator Information window. Or, for some languages you can try
-contacting the translator(s) via
-[Transifex](https://www.transifex.com/projects/p/pidgin/).
-If you're unable to contact the designated translator(s) or if Pidgin does not
-yet have a translation for your language, email the [translators mailing
-list](https://pidgin.im/cgi-bin/mailman/listinfo/translators) and ask if anyone
-is already working on translating that language.
-### When should I submit a translation update?
-The translations are shipped with each Pidgin release, so there is no great
-advantage to submitting a translation multiple times during a release cycle. We
-announce a string freeze on the [translators mailing
-list](https://pidgin.im/cgi-bin/mailman/listinfo/translators) before each
-release. This is a promise to you that we will not add any new strings or change
-any existing ones. During this time you should finish translating any new
-strings and submit a new translation to us.
-### Where should I submit a translation update?
-The preferred method for submitting updated translations is via
-[Transifex](https://www.transifex.com/projects/p/pidgin/). If you're the
-designated translator for your language then you can request to create a new
-language team for your language in Transifex (and please also send an email to
-the [translators mailing
-list](https://pidgin.im/cgi-bin/mailman/listinfo/translators) and let us know!).
-If you're opposed to using Transifex there are two other methods you could use
-to send us translations. These cause slightly more overhead for us, so we try to
- 1. By [creating a new ticket](https://developer.pidgin.im/newticket) and
- attaching your translation file. Please provide your full name, a contact
- email address, and the language and country code for your translation
- 1. Or you can ask a Pidgin developer to give you commit access directly to our
- version control system, then commit the translation yourself. Before you commit
- a translation update, please strip line numbers from the .po file by running
- `XGETTEXT_ARGS=--no-location intltool-update LL`. This makes the diff smaller
- and more human-friendly.
-### Translation Stats and a .pot File
-You can see the current translation statistics at
-https://developer.pidgin.im/l10n/. There is also a link to the nightly version
-of the pidgin.pot at the bottom of the page. The .pot file includes the strings
-from our Windows installer. Providing a full translation of this file
-automatically ensures that Windows users will be able to have a translated
-installer for their convenience.
-### How Pidgin Handles Translation Updates
- * Current translators are always listed in Pidgin's About dialog (Help →
- About from Pidgin's Buddy List window) by name, and each translator's e-mail
- address is included. Because of this, we need current translators to inform
- us if their e-mail address changes.
- * Translation updates for each language are accepted ***only*** from its
- current translator, except when:
- * The current translator has told us he/she wishes to retire from
- * The current translator has not submitted an update for at least one year
- and does not respond to inquiries.
- * The current translator tells us to accept the update and/or treat a new
- translator as a co-maintainer of the translation.
- * We become aware through verifiable means that the current translator has
-In short, this means that if you are not the current translator for a specific
-language, we will not normally accept the translation update from you, except as
-described above. We do this to minimize confusion among users--we've found over
-time that some translators will choose different ways to translate a given word
-or phrase, which inevitably confuses users. We apologize for any inconvenience
-this may cause, but we believe that following these rules makes translations
-* [Transifex](https://www.transifex.com/projects/p/pidgin/)
-* [Translation statistics](https://developer.pidgin.im/l10n/)
-* [Our translators mailing list](https://pidgin.im/cgi-bin/mailman/listinfo/translators)
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/install/_index.md Sun Dec 29 19:05:33 2019 +0000
@@ -0,0 +1,107 @@
+date: 2019-01-16T20:14:59.000Z + - pidgin.im/download/windows/ + - pidgin.im/download/linux/ + - pidgin.im/download/mac/ + - pidgin.im/download/source/ +lastmod: 2019-08-23T02:53:18.000Z +<!-- Never pipe curl sudo bash --> +[![](/images/download.png)](http://sourceforge.net/projects/pidgin/files/Pidgin/2.13.0/pidgin-2.13.0.exe/download?accel_key=62%3Aa4c0d8b6-1952-11e9-abae-525400fc71c5&click_id=a4c154bc-1952-11e9-abae-525400fc71c5&source=accel) +This version of Pidgin downloads an appropriate version of GTK. GTK is now +installed locally for Pidgin, and not system-wide, thus Pidgin will not +interfere with other GTK apps on your system. +If you would like to have GTK included in the installer, we have an [offline +installer](https://sourceforge.net/projects/pidgin/files/Pidgin/2.13.0/pidgin-2.13.0-offline.exe/download) +that bundles everything except spell-checking dictionaries. +We do not provide pre-built packages for Linux and Unix distributions. We +recommend installing Pidgin using your operating system's standard package +If your operating system doesn't provide a pre-built package, or if their +pre-built package is out of date and you want to upgrade, then you can try +[building from source](#Source). +sudo apt-get install pidgin +For a native Mac OS X experience we recommend [Adium](https://adium.im/), which +uses libpurple (the core of Pidgin) for much of its protocol support. +If you're sure you want to use Pidgin on OS X, you may find the packages +provided through [Homebrew](https://brew.sh/), +[Fink](https://finkproject.org/download/) or +[Macports](https://www.macports.org/install.php) more convenient than compiling +from source. Please note, *we do not provide support for issues related to +installing Homebrew, Fink, Macports, or their packages of Pidgin*. Contact those +projects directly with questions or concerns. +If you're sure you want to use Pidgin on OS X and you don't want to use +Homebrew, Fink or Macports, you can [download the Pidgin +source](https://pidgin.im/download/source/) and compile. +[![](/images/download.png)](https://sourceforge.net/projects/pidgin/files/Pidgin/2.13.0/pidgin-2.13.0.tar.bz2/download?accel_key=62%3Abd2389f8-1952-11e9-9fd1-5254004ddb8f&click_id=bd238c5a-1952-11e9-9fd1-5254004ddb8f&source=accel) +This download is for the source code of Pidgin 2.13.0. +If you want to **use** Pidgin, you should either download and use our Windows +installer or look for pre-built packages from your operating system +If you are looking to **modify** Pidgin, you may want to look at our +[instructions for checking out the code from our +repository](https://developer.pidgin.im/wiki/UsingPidginMercurial). +We do not provide pre-built packages for Linux and Unix distributions. We +recommend installing Pidgin using your operating system's standard package +If your operating system doesn't provide a pre-built package, or if their +pre-built package is out of date and you want to upgrade, then you can try +[building from source](#Source). +sudo apt-get install finch --- a/hugo/content/philosophy/_index.md Mon Dec 09 22:40:33 2019 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
----
-title: Philosophy and Goals
-date: 2019-08-22T03:45:43.000Z
-lastmod: 2019-08-22T03:45:43.000Z
----
-Pidgin has a number of design goals that we consider our philosophy. For
-### Protocol/Service Agnosticism
-We believe that once all your accounts are configured in Pidgin, it shouldn't
-matter what protocol or service is being used when messaging a contact. The
-purpose of using Pidgin is to communicate; the communication itself is more
-important than the gritty details of how it's happening. This is exemplified
-as "I want to talk to John" versus "I want to talk to John on his XMPP account
-at jabber.org." It's our belief that "I want to talk to John" is our users'
-expectation, and we aim to make Pidgin that simple.
-Pidgin, as a project, has overarching goals for the future of the project:
-The main protocol-related goal for the Pidgin project is to remove support for
-the proprietary services from the libpurple source code and have them as
-separate plugins. This protects the core project from some legal issues and
-allows much faster response to protocol-level changes if the owners of a given
-service make changes that break the plugin. There is no specific timeline to do
-this; we simply aim to do it at some point in the future.
--- a/hugo/content/plugins/_index.md Mon Dec 09 22:40:33 2019 -0600
+++ b/hugo/content/plugins/_index.md Sun Dec 29 19:05:33 2019 +0000
@@ -3,6 +3,7 @@
date: 2019-01-11T05:44:25.000Z
lastmod: 2019-04-17T01:38:41.000Z