RedSquirrel87 / manga-downloader

A very simple application written in JAVA to download any chapters of any manga from the supported websites
39 stars 1 forks source link

Split extensions from downloader #344

Open RedSquirrel87 opened 4 years ago

RedSquirrel87 commented 4 years ago

Original report by Anonymous.


Have you ever considered giving the software a more "nested" structure? For example, you could split the software itself from the extensions that support the sites. Something like this: software --> Mangadex extension, Mangafox extension, Foolslide extension, etc. As of now, all the "extensions" are inside the same file, and this can be risky for two reasons: legal reasons and speed reasons. As for the legal reasons, if one of the sites decides that Mangadownloader is somehow violating their copyrights, it can be a pain in the ass. You're not legally responsible for this kind of things, but you know, nobody wants too much to worry about. If you split the extensions from the main, you can just stop supporting an extension and whatever the user does with it is their own problem. In case of a DMCA, it would request the removal of that extension and not of Mangadownloader itself. Do note that this is exactly how Tachiyomi has avoided any kind of legal issues since it was created; when they remove the support for a site, many users continue using that extension, but Tachiyomi cannot do anything about it, so their responsibility is 0%. Regarding speed, even if there's a lot of supported sites in Mangadownloader, many users just use one or two of them. The rest is useless for them. What I'd do if the choice were mine is rewriting the software so that only the extensions used by the user will be downloaded. The first time you only enter a link of a site, the software checks if you already have its extension. If not, it downloads it. And when you drop support for a site, the software will throw you an error like "This site is no longer supported. Do you want to delete its extension?". And since a lot of times it's not the downloader itself that needs to be updated but the support for some sites, you can add a "New version available for this extension! Downloading it" whenever a user try to use an updated extension. What I'm implying is that many people don't actually care about (for example) the Webtoon extension. So, even if it gets updated, forcing all the users an update of the whole software is just a waste of time for many of them. I hope I made my point clear enough. If not, I'll create an account and I'll explain with more details.

RedSquirrel87 commented 4 years ago

Original comment by Red Squirrel (Bitbucket: Red_Squirrel, GitHub: RedSquirrel87).


Yeah, I already thought about an extensions-based system in the past, but in the end I always came to the conclusion that a similar scenery would only require more work rather than bring clear advantages, since the program should manage myriads of external extensions. Even for the specific two aspects that you have described, if a website has any problem with the program (as already happened with Japscan and DGTread) I simply remove their support completely from the program, so that nobody can use this program with that website anymore. This is certainly safer than leaving extensions on the wild that continue to work and so continue to cause damage to the website or to violate any law. The program has an auto-update function so unless you don’t connect it to internet (which is impossible since to download manga you have to be online xD) you will never end up with an obsolete version that still supports that specific website, this way its support is definitely ceased for all the users and I think this is the best way to be safe of any legal issue.

About the second aspect, well, the main executable of the program (which is downloaded when an update is available) weighs just 3 MB, I don't think it is so problematic or annoying to fully download, nowadays with even the worst connection of the world it is a matter of how much? 30 seconds? This issue had great sense times ago when the program was an all-in-one JAR which included all the dependencies and its weight exceed the thirty megabytes, but now I really struggle to think that two or three updates per month (of about 3 MB) are so annoying to download xD

So yeah, maybe in future I’ll find the time and the will to redesign and rewrite the program in an extensions-based system, but because of the above reasons for now it is definitely not among the priorities