RFC4287 section 4.2.7.2 specifies that "rel=alternate" is effectively
the default for the link element:
If the "rel" attribute is not present, the link
element MUST be interpreted as if the link relation type is
"alternate".
So having a plain `<link>` and a `<link rel="alternate">` is kind of
weird, *especially* if they point to different resources. So we just
remove the plain entry and *replace* it with the rel=alternate, which
is really the default here.
The sample Atom feeds in RFC4287 (section 1.1) do give an
example *only* with `rel="alternate"`:
<entry>
<title>Atom draft-07 snapshot</title>
<link rel="alternate" type="text/html"
href="http://example.org/2005/04/02/atom"/>
<link rel="enclosure" type="audio/mpeg" length="1337"
href="http://example.org/audio/ph34r_my_podcast.mp3"/>
To refer to the actual Wallabag URL, we use the "via", which is
defined in the RFC as:
5. The value "via" signifies that the IRI in the value of the href
attribute identifies a resource that is the source of the
information provided in the containing element.
I'm not sure how widely used that tag is, but I feel that the
distinction between `rel="alternate"` is weird at best, and buggy (and
certainly introducing unpleasantness in my usage) at worse.
Before:
<link href="{{ entry.url }}"/>
<link rel="alternate" type="text/html"
href="{{ url('view', {'id': entry.id}) }}"/>
<link rel="via"
href="{{ entry.url }}"/>
That is:
<link href="http://example.com/"/>
<link rel="alternate" type="text/html"
href="http://wallabag.example.com/view/1"/>
<link rel="via"
href="http://example.com/"/>
After:
<link rel="alternate" href="{{ entry.url }}"/>
<link rel="via" type="text/html"
href="{{ url('view', {'id': entry.id}) }}"/>
That is:
<link rel="alternate" href="http://example.com"/>
<link rel="via" type="text/html"
href="http://wallabag.example.com/view/1"/>
Closes: #7848
wallabag
wallabag is a web application allowing you to save web pages for later reading. Click, save and read it when you want. It extracts content so that you won't be distracted by pop-ups and cie.
You can install it on your own server, or you can create an account on wallabag.it.
- Website: wallabag.org
- Android app: wallabag/android-app
- iOS app: wallabag/ios-app
- Browser extension: wallabag/wallabagger
- GNOME (Linux) app: read-it-later (not maintained by this project)
- All resources about wallabag ecosystem are listed here: https://github.com/wallabag/wallabag/wiki/wallabag-ecosystem
Documentation
The documentation is available at https://doc.wallabag.org.
You can contribute to it through its dedicated repository, available here: https://github.com/wallabag/doc.
Installation
Please read the documentation to see the wallabag requirements.
Then you can install wallabag by executing the following commands:
git clone https://github.com/wallabag/wallabag.git
cd wallabag && make install
Now, configure a virtual host to use your wallabag.
Other methods
Refer to the installation documentation for other installation methods.
Translation
This project uses Weblate for translation.
Feel free to help us translating wallabag.
Contributing
To learn more about developing wallabag, please refer to the contribution guide.
Content extraction relies on Graby, php-readability and ftr-site-config.
Sponsors
License
Copyright © 2013-current Nicolas Lœuillet nicolas@loeuillet.org
This work is free. You can redistribute it and/or modify it under the terms of the MIT License. See the COPYING.md file for more details.
