corollari / ankiTab

Browser extension that replaces the new tab page with Anki flashcards
https://ankitab.com
The Unlicense
187 stars 16 forks source link

Copyright and terms & conditions violations #4

Closed dae closed 6 years ago

dae commented 6 years ago

While I'm sure you had good intentions, I'm afraid you will need to rework this. AnkiWeb is not open source, so by distributing portions of the website you are violating our copyright. Switching the current deck every few cards also imposes an unnecessary load on AnkiWeb, and the terms and conditions specifically disallow accessing the service programmatically. You are welcome to implement custom functionality on top of AnkiConnect instead of AnkiWeb.

Please remove the offending code within 24 hours.

corollari commented 6 years ago

While it's true that in the beginning the extension was mostly a copy of ankiweb, currently the lines of code custom to the extension outnumber those from copied code (which has undergone large modifications too, as I've reverse-engineered and debundlarized ankiweb's code). Also, the fact that part of the code came from ankiweb has always been acknowledged in the README. To address the copyright issues, I can do a full rewrite of the copyrighted parts. About ankiweb, I can cache most of the data from ankiweb so as to reduce the requests to a minimum and I have no issue including a donation button for Ankiweb as part of the extension.

dae commented 6 years ago

You took copyrighted code and distributed it under a different license when you did not have the rights to do so. While you may not have intended any harm, you have done the wrong thing here. Please remove all of the copyrighted content within 24 hours.

Caching replies will not change the fact that you're frequently changing the deck, which requires a recalculation of the due cards each time. This is not a supported use case, and the terms and conditions you agreed to when signing up for an AnkiWeb account make this clear. I'm sorry, but you will need to use AnkiConnect moving forward.

corollari commented 6 years ago

All the offending code and copyrighted content has been removed. If you find anything under copyright left tell me and I'll remove it too.

dae commented 6 years ago

Thank you for doing that. The extension you've written looks handy, so I wish you all the best with the AnkiConnect version.

dae commented 6 years ago

Your extension is still accessing AnkiWeb, and you appear to be trying to deliberately disguise the add-on's use. As I mentioned 2 days ago, this functionality is against AnkiWeb's terms and conditions. You do not pay for AnkiWeb's servers, and do not have a right to use them as you please. Please follow the rules, or I will need to permanently deactivate your account.

corollari commented 6 years ago

Even if I wanted to use AnkiConnect to replace AnkiWeb, it'd be impossible, as, currently, the API calls necessary to implement AnkiTab's functionality aren't part of AnkiConnect. Thus, at the very least I'll have to write a PR for AnkiConnect, get it accepted and finally rewrite AnkiTab. Wouldn't it be possible to smooth the transition between AnkiWeb and AnkiConnect by allowing the use of AnkiWeb temporarily instead of continuing this game of cat and mouse in which you try to block AnkiTab and I release a bypass? After all, chrome's API allows the modification of http requests so I don't think there's any way to technically make it impossible for AnkiTab to bypass whatever protection you set in place.

c-okelly commented 6 years ago

A better solution, if @dae would allow it, could be to bring the functionality in line with what you would see from the base Anki client instead. This would probably mean removing the changing decks functionality and reduce how much the client syncs with the back end?

Otherwise could make a proposal to work towards making this an official extension by meeting the terms that would be required to do that?

corollari commented 6 years ago

I don't think he would agree with that, given that, if that was his intention, he could have blocked just the "switch deck" requests from AnkiTab while letting getCards requests go through, which would have left AnkiTab with just the basic functionality left, yet still working. Of course, this is my interpretation of it, maybe this is a classic case of Occam's razor and he didn't think much about it and just opted for the easiest way, that is, to block all requests.

Edit: By the way, given that the code in this repository is licensed under The Unlicense, if @dae is interested, he could use all or part of the code here for ankiWeb, as I've managed to remove all the dependencies but jquery (which would be very easy to remove) and I've added support for all audio files supported by the browser (ankiweb only supports .mp3).

c-okelly commented 6 years ago

I don't know about that. I would assume the @dae has his own personal priorities about the development work his is currently focused on. At the end of the day he is providing us with a free service. If he has to start blocking individual 3rd party libraries and extensions or just subsections of them it very much becomes a game of whack a mole. Probably much easier just to point to the terms of service and say just not to use his web apis at all.

Alternatively if there was a way to bring the extension in line with the current use cases that ankiweb is prepared to support I think it would be a win for all parties involved. Though it might require a bit more work.

cmd16 commented 6 years ago

The safest response is to write a pull request and update AnkiConnect so you can use it, and in the mean time just set the new tab page to go to the url for AnkiWeb

dae commented 6 years ago

Switching the deck repeatedly is only part of the problem. When a user accesses AnkiWeb after a delay, their data needs to be loaded from disk. This usually happens a few times a day at most, when users deliberately surf to the site, and this extension has changed it so that the user's data needs to be read from disk every time they open a new tab, even if they had no intention of studying - potentially hundreds of load-from-disk cycles per day. Even if you later implement caching, the fact is that this extension will increase the hosting costs by reducing the number of users each server can support.

I also don't want to spend hours debugging some future bug report that turns out to be because the extension is not behaving the same way as AnkiWeb's standard review system.

AnkiWeb is a free supplement to the computer version, and providing it already comes at considerable cost. If its existing functionality does not meet your needs, please be considerate and build a solution that uses the user's own computing resources, instead of deliberately ignoring the terms and conditions, and my explicit requests. I will give you a week to update the add-on - please ensure the AnkiWeb functionality is removed by the 21st.

albertly commented 6 years ago

2 dae

Report abuse to Google https://chrome.google.com/webstore/detail/ankitab/ihoaepdiibjbifnhcjoaddgcnfgjmjdk

corollari commented 6 years ago

Given that a solution has been reached (update the add-on to use AnkiConnect in the following week) and this discussion is not longer constructive (see @albertly's deleted comment), I'll be locking the conversation. If anyone wants to add something while remaining civic you are welcome to open another issue.

corollari commented 6 years ago

Today I'll push the ankiConnect code and the new version of ankiTab will probably be released tomorrow or sunday.

dae commented 6 years ago

I've been waiting patiently, but you still have not updated the extension on the Chrome store.