config and feed: Added trust-link preference

The trust-link preference allows the user to ignore feed
entries that repeat a previously seen link URL.

Signed-off-by: George Saunders <georgesaunders@gmail.com>
Bump to version 3.8

Signed-off-by: W. Trevor King <wking@tremily.us>
CHANGELOG: Document this branch

And add a warning about toggling the setting for active feeds.

For both George and me, the motivation for this change was working
around feed authors that change the id after minor changes in content:

  On Sat, Jan 18, 2014 at 1:40 PM, W. Trevor King wrote:
  > Some of the newspaper feeds I follow have duplicate entries in
  > their feed if they tweaked the title or content, but I rarely care
  > about the changes.

  On Sat, Jan 18, 2014 at 02:16:19PM -0500, George Saunders wrote:
  > That's exactly the situation I added it for.

The Atom spec explicitly says that revisions should keep the same id
[1]:

  When an Atom Document is relocated, migrated, syndicated,
  republished, exported, or imported, the content of its atom:id
  element MUST NOT change.  Put another way, an atom:id element
  pertains to all instantiations of a particular Atom entry or feed;
  revisions retain the same content in their atom:id elements.

But not all feed generators are fully compliant ;).

[1]: http://tools.ietf.org/search/rfc4287#section-4.2.6

Signed-off-by: W. Trevor King <wking@tremily.us>
Merge branch 'trustlink'

* trustlink:
  CHANGELOG: Document this branch
  config and feed: Added trust-link preference

Signed-off-by: W. Trevor King <wking@tremily.us>
developer-certificate-of-origin: Add v1.1 from the Linux Foundation

Luis R. Rodriguez [1] has been trying to get information about the
licensing of the Linux kernel's DCO [2] for a while now [3,4], and it
looks like the Linux Foundation just made their view explicit [5,6,7].
This clarifies the copyright and licensing of Linus' two patches:

* 857a183 Update DCO ("signoff") rules to 1.1
* 991bd2e Start documenting the sign-off procedure in SubmittingPatches

From the whois information, developercertificate.org is pretty recent:

  $ whois developercertificate.org
  Domain Name: DEVELOPERCERTIFICATE.ORG
  Domain ID: D170689185-LROR
  Creation Date: 2014-01-15T02:54:55Z
  Updated Date: 2014-01-17T22:11:12Z
  ...
  Name Server: NS2.LINUX-FOUNDATION.ORG
  Name Server: NS1.LINUX-FOUNDATION.ORG

Now that this has an upstream source and it's own license (verbatim
copies only), I'm putting this file in its own branch.  Downloaded
just now:

  $ wget -S -O developer-certificate-of-origin http://developercertificate.org/
  --2014-01-24 15:46:21--  http://developercertificate.org/
  Resolving developercertificate.org... 140.211.169.4
  Connecting to developercertificate.org|140.211.169.4|:80... connected.
  HTTP request sent, awaiting response...
    HTTP/1.1 200 OK
    Server: nginx
    Date: Fri, 24 Jan 2014 23:46:58 GMT
    Content-Type: text/html; charset=UTF-8
    Connection: keep-alive
    Last-Modified: Fri, 17 Jan 2014 23:02:25 GMT
    ETag: "5c188d-6c5-4f0328910e8f0"
    Accept-Ranges: bytes
    Content-Length: 1733
  Length: 1733 (1.7K) [text/html]
  Saving to: ‘developer-certificate-of-origin’

  2014-01-24 15:46:21 (112 MB/s) - ‘developer-certificate-of-origin’ saved [1733/1733]

After which I stripped out the HTML, leaving just the DCO text.

[1]: http://www.do-not-panic.com/
[2]: https://www.kernel.org/doc/Documentation/SubmittingPatches
[3]: http://thread.gmane.org/gmane.linux.kernel/1397613
[4]: http://thread.gmane.org/gmane.linux.kernel/1492612
[5]: http://article.gmane.org/gmane.linux.kernel.wireless.general/118696
[6]: http://article.gmane.org/gmane.linux.kernel/1635433
[7]: http://developercertificate.org/

Signed-off-by: W. Trevor King <wking@tremily.us>
Merge branch 'dco' into contributing-github

* dco:
  developer-certificate-of-origin: Add v1.1 from the Linux Foundation

Signed-off-by: W. Trevor King <wking@tremily.us>
CONTRIBUTING.md: Update SubmittingPatches link

And link to the newly-local DCO.

Signed-off-by: W. Trevor King <wking@tremily.us>
Merge remote-tracking branch 's-o-b/contributing-github'

* s-o-b/contributing-github:
  CONTRIBUTING.md: Update SubmittingPatches link
  developer-certificate-of-origin: Add v1.1 from the Linux Foundation

Signed-off-by: W. Trevor King <wking@tremily.us>
command: Set the 'feed' argument when raising NoToEmailAddress

Before this commit, if no default target email was setup in the
config:

  $ r2e add example http://example.net/
  Traceback (most recent call last):
    File "/usr/bin/r2e", line 5, in <module>
      rss2email.main.run()
    File "/usr/lib/python3/dist-packages/rss2email/main.py", line 163, in run
      args.func(feeds=feeds, args=args)
    File "/usr/lib/python3/dist-packages/rss2email/command.py", line 50, in add
      raise _error.NoToEmailAddress(feeds=feeds)
  TypeError: __init__() missing 1 required positional argument: 'feed'

After this commit:

  $ r2e add example http://example.net/
  no target email address has been defined

I added the kwargs handling to FeedError so it will be passed through
to FeedsError because NoToEmailAddress has a diamond-inheritence that
includes both RSS2EmailError subclasses.

Reported-by: Jakub Wilk <jwilk@debian.org>
Signed-off-by: W. Trevor King <wking@tremily.us>
CHANGELOG: Document this branch

Documents the following commits:
* 763d9a8 command: Set the 'feed' argument when raising NoToEmailAddress

Signed-off-by: W. Trevor King <wking@tremily.us>
Merge branch 'no-to-email-error'

* no-to-email-error:
  CHANGELOG: Document this branch
  command: Set the 'feed' argument when raising NoToEmailAddress

Signed-off-by: W. Trevor King <wking@tremily.us>
feed: Change _USER_AGENT from '+{url}' to '({url})'

In Debian bug 742215 [1], Jakup points out that the old User-Agent is
out-of-spec.  From RFC 2616 [2]:

  User-Agent      = "User-Agent" ":" 1*( product | comment )
  product         = token ["/" product-version]
  product-version = token
  token           = 1*<any CHAR except CTLs or separators>
  separators      = "(" | ")" | "<" | ">" | "@"
                  | "," | ";" | ":" | "\" | <">
                  | "/" | "[" | "]" | "?" | "="
                  | "{" | "}" | SP | HT
  comment         = "(" *( ctext | quoted-pair | comment ) ")"
  ctext           = <any TEXT excluding "(" and ")">

[1]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=742215
[2]: User-Agent: https://tools.ietf.org/html/rfc2616#section-14.43
     product:    https://tools.ietf.org/html/rfc2616#section-3.8
     token, separators, comment, ctext:
                 https://tools.ietf.org/html/rfc2616#section-2.2

Reported-by: Jakub Wilk <jwilk@debian.org>
Signed-off-by: W. Trevor King <wking@tremily.us>