navossoc / KeePass-Yet-Another-Favicon-Downloader

Yet Another Favicon Downloader for KeePass 2.x
MIT License
535 stars 29 forks source link

Version 2 #55

Closed navossoc closed 2 years ago

navossoc commented 3 years ago

Well, I was postponing this moment, but the time has come 🥳

We have a bunch of issues open right now and I'm not happy with that. @JohnLGalt you have your share of blame 🤣

My goal now is to discuss a few ideas/suggestions/changes for a major rewrite of this plugin.

I'll try to sum up the major points of the rewrite on this issue:

Why you want to do this? First of all, a little bit of history: The plugin I was using (Favicon Downloader) to download favicons was starting to show some incompatibility problems, like the ones we are seeing here today (can't connect to the site, can't find the favicon, etc).

So I decided to create this plugin as a hobby project since I wanted to learn how KeePass plugins worked (why not? 😕).

Then I targeted a very low version of .NET to make it as much compatible as possible, but it didn't go well, since to communicate with some sites, we need newer versions to get access to newer versions of protocols/ciphers.

And despite my best efforts, we kind of came to a halt. The web continues to evolve, but .NET / mono has not kept pace with that evolution.

My goal My plan for this version is to remove the "favicon finder logic" from the plugin itself, so we will no longer be so much dependent on .NET to connect to unknown websites. We will have a simple service that given a certain URL, it will return us a list of possible favicons.

Of course, it would still be possible to try to do all of this within .NET with C#, but it would be necessary to go after external libraries and test in multiple environments to ensure that it would work as expected.

From my little experience with .NET/Mono, I saw that there are actually some incompatibilities that are somewhat difficult to get around as they depend on a number of external factors (like update installed on the operational system).

Therefore, I intend to defend the idea of separating the favicon search service in an external process that can be updated with greater speed and that does not interfere with the KeePass plugin.

This would also bring more benefits such as greater security, since the processing of the pages / images would be done in an external process. We can also start thinking on internationalization (translations), newer features, etc...

Also, if you have a better idea, let me know! I'll be glad to hear.

I will start working on this new version in my spare time starting on March 27th.

So if you feel like, you can jump on this discord channel I've created to say hi and share your thoughts 😄

Of course, you can interact here as well, but on discord things normally moves faster.

[]'s

JohnLGalt commented 3 years ago

Blame accepted lol.

Therefore, I intend to defend the idea of separating the favicon search service in an external process that can be updated with greater speed and that does not interfere with the KeePass plugin.

I think this is a great idea. Is this a sort of implementation that could be called multiple times, so, say, if I wanted to download the icons of a group of entries (let's say around 30) it could do so at a much faster rate? Obviously, this would be a best case scenario, with a perfectly acceptable outcome being it doesn't speed anything up but doesn't slow anything down either. I will only be concerned if there is a significant slowdown when compared to the current implementation....

helluvamatt commented 2 years ago

@navossoc The problem isn't so much .NET / Mono as it is KeePass staying on .NET Framework / Mono instead of moving on to .NET Core / .NET 5+. Unfortunately, because KeePass is WinForms, it will never be able to be ported to .NET Core / .NET 5+ without losing Linux/Mac support with Mono or ditching WinForms (a rewrite of everything). Alternatively, I think the KeePass project should abandon it's cross platform goals, and focus on making the best format and reference library available. Then, provide a Windows-only client and allow other projects to fill the role of KeePass on Linux or Mac.

I do want to thank you for this plugin. For me, it works about 99% of the time, and half of the ones that don't work start working if I change the URL to something else.

foomin10 commented 2 years ago

It's said that this started as a hobby project, but wouldn't you change the name of this plugin? To tell the truth, I don't really like the name Yet-Another-Favicon-Downloader.

Hrxn commented 2 years ago

What does the name matter, as long as it works as intended?

navossoc commented 2 years ago

For now I'm happy with the new feature (custom download provider). I think it will keep the plugin working for a while longer.