pidgin/nest

[Minor] Content Jiggle

23 months ago, Jason
30dccbc81b73
[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.
  • +7 -0
    hugo/content/about/_index.md
  • +32 -0
    hugo/content/about/community.md
  • +30 -0
    hugo/content/about/philosophy.md
  • +0 -103
    hugo/content/building/2.x.y/_index.md
  • +0 -421
    hugo/content/building/2.x.y/windows.md
  • +0 -11
    hugo/content/building/3.0.0/_index.md
  • +0 -18
    hugo/content/building/_index.md
  • +0 -32
    hugo/content/community/_index.md
  • +0 -42
    hugo/content/contributing/_index.md
  • +0 -68
    hugo/content/contributing/mercurial.md
  • +1 -1
    hugo/content/development/_index.md
  • +103 -0
    hugo/content/development/building/2.x.y/_index.md
  • +421 -0
    hugo/content/development/building/2.x.y/windows.md
  • +11 -0
    hugo/content/development/building/3.0.0/_index.md
  • +18 -0
    hugo/content/development/building/_index.md
  • +42 -0
    hugo/content/development/contributing/_index.md
  • +68 -0
    hugo/content/development/contributing/mercurial.md
  • +36 -0
    hugo/content/development/gsoc/_index.md
  • +143 -0
    hugo/content/development/gsoc/ideas.md
  • +82 -0
    hugo/content/development/gsoc/instructions.md
  • +6 -0
    hugo/content/development/i18n/_index.md
  • +98 -0
    hugo/content/development/i18n/tips.md
  • +146 -0
    hugo/content/development/release-process.md
  • +88 -0
    hugo/content/development/voice-and-video/_index.md
  • +95 -0
    hugo/content/development/voice-and-video/voice-and-video-API.md
  • +0 -8
    hugo/content/drafts/_index.md
  • +0 -107
    hugo/content/drafts/download.md
  • +0 -146
    hugo/content/drafts/release-process.md
  • +0 -95
    hugo/content/drafts/voice-and-video-API.md
  • +0 -88
    hugo/content/drafts/voice-and-video.md
  • +0 -35
    hugo/content/gsoc/_index.md
  • +0 -143
    hugo/content/gsoc/ideas.md
  • +0 -82
    hugo/content/gsoc/instructions.md
  • +1 -0
    hugo/content/help/_index.md
  • +0 -10
    hugo/content/help/contactus.md
  • +0 -6
    hugo/content/i18n/_index.md
  • +0 -98
    hugo/content/i18n/tips.md
  • +107 -0
    hugo/content/install/_index.md
  • +0 -30
    hugo/content/philosophy/_index.md
  • +1 -0
    hugo/content/plugins/_index.md
  • --- /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 @@
    +---
    +title: "About"
    +date: 2019-12-28T23:57:14Z
    +replaces: []
    +weight: 20
    +---
    +
    --- /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 @@
    +---
    +title: Community
    +date: 2019-05-19T17:51:27.000Z
    +anchor: community
    +weight: 100
    +replaces:
    + - 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.
    +
    +## E-mail
    +The Pidgin team can be reached via mailing lists for support and development
    +information.
    +
    + - [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)
    +
    +## Chat
    +If you prefer chat-based contact, the Pidgin community has two primary chat
    +resources:
    +
    + - `#pidgin` on `irc.freenode.net` on IRC
    + - `devel@conference.pidgin.im`, a Jabber/XMPP MUC (Multi-User Chat)
    +
    +## Helping
    +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
    +replaces: []
    +lastmod: 2019-08-22T03:45:43.000Z
    +---
    +
    +## Philosophy
    +Pidgin has a number of design goals that we consider our philosophy. For
    +example:
    +
    +### 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.
    +
    +## Project Goals
    +Pidgin, as a project, has overarching goals for the future of the project:
    +
    +### Protocols/Services
    +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
    -anchor: 2.x.y
    -lastmod: 2019-09-04T03:20:39.000Z
    ----
    -
    -# Building
    -
    -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
    -manager.
    -
    -### 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
    -most applications:
    -
    - $ tar xjvf pidgin-2.x.y.tar.bz2
    - $ cd pidgin-2.x.y
    - $ ./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
    -version of automake.
    -
    - 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
    -question.
    -
    -## 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
    -default.
    -
    -## 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
    -replaces:
    - - 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
    -both Cygwin and MSYS2.
    -
    -#### Cygwin
    -
    -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.
    -
    - * bash
    - * bzip2
    - * **ca-certificates**
    - * coreutils
    - * gawk
    - * **gnupg**
    - * grep
    - * gzip
    - * **libiconv**
    - * **make**
    - * **patch**
    - * sed
    - * tar
    - * **unzip**
    - * **wget**
    - * **zip**
    -
    -#### MSYS2
    -
    -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
    -following command:
    -
    -```sh
    -$ pacman -Sy ca-certificates gawk grep make patch tar unzip wget zip
    -```
    -
    -### Setup
    -
    -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:
    -
    -```plain
    -pidgin-dev/
    -├── pidgin-2.13.0
    -└── win32-dev
    -```
    -
    -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.
    -
    -#### Customizing
    -
    -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
    -flags.
    -
    -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
    -exist by default.
    -
    -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
    -information.
    -
    -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.
    -
    -## Build Dependencies
    -
    -### Compiler
    -
    -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
    -will automate it.
    -
    -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).
    -
    -Download the following:
    -
    -* [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:
    -
    -```sh
    -cd $PIDGIN_DEV_ROOT/win32-dev/mingw-4.7.2
    -mkdir libsspsrctmp
    -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 .
    -rm -r libsspsrctmp
    -```
    -
    -Finally, set the MinGW gcc's bin directory to be before Cygwin's in your
    -`PATH`.
    -
    -For example (You should add the following to your `~/.bashrc` file, which is
    -found in `C:\cygwin\home\YourUsername\` by default):
    -
    -```sh
    -export PATH=/cygdrive/c/devel/pidgin-devel/win32-dev/mingw-4.7.2/bin:$PATH
    -```
    -
    -### Installing
    -
    -#### GTK
    -
    -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
    -this directory).
    -
    -Visit the [GTK website](https://www.gtk.org/download/windows.php) for official
    -binary and source releases.
    -
    -#### gettext
    -
    -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)
    -and
    -[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
    -create this directory).
    -
    -#### Libxml2
    -
    -Download and extract
    -[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`.
    -
    -#### Perl 5.20
    -
    -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/).
    -
    -Download the
    -[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
    -the right perl.exe.
    -
    -#### GtkSpell
    -
    -Download and extract
    -[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
    -
    -Download and extract
    -[enchant_1.6.0_win32.zip](https://data.imfreedom.org/pidgin/win32/enchant_1.6.0_win32.zip)
    -to `$PIDGIN_DEV_ROOT/win32-dev/`.
    -
    -#### Mozilla NSS
    -
    -Download and extract
    -[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
    -
    -Download and extract
    -[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
    -
    -Download and extract
    -[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
    -
    -Download and extract
    -[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
    -
    -Download and extract
    -[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
    -
    -Download and extract
    -[pidgin-inst-deps-20130214.tar.gz](https://data.imfreedom.org/pidgin/win32/pidgin-inst-deps-20130214.tar.gz)
    -to `$PIDGIN_DEV_ROOT/win32-dev`.
    -
    -## Build
    -
    -### Building Pidgin
    -
    -The Windows build will take a while, but you can start it with the following
    -command:
    -
    -```sh
    -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
    -installation.
    -
    -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
    -following:
    -
    -```
    -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
    -the following:
    -
    -```
    -#Disable Signing
    -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.
    -
    -```sh
    -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.
    -
    -## Debugging
    -
    -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.
    -
    -## Cross Compiling
    -
    -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
    -compiler.
    -
    -Create a `local.mak` file in the source directory root to override the
    -Makefile variables, something like the following:
    -
    -```make
    -SHELL := /bin/bash
    -CC := /usr/bin/i586-mingw32msvc-cc
    -GMSGFMT := msgfmt
    -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).
    -
    -```sh
    -mkdir nsis; cd nsis
    -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
    -cd nsis-2.46
    -scons SKIPSTUBS=all SKIPPLUGINS=all SKIPUTILS=all SKIPMISC=all NSIS_CONFIG_CONST_DATA_PATH=no
    -sudo scons install-compiler
    -cd ..
    -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
    -location:
    -
    -```
    -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
    -anchor: 3.0.0
    -replaces: []
    -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
    -full documented.
    --- 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
    -anchor: building
    -weight: -100
    -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
    -[3.0.0](3.0.0/).
    --- 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
    -anchor: community
    -weight: 100
    -replaces:
    - - 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.
    -
    -## E-mail
    -The Pidgin team can be reached via mailing lists for support and development
    -information.
    -
    - - [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)
    -
    -## Chat
    -If you prefer chat-based contact, the Pidgin community has two primary chat
    -resources:
    -
    - - `#pidgin` on `irc.freenode.net` on IRC
    - - `devel@conference.pidgin.im`, a Jabber/XMPP MUC (Multi-User Chat)
    -
    -## Helping
    -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
    -anchor: contributing
    -weight: 10
    -original: true
    -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.
    - * Help users
    - * IRC: #pidgin on freenode
    - * XMPP (formerly Jabber): devel@conference.pidgin.im
    - * Mailing Lists:
    - * support@pidgin.im
    - * devel@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
    - * other suggestions?
    - * 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
    - * Add cool features!
    -
    --- 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
    -anchor: contributing
    -replaces:
    - - developer.pidgin.im/wiki/UsingPidginMercurial
    -lastmod: 2019-08-29T20:33:38.000Z
    ----
    -
    -### Configure Mercurial
    -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):
    -
    -```
    -[ui]
    -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:
    -
    -```
    -[ui]
    -username = First Last <email@address.tld>
    -verbose = True
    -merge = meld
    -```
    -
    -Git diffs can be useful too, and making `hg log -v` the default behavior for `hg
    -log` can be helpful:
    -
    -```
    -[diff]
    -git = True
    -
    -[defaults]
    -log = -v
    -```
    -
    -### Clone the Repository and Select a Branch
    -
    -To start working with Pidgin from Mercurial, you'll probably want to clone our
    -main repository:
    -
    -```
    -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:
    -
    -```
    -cd pidgin
    -hg up release-2.x.y
    -```
    -
    -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 @@
    title: Development
    date: 2019-01-15T03:38:25.000Z
    anchor: development
    -weight: 10
    +weight: 90
    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 @@
    +---
    +title: 2.x.y
    +date: 2019-01-11T03:13:47.000Z
    +anchor: 2.x.y
    +lastmod: 2019-09-04T03:20:39.000Z
    +---
    +
    +# Building
    +
    +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
    +manager.
    +
    +### 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
    +most applications:
    +
    + $ tar xjvf pidgin-2.x.y.tar.bz2
    + $ cd pidgin-2.x.y
    + $ ./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
    +version of automake.
    +
    + 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
    +question.
    +
    +## 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
    +default.
    +
    +## 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 @@
    +---
    +title: Windows
    +date: 2019-09-04T02:46:13.000Z
    +replaces:
    + - 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
    +both Cygwin and MSYS2.
    +
    +#### Cygwin
    +
    +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.
    +
    + * bash
    + * bzip2
    + * **ca-certificates**
    + * coreutils
    + * gawk
    + * **gnupg**
    + * grep
    + * gzip
    + * **libiconv**
    + * **make**
    + * **patch**
    + * sed
    + * tar
    + * **unzip**
    + * **wget**
    + * **zip**
    +
    +#### MSYS2
    +
    +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
    +following command:
    +
    +```sh
    +$ pacman -Sy ca-certificates gawk grep make patch tar unzip wget zip
    +```
    +
    +### Setup
    +
    +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:
    +
    +```plain
    +pidgin-dev/
    +├── pidgin-2.13.0
    +└── win32-dev
    +```
    +
    +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.
    +
    +#### Customizing
    +
    +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
    +flags.
    +
    +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
    +exist by default.
    +
    +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
    +information.
    +
    +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.
    +
    +## Build Dependencies
    +
    +### Compiler
    +
    +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
    +will automate it.
    +
    +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).
    +
    +Download the following:
    +
    +* [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:
    +
    +```sh
    +cd $PIDGIN_DEV_ROOT/win32-dev/mingw-4.7.2
    +mkdir libsspsrctmp
    +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 .
    +rm -r libsspsrctmp
    +```
    +
    +Finally, set the MinGW gcc's bin directory to be before Cygwin's in your
    +`PATH`.
    +
    +For example (You should add the following to your `~/.bashrc` file, which is
    +found in `C:\cygwin\home\YourUsername\` by default):
    +
    +```sh
    +export PATH=/cygdrive/c/devel/pidgin-devel/win32-dev/mingw-4.7.2/bin:$PATH
    +```
    +
    +### Installing
    +
    +#### GTK
    +
    +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
    +this directory).
    +
    +Visit the [GTK website](https://www.gtk.org/download/windows.php) for official
    +binary and source releases.
    +
    +#### gettext
    +
    +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)
    +and
    +[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
    +create this directory).
    +
    +#### Libxml2
    +
    +Download and extract
    +[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`.
    +
    +#### Perl 5.20
    +
    +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/).
    +
    +Download the
    +[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
    +the right perl.exe.
    +
    +#### GtkSpell
    +
    +Download and extract
    +[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
    +
    +Download and extract
    +[enchant_1.6.0_win32.zip](https://data.imfreedom.org/pidgin/win32/enchant_1.6.0_win32.zip)
    +to `$PIDGIN_DEV_ROOT/win32-dev/`.
    +
    +#### Mozilla NSS
    +
    +Download and extract
    +[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
    +
    +Download and extract
    +[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
    +
    +Download and extract
    +[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
    +
    +Download and extract
    +[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
    +
    +Download and extract
    +[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
    +
    +Download and extract
    +[pidgin-inst-deps-20130214.tar.gz](https://data.imfreedom.org/pidgin/win32/pidgin-inst-deps-20130214.tar.gz)
    +to `$PIDGIN_DEV_ROOT/win32-dev`.
    +
    +## Build
    +
    +### Building Pidgin
    +
    +The Windows build will take a while, but you can start it with the following
    +command:
    +
    +```sh
    +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
    +installation.
    +
    +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
    +following:
    +
    +```
    +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
    +the following:
    +
    +```
    +#Disable Signing
    +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.
    +
    +```sh
    +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.
    +
    +## Debugging
    +
    +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.
    +
    +## Cross Compiling
    +
    +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
    +compiler.
    +
    +Create a `local.mak` file in the source directory root to override the
    +Makefile variables, something like the following:
    +
    +```make
    +SHELL := /bin/bash
    +CC := /usr/bin/i586-mingw32msvc-cc
    +GMSGFMT := msgfmt
    +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).
    +
    +```sh
    +mkdir nsis; cd nsis
    +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
    +cd nsis-2.46
    +scons SKIPSTUBS=all SKIPPLUGINS=all SKIPUTILS=all SKIPMISC=all NSIS_CONFIG_CONST_DATA_PATH=no
    +sudo scons install-compiler
    +cd ..
    +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
    +location:
    +
    +```
    +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 @@
    +---
    +title: 3.0.0
    +date: 2019-09-04T02:46:13.000Z
    +anchor: 3.0.0
    +replaces: []
    +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
    +full documented.
    --- /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 @@
    +---
    +title: Building
    +date: 2019-01-11T05:44:25.000Z
    +anchor: building
    +weight: -100
    +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
    +[3.0.0](3.0.0/).
    --- /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 @@
    +---
    +title: Contributing
    +date: 2017-09-19T02:00:55.000Z
    +anchor: contributing
    +weight: 10
    +original: true
    +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.
    + * Help users
    + * IRC: #pidgin on freenode
    + * XMPP (formerly Jabber): devel@conference.pidgin.im
    + * Mailing Lists:
    + * support@pidgin.im
    + * devel@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
    + * other suggestions?
    + * 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
    + * Add cool features!
    +
    --- /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 @@
    +---
    +title: Using Mercurial
    +date: 2019-02-01T05:09:48.000Z
    +anchor: contributing
    +replaces:
    + - developer.pidgin.im/wiki/UsingPidginMercurial
    +lastmod: 2019-08-29T20:33:38.000Z
    +---
    +
    +### Configure Mercurial
    +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):
    +
    +```
    +[ui]
    +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:
    +
    +```
    +[ui]
    +username = First Last <email@address.tld>
    +verbose = True
    +merge = meld
    +```
    +
    +Git diffs can be useful too, and making `hg log -v` the default behavior for `hg
    +log` can be helpful:
    +
    +```
    +[diff]
    +git = True
    +
    +[defaults]
    +log = -v
    +```
    +
    +### Clone the Repository and Select a Branch
    +
    +To start working with Pidgin from Mercurial, you'll probably want to clone our
    +main repository:
    +
    +```
    +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:
    +
    +```
    +cd pidgin
    +hg up release-2.x.y
    +```
    +
    +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
    +anchor: gsoc
    +replaces:
    + - 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
    +weight: 80
    +---
    +
    +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.
    +
    +## Project Ideas
    +
    +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.
    +
    +## Previous Years
    +
    +{{< gsoc >}}
    +
    --- /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 @@
    +---
    +title: GSoC Ideas
    +date: 2019-01-11T03:13:47.000Z
    +anchor: gsoc-ideas
    +replaces:
    + - '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
    +
    +### Encryption for XMPP
    +
    +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
    +on board!
    +
    +## XMPP Modernization
    +
    + * omemo
    + * carbons
    +
    +### Add Voice and Video to the SIP Plugin
    +
    +## New Protocol Plugins
    +
    +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.
    +
    +## Twitch Plugin
    +
    +## Instagram Plugin
    +
    +
    +## Forward Progress
    +
    +### 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
    +Hero project.
    +
    +### 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.
    +
    +### Better UI
    +
    +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
    +plausibly better.
    +
    +## Internals
    +
    +### Code hardening
    +
    +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
    +Slack.
    +
    +## Advanced Features
    +
    +### Screen sharing
    +
    +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.
    +
    +## Supporting Tools
    +
    +### Canary
    +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.
    +
    +## Plugin Website
    +
    +## GPlugin
    +
    +### Perl Loader
    +
    +### Swift Loader
    +
    +### PHP Loader
    +
    +### Vala Example
    --- /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
    +replaces:
    + - 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,
    +to be considered.
    +
    +## Applicant credentials
    +
    +The application should demonstrate (by reference to previous projects, completed
    +coursework, job experience, description, etc.) that the applicant possesses the
    +following skills:
    +
    + * 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
    + and precise thoughts.
    +
    +## Project description
    +
    +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
    +should include:
    +
    + * 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
    +within the summer.
    +
    +## External factors
    +
    +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
    +summer.
    +
    +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
    +community early.
    --- /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 @@
    +---
    +title: Tips
    +date: 2019-01-15T05:58:46.000Z
    +anchor: i18n-tips
    +replaces:
    + - 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
    +translation.
    +
    +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
    +avoid them.
    +
    + 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
    + translating Pidgin
    + * 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
    + passed away.
    +
    +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
    +better for everyone.
    +
    +
    +### Helpful links
    +* [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 @@
    +---
    +title: Release Process
    +date: 2019-01-14T18:49:58.000Z
    +draft: true
    +replaces:
    + - 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
    +detail below.
    +
    +## String Freeze
    +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
    + string freeze.
    +
    +## Pre-Release
    +
    +### Commit Updated Translations
    +
    +**Background**
    +
    +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
    +releasing.
    +
    +**Note**
    +
    +Ask Gary Kramlich or Richard Laager if you need administrative access to
    +[Pidgin's Transifex
    +project](https://www.transifex.com/projects/p/pidgin/resources/) for the
    +following steps.
    +
    +**Steps**
    +
    + 1. Fetch and commit all translations from Transifex.
    + 1. `cd po`
    + 1. `make pidgin.pot`
    + 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
    + diffs smaller.
    + 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
    + blank).
    + 1. `tx pull --force --language=NN` - Pull the updated translation from
    + Transifex.
    +
    +**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
    + `ChangeLog.API`
    + 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).
    +
    +## Release
    +
    + 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 `./autogen.sh`
    + 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,
    + sort order, etc.).
    + 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
    + installed)
    +
    + 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. `hg push` the tag.
    + 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.
    + 1. Run `make` locally?
    + 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.
    +
    +## Post Release
    +
    + 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`
    + on nicobar.pidgin.im)
    + 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 @@
    +---
    +title: Voice and Video
    +date: 2019-03-17T23:11:17.000Z
    +replaces:
    + - developer.pidgin.im/wiki/vv
    +lastmod: 2019-08-23T02:53:18.000Z
    +---
    +
    +## Voice and Video
    +
    +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
    +had much work done.
    +
    +### Protocol Specific Information
    +
    +#### XMPP/GTalk
    +
    +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
    +
    +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)
    +
    +#### Gadu-gadu
    +
    +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
    +using.
    +
    +#### 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
    +fs-codec.conf file:
    +
    +```
    +[video/mpv]
    +id=-1
    +```
    +
    +### Links
    +
    +- [​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
    +replaces:
    + - 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.
    +
    +### PurpleMediaManager?
    +
    +#### Functions
    +
    +```
    +*_initiate # Creates a PurpleMedia instance. Probably have a flag as to whether it's the initiator or responder
    +```
    +
    +#### Signals
    +
    +```
    +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.
    +init-audio-sink
    +```
    +
    +#### Get
    +
    +```
    +*_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.
    +*_get_audio_src
    +*_get_audio_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
    +```
    +
    +### PurpleMedia?
    +
    +#### Functions
    +
    +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
    +matching streams
    +
    +```
    +*_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
    +```
    +
    +#### Signals
    +
    +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
    +
    +#### Get
    +
    +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
    -draft: true
    -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
    -draft: true
    -replaces:
    - - pidgin.im/download/
    - - 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 -->
    -
    -# Pidign
    -
    -## Windows
    -
    -[![](/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.
    -
    -## Linux
    -
    -We do not provide pre-built packages for Linux and Unix distributions. We
    -recommend installing Pidgin using your operating system's standard package
    -management tool.
    -
    -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).
    -
    -### Debian/Ubuntu
    -
    -```bash
    -sudo apt-get update
    -sudo apt-get install pidgin
    -```
    -
    -## BSD
    -
    -```
    -pkg install pidgin
    -```
    -
    -## macOS
    -
    -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.
    -
    -## Source
    -
    -[![](/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
    -distribution.
    -
    -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).
    -
    -# Finch
    -
    -## Linux
    -
    -We do not provide pre-built packages for Linux and Unix distributions. We
    -recommend installing Pidgin using your operating system's standard package
    -management tool.
    -
    -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).
    -
    -### Debian/Ubuntu
    -
    -```bash
    -sudo apt-get update
    -sudo apt-get install finch
    -```
    -
    -## BSD
    -
    -```
    -pkg 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
    -draft: true
    -replaces:
    - - 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
    -detail below.
    -
    -## String Freeze
    -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
    - string freeze.
    -
    -## Pre-Release
    -
    -### Commit Updated Translations
    -
    -**Background**
    -
    -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
    -releasing.
    -
    -**Note**
    -
    -Ask Gary Kramlich or Richard Laager if you need administrative access to
    -[Pidgin's Transifex
    -project](https://www.transifex.com/projects/p/pidgin/resources/) for the
    -following steps.
    -
    -**Steps**
    -
    - 1. Fetch and commit all translations from Transifex.
    - 1. `cd po`
    - 1. `make pidgin.pot`
    - 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
    - diffs smaller.
    - 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
    - blank).
    - 1. `tx pull --force --language=NN` - Pull the updated translation from
    - Transifex.
    -
    -**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
    - `ChangeLog.API`
    - 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).
    -
    -## Release
    -
    - 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 `./autogen.sh`
    - 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,
    - sort order, etc.).
    - 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
    - installed)
    -
    - 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. `hg push` the tag.
    - 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.
    - 1. Run `make` locally?
    - 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.
    -
    -## Post Release
    -
    - 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`
    - on nicobar.pidgin.im)
    - 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
    -replaces:
    - - 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.
    -
    -### PurpleMediaManager?
    -
    -#### Functions
    -
    -```
    -*_initiate # Creates a PurpleMedia instance. Probably have a flag as to whether it's the initiator or responder
    -```
    -
    -#### Signals
    -
    -```
    -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.
    -init-audio-sink
    -```
    -
    -#### Get
    -
    -```
    -*_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.
    -*_get_audio_src
    -*_get_audio_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
    -```
    -
    -### PurpleMedia?
    -
    -#### Functions
    -
    -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
    -matching streams
    -
    -```
    -*_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
    -```
    -
    -#### Signals
    -
    -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
    -
    -#### Get
    -
    -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
    -replaces:
    - - developer.pidgin.im/wiki/vv
    -lastmod: 2019-08-23T02:53:18.000Z
    ----
    -
    -## Voice and Video
    -
    -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
    -had much work done.
    -
    -### Protocol Specific Information
    -
    -#### XMPP/GTalk
    -
    -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
    -
    -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)
    -
    -#### Gadu-gadu
    -
    -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
    -using.
    -
    -#### 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
    -fs-codec.conf file:
    -
    -```
    -[video/mpv]
    -id=-1
    -```
    -
    -### Links
    -
    -- [​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
    -anchor: gsoc
    -replaces:
    - - 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.
    -
    -## Project Ideas
    -
    -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.
    -
    -## Previous Years
    -
    -{{< gsoc >}}
    -
    --- 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
    -anchor: gsoc-ideas
    -replaces:
    - - '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
    -
    -### Encryption for XMPP
    -
    -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
    -on board!
    -
    -## XMPP Modernization
    -
    - * omemo
    - * carbons
    -
    -### Add Voice and Video to the SIP Plugin
    -
    -## New Protocol Plugins
    -
    -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.
    -
    -## Twitch Plugin
    -
    -## Instagram Plugin
    -
    -
    -## Forward Progress
    -
    -### 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
    -Hero project.
    -
    -### 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.
    -
    -### Better UI
    -
    -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
    -plausibly better.
    -
    -## Internals
    -
    -### Code hardening
    -
    -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
    -Slack.
    -
    -## Advanced Features
    -
    -### Screen sharing
    -
    -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.
    -
    -## Supporting Tools
    -
    -### Canary
    -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.
    -
    -## Plugin Website
    -
    -## GPlugin
    -
    -### Perl Loader
    -
    -### Swift Loader
    -
    -### PHP Loader
    -
    -### Vala Example
    --- 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
    -replaces:
    - - 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,
    -to be considered.
    -
    -## Applicant credentials
    -
    -The application should demonstrate (by reference to previous projects, completed
    -coursework, job experience, description, etc.) that the applicant possesses the
    -following skills:
    -
    - * 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
    - and precise thoughts.
    -
    -## Project description
    -
    -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
    -should include:
    -
    - * 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
    -within the summer.
    -
    -## External factors
    -
    -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
    -summer.
    -
    -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
    -community early.
    --- 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 @@
    title: Help
    date: 2019-05-20T03:45:13.000Z
    lastmod: 2019-08-21T04:05:48.000Z
    +weight: 50
    ---
    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
    -draft: true
    -weight: 30
    -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
    -anchor: i18n-tips
    -replaces:
    - - 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
    -translation.
    -
    -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
    -avoid them.
    -
    - 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
    - translating Pidgin
    - * 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
    - passed away.
    -
    -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
    -better for everyone.
    -
    -
    -### Helpful links
    -* [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 @@
    +---
    +title: Install
    +date: 2019-01-16T20:14:59.000Z
    +replaces:
    + - pidgin.im/download/
    + - pidgin.im/download/windows/
    + - pidgin.im/download/linux/
    + - pidgin.im/download/mac/
    + - pidgin.im/download/source/
    +lastmod: 2019-08-23T02:53:18.000Z
    +weight: 10
    +---
    +
    +<!-- Never pipe curl sudo bash -->
    +
    +# Pidign
    +
    +## Windows
    +
    +[![](/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.
    +
    +## Linux
    +
    +We do not provide pre-built packages for Linux and Unix distributions. We
    +recommend installing Pidgin using your operating system's standard package
    +management tool.
    +
    +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).
    +
    +### Debian/Ubuntu
    +
    +```bash
    +sudo apt-get update
    +sudo apt-get install pidgin
    +```
    +
    +## FreeBSD
    +
    +```
    +pkg install pidgin
    +```
    +
    +## macOS
    +
    +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.
    +
    +## Source
    +
    +[![](/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
    +distribution.
    +
    +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).
    +
    +# Finch
    +
    +## Linux
    +
    +We do not provide pre-built packages for Linux and Unix distributions. We
    +recommend installing Pidgin using your operating system's standard package
    +management tool.
    +
    +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).
    +
    +### Debian/Ubuntu
    +
    +```bash
    +sudo apt-get update
    +sudo apt-get install finch
    +```
    +
    +## FreeBSD
    +
    +```
    +pkg 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
    -replaces: []
    -lastmod: 2019-08-22T03:45:43.000Z
    ----
    -
    -## Philosophy
    -Pidgin has a number of design goals that we consider our philosophy. For
    -example:
    -
    -### 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.
    -
    -## Project Goals
    -Pidgin, as a project, has overarching goals for the future of the project:
    -
    -### Protocols/Services
    -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
    anchor: plugins
    lastmod: 2019-04-17T01:38:41.000Z
    +weight: 15
    ---
    {{< plugintable >}}