Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Table overview of compatible clients (Help welcome) #2942

Merged
merged 13 commits into from
May 15, 2020

Conversation

Alkarex
Copy link
Member

@Alkarex Alkarex commented May 2, 2020

I found it difficult - especially for newcomers - to find and pick a client, and I believe a table would help.
Help welcome to fill-in the blanks.

I found it difficult - especially for newcomers - to find and pick a
client, and I believe a table would help.
Help welcome to fill-in the blancs.
@Alkarex Alkarex added this to the 1.16.1 milestone May 2, 2020
@Alkarex Alkarex added API 🤝 API for other clients Documentation 📚 labels May 2, 2020
@Alkarex Alkarex marked this pull request as draft May 2, 2020 15:22
@Alkarex Alkarex changed the title Table overview of compatible clients Table overview of compatible clients (Help welcome) May 2, 2020
@Alkarex
Copy link
Member Author

Alkarex commented May 2, 2020

App Platform Free Software Maintained & Developed API Works offline Fast sync Fetch more in individual views Fetch read articles Favourites Labels Podcasts Manage feeds
News+ with Google Reader extension Android Partially 2015 GReader ✔️ ⭐⭐⭐ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
FeedMe Android ✔️✔️ GReader ✔️ ⭐⭐ ✔️ ✔️
EasyRSS Android ✔️ ✔️ GReader Bug ⭐⭐ ✔️
Readrops Android ✔️ ✔️✔️ GReader ✔️ ⭐⭐⭐ ✔️
Readably Android ✔️✔️ Fever ✔️ ✔️
ChristopheHenry Android ✔️ Work in progress GReader ✔️ ⭐⭐ ✔️ ✔️
FeedReader GNU/Linux ✔️ ✔️ GReader ✔️ ⭐⭐ ✔️ ✔️ ✔️ ✔️
NewsFlash GNU/Linux ✔️ Work in progress Fever, GReader
Vienna RSS MacOS ✔️ ✔️✔️ GReader
Reeder iOS, MacOS ✔️✔️ GReader, Fever ✔️ ⭐⭐⭐ ✔️ ✔️
Unread iOS ✔️✔️ Fever ✔️ ✔️
Fiery Feeds iOS ✔️✔️ Fever
Readkit MacOS ✔️✔️ Fever ✔️
Netnewswire iOS, MacOS ✔️ Work in progress GReader ✔️ ✔️ ✔️

@Stunkymonkey
Copy link
Contributor

very nice for newcomers 👍
could you specify the "offline" functionality a bit?
is it only reading offline? collecting what has been read and sync them later?

@Frenzie
Copy link
Member

Frenzie commented May 2, 2020

Seems a bit annoying to maintain, looks good otherwise. :-)

@kevinpapst
Copy link
Contributor

Some feedback from my first impression:

  • Is this table a recommendation or a list of supported clients?
  • I would change the ❌ with -, the cross-icon is much to prominent. People should concentrate on the positive ✔️ and not the parts that are not working.
  • I think the API type is not relevant for newcomers, move the column to the end (I know moving columns in markdown is much fun 😁).
  • What is the difference between "Maintained" and "Developed" and does it really matter?
  • Remove the comment column. Don't list clients that are not yet ready... or add a second table with "other clients".

@Alkarex
Copy link
Member Author

Alkarex commented May 2, 2020

@Stunkymonkey Yes, some columns will require a little explanation.

  • Works offline: just like you say @Stunkymonkey , ability to read and perform actions on articles while being without connectivity (e.g. airplane mode), before synchronising again when connectivity is back.

  • Fast sync: as close as possible to Greader API : get modified items #2566 (comment) for a fast and efficient synchronisation. In particular, avoid using too much windowing (e.g. getting unread articles IDS only 100 at a time instead), avoid making one request per feed/category/label. Some inefficient clients need tens or even hundreds of requests for a synchronisation, taking a lot of time, battery, network, server resources, while good clients can sync within a couple of seconds and less than 10 requests, even with many articles / feeds / categories / labels.

  • Fetch more in individual views: Allow syncing a given category, feed, label, in particular to fetch more articles (including read articles) than the global settings.

@Alkarex
Copy link
Member Author

Alkarex commented May 2, 2020

@kevinpapst Supported clients, but we can play with the ranking for some subtle recommendation

@Stunkymonkey
Copy link
Contributor

Stunkymonkey commented May 2, 2020

Works offline: just like you say @Stunkymonkey , ability to read and perform actions on articles while being without connectivity (e.g. airplane mode), before synchronising again when connectivity is back.

