-
Notifications
You must be signed in to change notification settings - Fork 10
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
Ability to sync across devices (please contribute ideas!) #83
Comments
Right now, all data is only stored locally in the browser. I'm currently looking into several options to improve data storage and in particular cross-device storage:
In general, I think I could offer a number of different services at the same time, but I'm having a hard time estimating what people would go for. All input is certainly welcome! |
I think the "let the browser sync stuff" shouldn't be considered, since you might not always be on your computer when you access sanegrid. For example someone might be on a work computer and not be logged into their browser to be able to sync the browser data, so then they would lose this functionality. Regarding the other options, there would be a couple of things to take into consideration. What's your thought on these? Am I overthinking thinks here? |
Encryption and Open Source are absolutely not opposite concepts, actually, the more open your encryption, the better. Put in other terms: Don't trust encryption if you cannot see the code that supposedly encrypts. I do agree that privacy is a central consideration here, this is also why I'm somewhat opposed to using stuff like Dropbox. Then again, if you use Dropbox, you might as well store this data there. Also: Dropbox has some pretty nice APIs, even for Javascript, so integrating their service wouldn't be that hard. I mostly noted browser sync because in html5, with IndexedDB, browsers to have a nice way of storing data for fast access - maybe not as fast as running MySQL, but still a lot faster than I have right now. Definitely fast enough for a small application like yt-sanegrid. What I have not figured out so far is how well this mixes with built-in sync. I do agree though that it would be kind of hard to make this work i.e. on a work computer, but then again - no personal data storage works well with that. The only thing that works there is some kind of central server or cloud service, which again kills privacy (at least if you factor in three letter agencies). The most likely scenario is that I will implement and maintain a number of ways to sync and manage data. But you're right - we're running into a cost problem. Not "paying for server" cost, but "what my time is worth" cost. So far, I'm not paying for hosting since it runs straight on GitHub and the data that is served isn't really notable anyways. But I do have to carefully plan where and how I spend my time with this "hobby" project. I think there is another site that does a similar thing as yt-sanegrid, just that they use a central server where your data is stored. But they want you to log in with your YT account straight away - that and the fact that it's stored with them turned me off to the idea. So I definitely think the guerilla nature of yt-sanegrid is a big factor worth being protected. In the end, we really aren't talking about that much data. For most people, especially if I include some kind of archiving, you would end up with a few megs tops. Depending on how far people are willing to go for sync, you could save that to an external file on a usb stick and just carry that with you. So a solution might be that even on your work computer, you load yt-sanegrid, tell it to load your file on a usb stick (or dropbox folder or whatever) and you have your data. Hmm, mostly rambling through ideas here. I really have no good final solution here. Mainly wanted to say that I definitely agree with the spirit 😉 |
Well, I guess you could make 2 ways then, to cope for every use case and type of user. A "local file", which would allow the user to store the playlist information into a file saved to his machine, maybe even encrypted somehow, for added security (which he could then put on a USB stick, on Dropbox, or whatever else), and a MySQL Database, for the users that don't care that much about who sees their watched videos list. |
Yeah, if I would do a central database, that would be one of the issues. However, you could get around that by tying the data to logging in to your YouTube account. But again - not sure whether I like a centralized solution like that. |
Well, if you could figure out some decent encryption and everything would be stored securely, I for one wouldn't have any problem with a central database storing all the data. |
Just to give this a notch. Some kind of (optional) sync would be absolutely awesome. This does not only include what was watched, but also which videos are in the storage overall. Because on new browser profiles sanegrid can only load a finite number of initial videos. (Maybe some kind of export/import might be a first easy solution. Or I could imagine putting some kind of data(base) file in my Google Drive or Dropbox sync folder to auto sync the storage by myself.) |
Long winded post mode engaged There are two main constraints to working on this right now. The first one is that data is still stored verbatim in the localStorage of the browser, which not a particularly structured method and thus tough to latch onto for syncing. The other is the "where would we store this?". What I've been looking into for the first is, of course, PouchDB - it works across browsers and should give me a much better control over what is stored and how. I will probably work on that next, after the v3 switch. Where to store that data is a little tougher. Google Drive and Dropbox are definitely options, particularly Dropbox has a very nice API for doing that. Other options would be cloud Database providers like Firebase and such. Finally, I have been working on a bunch of syncing methods myself lately for my "work" work stuff. My main concern there is that these things are, slowly but surely, stepping out of "this is a hobby project" territory. I have been thinking about this for quite a while now and these next bunch of features are really more features that you would expect in a for-pay project, particularly the sync which deals with the concept of user identity and for which I would probably have to implement not just one but a handful of options so that users can have choice. Now - I have accepted donations for quite a while. Sanegrid is nearing its first year in existence and over those 8 months, I have collected a total of around 50 Euro. I would guess that I have put about 150 to 200 hours into this project so far. As long as the work was simple, I could justify it with learning new things and using it myself. But these days are certainly numbered with this latest v3 switch - this is cutting into my other work time and the cost won't match up for much longer. I think I will make Sanegrid into an actual website that offers these extra features and a way to migrate from the current github url. I would decide on a final set of features that the github page will have so that people can stick with it if they want to and then release the more advanced features on the new commercial URL. I have no clue what I would charge, though. Hosting would cost close to nothing because the traffic and database load is negligible, so there aren't any metrics that I could go by there. Developing more features will definitely take more time in the future. I would estimate that I would spend around 10-20 hours a month, which would put the hourly total (in order to compete with my other work) at €500-1k. Reddit peak times aside, Sanegrid gets a steady audience of 300-350 users at the moment. To cover the cost that would mean about 3 Euro per user per month. It's funny, really, I see that I spend so much time in Sanegrid myself - switching to it, updating it, sorting through and filtering my list - and from the numbers that I see on my analytics page, a lot of users do the same. I can definitely see that it has commercial potential that way, even though it's "just a youtube subs inbox". Finally, finally - The other option I have been pondering is whether it might make sense to have my own Patreon page. That would allow me to keep the personal vibe that I have going with this project. I don't think patreon is being used for programmers so far and I'm not sure whether the "x Dollars per work" makes sense - The only thing I could map that to would be something like new version releases, but that would be weird and arbitrary. Maybe the other project I want to be working on is a patreon for programmers 😉 Anyhow - this has now grown into a proper rant. Thanks for reading... everybody who read this. Let me know what your thoughts are on this! |
While I was reading this the Subbable/Patreon thing came to my mind, too. Making me smile at the moment you mentioned it. ^^ |
Not sure if this is even possible, because I don't quite understand how the playlists (watched videos, etc) are stored, but I would very much appreciate a way to sync the playlist between multiple devices. For example if I watch a video on my work computer, it should also be marked as watched on all other devices that I access the playlist from (home computer, phone, etc).
Is this somehow possible right now? If not, do you think a feature like this could be implemented?
The text was updated successfully, but these errors were encountered: