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

[FEATURES FROZEN] Major release 4.0.0 - breaking changes and TODO #361

Closed
20 tasks done
martinrotter opened this issue Feb 17, 2021 · 17 comments
Closed
20 tasks done
Assignees
Labels
Component-Core Component-DB Component-GUI Component-Plugins-Base Status-Fixed Ticket is resolved. Type-Documentation Is anything wrong with documentation? Type-Enhancement This is request for brand new feature.
Milestone

Comments

@martinrotter
Copy link
Owner

martinrotter commented Feb 17, 2021

We had over 40 releases in 3.x RSS Guard branch with 3.0.0 being released 5 years ago! Over the time, there were many compromises and some things were simply postponed because I wanted to keep backwards compatibility at all costs.

I plan to finalize #105 and release 3.9.0 and subsequently maybe one or two bug-fix releases.

After that I will do some really major source code refactorings, remove some code which is there for backwards compatibility, fix SQL initialization code, simplify it greatly, overally check the code, polish it. Also it will be a chance to implement #339 and maybe some other tickets.

Backwards compatibility will not be kept, primarily because of huge incoming changes on database side of RSS Guard, I plan to greatly refactor DB structures to make them easier to use and easier to manage. RSS Guard 4 will store its settings to different folder.

TODO:

  • Greatly simplify and unify SQL initialization scripts, remove "update" DB scripts.
  • Remove account-specific tables like FeedlyAccounts and InoreaderAccounts and have one singular table Accounts. Custom/specific account data will be held either in single column custom_data and each plugin will compose/decompose data as it wants, or create a set of columns: data_1, data_2, ..., data_10 to accomodate all data (all of type TEXT/QString, and each plugin will provide a list of Qt properties to match to those columns. For example array {"redirect_url", "client_id", "client_secret", "access_token", "refresh_token", "expires_in",}. Create named columns for common data usually used by most of plugin accounts like "username", "password", "auth_protected", "auth_username", "auth_password", "url", "force_update", "msg_limit", "update_only_unread" and others.
  • Remove redundant service-specific Feed subclasses which only do downloading of messages + move obtainNewMessages to ServiceRoot as fully virtual method.
  • Use ANSI SQL whenever possible.
  • Implement proper error warnings when bearer is empty for oauth tokens in Inoreader, Feedly, Gmail.
  • Investigate possibility of using same SQL initialization files for MariaDB and PostgreSQL, including C++ init/update methods.
  • Implement [FR]: Search in feeds #380 .
  • Review documentation, add more interlinks, make documentation visually better, shorter, clear.
  • Merge Inoreader service into Greader API plugin as it now supports better syncing etc.
  • Make sure that notifications on new messages is only launched on new unread messages. #440
  • Add %data% placeholder support to more places - contents of message filter, contents of source and postProcessScript attributes of feed. Also add entry to documentation about the placeholder.
  • Include production oauth client ID/secrets into binary:
    • Make sure that these keys are not saved into DB when creating/overwritting account.
    • Prepare inclusion of gmail oauth encrypted keys into official binaries via github actions.
    • Prepare inclusion of inoreader oauth encrypted keys into official binaries via github actions. They are unencrypted right now.
    • Prepare inclusion of feedly oauth encrypted keys into official binaries via github actions if Feedly releases them for me.
  • Fix assignment of "message.id" after batch insert to allow message filters of (de)assignment of labels.
  • Perhaps include all needed msvcrt libs directly in Windows packages or atleast execute runtime installer during RSS Guard installation.
  • Implement simplistic notification system (define set of events - feed updated, feed error, feed update started, etc.) and allow to tweak what notification (bubble, sound) should be displayed when each of those events happens), implement with [FR]: Notification sound on new feeds #356, FR: Be able to select what type of desktop notifications appear #144.
  • Add message attribute "score" with values float 0,0 - 10,0 and allow it to be changeable via filters and also add it to msg tree list to be sortable. In the list display score as icons. High score greener icon... https://www.reddit.com/r/rss/comments/lnl2es/is_there_any_rss_reader_who_sorts_articles_like/
@martinrotter martinrotter added Type-Enhancement This is request for brand new feature. Component-GUI Component-DB Component-Core Component-Plugins-Base Status-Accepted I will eventually implement this. Type-Documentation Is anything wrong with documentation? labels Feb 17, 2021
@martinrotter martinrotter added this to the 4.0.0 milestone Feb 17, 2021
@martinrotter martinrotter self-assigned this Feb 17, 2021
@martinrotter martinrotter pinned this issue Feb 17, 2021
@online-ua
Copy link

Upgrading from 3.9 is not possible?

@martinrotter
Copy link
Owner Author

martinrotter commented Feb 27, 2021

Hello. At this point codebase for 4.0.0 version is in separate branch and is highly experimental.

There are backwards incompatible changes, therefore upgrades from 3.x will not be supported. Basically, 4.x will be very different from 3.x, at least under the hood.

I will provide detailed info when the time comes. Do not expect 4.x to come soon. It will take months to complete and I expect to release some bug fix 3.9.x releases meanwhile.

@aaronsql2019
Copy link

any chance you guys will support MSSQL as well as postgres? I mean, what's more popular?

@martinrotter
Copy link
Owner Author

@aaronsql2019 Hello. There are no "guys" (plural), only one guy, sadly. 😸

To your question: I am re-writting some parts of RSS Guard as we speak and plan to (maybe) add some more DB backends support. Question is if there is appropriate interest. I had maybe two people who requested postgres. At this point no one else requested mssql, so I must say I have pretty small sample of users to actually decided on what to support.

Supporting many DB backends brings maintenance burden on me, because when I need to do DB schema update (which happens in some versions - sometimes I need to add new column, sometimes I need to tweak some data etc.), then I need to write code for each DB (ANSI SQL if possible) and possibly test for each DB, which is time consuming for me.

But I am more-or-less decided to add one more DB backend. I was leaning towards postgres because it's OSS and available on many platforms, but I agree that mssql could be an alternative too. Let's see, perhaps there will be more requests when I get into it.

@martinrotter
Copy link
Owner Author

any chance you guys will support MSSQL as well as postgres? I mean, what's more popular?

Btw, not sure if you know, but rssguard already supports MySQL/MariaDB.

@martinrotter martinrotter added the Status-Partially-Fixed Part of bug/feature is fixed/implemented. label Mar 16, 2021
@martinrotter martinrotter changed the title Major release 4.0.0 - breaking changes and TODO [FEATURES FROZEN] Major release 4.0.0 - breaking changes and TODO Mar 19, 2021
@martinrotter
Copy link
Owner Author

Almost there, now only "manual sorting" ticket is there todo.

@zero77
Copy link

zero77 commented Jun 18, 2021

Are you planning on releasing beta versions of V4.

@martinrotter
Copy link
Owner Author

@zero77 There are "beta" versions meant for testing - development builds.

https://github.com/martinrotter/rssguard/releases/tag/devbuild

These builds are automatically updated each time I push new code to repository and they save data in different folder "data4" (not "data" as RSS Guard 3.9.x).

Test it out and let me know of any bugs.

@martinrotter martinrotter removed the Status-Accepted I will eventually implement this. label Jun 24, 2021
@martinrotter
Copy link
Owner Author

OK, I am almost there, only some finalizations, documentation polishing and more testing and I could release 4.0.0.

Huge number of changes.

@sakkamade
Copy link
Contributor

It is important not to forget to add information about this #419 (comment) as first entry of the change-log.

@martinrotter
Copy link
Owner Author

Reviewed documentation, some parts totally rewritten.

Added matrix of some sub-features supported in individual plugins.

https://github.com/martinrotter/rssguard/blob/master/resources/docs/Documentation.md#supported-feed-readers-1

@martinrotter martinrotter added Status-Fixed Ticket is resolved. and removed Status-Partially-Fixed Part of bug/feature is fixed/implemented. labels Aug 19, 2021
@martinrotter
Copy link
Owner Author

OK guys, I believe that that's it. Now it's probably a good time to wait one two weeks and give some testing to latest dev. build and then I can release.

@martinrotter martinrotter unpinned this issue Aug 20, 2021
@aaronsql2019
Copy link

I'll try to check out RSSGuard again.
I just can't take mySQL seriously until they offer a couple of features that I require.

The whole part about 'Taking a backup' that merely creates a SHIT ton of scripts? I can't imagine actually trying to move a database that way. MSSQL Server it is fucking FLAWLESS to move a database from MSSQL 2000 to 2005. Moving a database from MSSQL 2005 to 2008 is FLAWLESS. Moving a database from MSSQL 2008 to 2012 is FLAWLESS.

With mySQL ? all I get is a 10gb SQL FUCKING SCRIPT that I have to debug.

Fuck mySQL in the mouth!!!!

@martinrotter
Copy link
Owner Author

martinrotter commented Jan 18, 2022

@aaronsql2019

  1. Your comment is totally out of line and blatantly violates code of conduct. One more comment of this nature and you will be ignored for all years to come, my friend.
  2. Yes, MariaDB is nowhere near to be a perfect DBMS.
  3. Nothing really stops you from writing your own DB backend and provide PR.

Have a nice day.

@aaronsql2019
Copy link

I just don't think that mySQL is a valid DB for anyone, for any reason. Needing to troubleshoot a 10gb .MySQL "DUMP" file?

NOT ACCEPTABLE.

@aaronsql2019
Copy link

Was it the swearing part? Because I'll stop swearing. Was it the negative comments about a database that doesn't work correctly? I don't think that censorship is ever the answer, sorry.

And I'd like to point out at the top of the page when homedude said "I have never had a vote for MSSQL" what he MEANS to say is "I have never had a vote for MSSQL other than Aaron Kempf". I mean, there SHOULD be an actual vote. MSSQL runs on Linux, it runs everywhere, and I vote for MSSQL over mySQL any day and all day.

I don't think that having a difference of opinion is the end of the world. I just want to know
HOW MUCH DATA DO YOU WANT TO STORE IN YOUR MYSQL DB?

@martinrotter
Copy link
Owner Author

Swearing stuff, yes. DB part, no problem with that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component-Core Component-DB Component-GUI Component-Plugins-Base Status-Fixed Ticket is resolved. Type-Documentation Is anything wrong with documentation? Type-Enhancement This is request for brand new feature.
Projects
None yet
Development

No branches or pull requests

5 participants