NewsFlash has no way to store mutations of offline articles and sync them later. You can read offline articles, but you can not mark them read/stared in the offline mode.

@Alkarex
Copy link
Member Author

Alkarex commented May 2, 2020

@Stunkymonkey Maybe we should have a ⭐-scale in the table for offline mode, instead of binary. And maybe you could discuss with the rest of the team for considering an offline mode supporting changing read/favourite/label. I can provide the approach and corresponding requests if that can help. From what I can hear around, offline mode is one of the main reasons for using an app.

Instead of ❌
@Alkarex
Copy link
Member Author

Alkarex commented May 2, 2020

@kevinpapst I have replaced ❌ by ➖ .
Regarding Developed & maintained, an app like EasyRSS is slightly maintained but I cannot says that I am developing any new feature (mainly waiting for another app to become better on all points), same for FeedReader.
Regarding API, I believe it is interesting because it shows what option / end-point to use to connect from an app, and also some categories of limitations / possibilities.
Regarding Comment, maybe we can find another way to convey the information, or get an update from the app developer to be more clear - I have not been personally able to use that app yet, but I know several other users who do (ping @christophehenry )

@Stunkymonkey
Copy link
Contributor

And maybe you could discuss with the rest of the team for considering an offline mode supporting changing read/favourite/label.

It is on the todo list, but it is considered far future.

@kevinpapst
Copy link
Contributor

The features are important, but who cares about the protocol that is used? Maybe some RSS pros could use that information, but in my world a newcomer has no idea what greader or fever even means. I don't really care, it was just my first impression... be honest: you just don't want to move the markdown columns 😆

Regarding Unread: it was always fast for me, but I don't know how to compare that to the other clients. It just used a couple of calls - even for the initial sync. Is that 1, 2 or 3 stars?
It has support for Sync read articles and Favourites.
I don't know what Sync individual views is.
And it has offline support as well.

@Alkarex
Copy link
Member Author

Alkarex commented May 2, 2020

@kevinpapst Users need at least to know what URL to type in the client, and for the clients that do not have a custom option for FreshRSS, that depends on the API type (e.g. .../api/greader.php or .../api/fever.php). And yes, haha, I would rather wait for column changes ;-)

Thanks for the info on Unread. For the stars, I am not sure it is the best way to convey the info, and if so, I should clarify the scale. Something like:

  • ⭐⭐⭐ full sync in less than 8 requests without re-transferring article content and without any sign of inefficiency server-side or client-side
  • ⭐⭐ in between (a few inefficient things, but not so bad)
  • ⭐ sync using inefficient patterns such as unneeded paging, individual requests per category / feed / or label, retransferring article content...

Sync individual views: Allow syncing a given category, feed, label, in particular to fetch more articles (including read articles) than the global settings.

For Sync read articles, if you mark as read some new articles on the server (not seen by the app yet), can you then access those read articles from the app?

@marienfressinaud
Copy link
Member

Users need at least to know what URL to type in the client, and for the clients that do not have a custom option for FreshRSS, that depends on the API type […]

I believe this information should be directly given in FreshRSS, especially since some applications are taking the base URL, and some others wait for the full URL. It's on my todo list… but I don't know when I'll work on it 😅

FeedMe 3.15 beta added support for Podcasts in FreshRSS :-)
@Alkarex
Copy link
Member Author

Alkarex commented May 5, 2020

I believe this information should be directly given in FreshRSS

@marienfressinaud Don't you mean the URLs shown on https://freshrss.example.net/api/ ?

@marienfressinaud
Copy link
Member

Exactly, but in the configuration interface and with the exact endpoint for each application

@christophehenry
Copy link

@Alkarex Have you tried the new version of my app?

@Alkarex
Copy link
Member Author

Alkarex commented May 6, 2020

@christophehenry I tried the version on F-Droid from a couple of weeks ago. I still cannot get it to work on my main account (sync error), but I can gladly try again (let's do that in another issue)

@christophehenry
Copy link

Thanks to your list, I just discovered Readrops. I think I will give a try. Considering it's much more advanced than what I did, I may just give up my project.

@Alkarex
Copy link
Member Author

Alkarex commented May 6, 2020

@christophehenry Some consolidation of efforts would be good, but it is also important to have alternatives - we need to find the right balance :-) On my side, I was kind of hoping that another open source app (could be e.g. yours or Readrops) would become better than EasyRSS on all points (i.e. at the very minimum syncing favourites) before recommending it instead of EasyRSS. In the non-open-source world, FeedMe (3.15+) is becoming quite good.

@Alkarex Alkarex mentioned this pull request May 8, 2020
@lx-s
Copy link
Contributor

lx-s commented May 9, 2020

For Reeder:

  • Works offline: Yes
  • Fast sync: ⭐⭐⭐
  • Fetch more: ➖
  • Fetch read: ✔️
  • Favourites: ✔️
  • Labels: ➖
  • Podcasts: ➖

@Alkarex
Copy link
Member Author

Alkarex commented May 10, 2020

Thanks for the feedback @lx-s 👍
Can you please confirm that you can retrieve articles read on the server (e.g. read through the Web interface) and that have not been seen by Reeder before syncing?

For the record, here is a trace of sync for Reeder on my test server:

172.19.0.2 - - [09/May/2020:18:36:58 +0200] "GET /api/greader.php/reader/api/0/subscription/list?output=json HTTP/1.1" 200 1478 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:36:58 +0200] "GET /api/greader.php/reader/api/0/stream/items/ids?output=json&xt=user/-/state/com.google/read&n=10000&s=user/-/state/com.google/reading-list HTTP/1.1" 200 9823 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:36:58 +0200] "GET /api/greader.php/reader/api/0/stream/items/ids?n=10000&output=json&s=user/-/state/com.google/starred HTTP/1.1" 200 404 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:36:58 +0200] "POST /api/greader.php/reader/api/0/stream/items/contents HTTP/1.1" 200 68504 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:36:59 +0200] "GET /api/greader.php/reader/api/0/stream/items/ids?s=user/-/state/com.google/read&n=10000&ot=1586450219&output=json HTTP/1.1" 200 14345 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:37:05 +0200] "POST /api/greader.php/reader/api/0/edit-tag HTTP/1.1" 200 259 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:37:08 +0200] "POST /api/greader.php/reader/api/0/edit-tag HTTP/1.1" 200 259 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:37:10 +0200] "POST /api/greader.php/reader/api/0/edit-tag HTTP/1.1" 200 259 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:37:13 +0200] "POST /api/greader.php/reader/api/0/edit-tag HTTP/1.1" 200 259 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:37:13 +0200] "GET /api/greader.php/reader/api/0/subscription/list?output=json HTTP/1.1" 200 1478 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:37:13 +0200] "GET /api/greader.php/reader/api/0/stream/items/ids?s=user/-/state/com.google/reading-list&n=10000&output=json&xt=user/-/state/com.google/read HTTP/1.1" 200 274 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:37:13 +0200] "GET /api/greader.php/reader/api/0/stream/items/ids?s=user/-/state/com.google/starred&output=json&n=10000 HTTP/1.1" 200 404 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:37:13 +0200] "GET /api/greader.php/reader/api/0/stream/items/ids?s=user/-/state/com.google/read&n=10000&output=json&ot=1586450233 HTTP/1.1" 200 14345 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:43:10 +0200] "GET /api/greader.php/reader/api/0/subscription/list?output=json HTTP/1.1" 200 1478 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:43:10 +0200] "GET /api/greader.php/reader/api/0/stream/items/ids?output=json&xt=user/-/state/com.google/read&s=user/-/state/com.google/reading-list&n=10000 HTTP/1.1" 200 274 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:43:10 +0200] "GET /api/greader.php/reader/api/0/stream/items/ids?n=10000&output=json&s=user/-/state/com.google/starred HTTP/1.1" 200 404 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"
172.19.0.2 - - [09/May/2020:18:43:10 +0200] "GET /api/greader.php/reader/api/0/stream/items/ids?s=user/-/state/com.google/read&n=10000&ot=1586450590&output=json HTTP/1.1" 200 14345 "-" "Reeder/4020.39.05 CFNetwork/1125.2 Darwin/19.4.0"

@lx-s
Copy link
Contributor

lx-s commented May 10, 2020

I can confirm that all articles are synced, read and unread!

If you require a trace, I can fetch one tomorrow :)

@Alkarex Alkarex marked this pull request as ready for review May 15, 2020 16:01
@Alkarex
Copy link
Member Author

Alkarex commented May 15, 2020

I suggest we publish the table as it is, and continue improving it when we get more data

@Alkarex Alkarex merged commit 554ac88 into FreshRSS:master May 15, 2020
@Alkarex Alkarex deleted the table_clients branch May 15, 2020 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Official App?
7 participants