Synchronizing bookmarks - Request for comments

On 15. Dec 2020, at 23:08, C?me Chilliet <come at chilliet.eu> wrote:

> I?ve put together an idea of simple specification to allow clients to 
synchronize bookmarks and feeds across Gemini, as this is something that 
I?m currently missing in my daily Gemini use.
> 
> You can read it at 
gemini://gemlog.lanterne.chilliet.eu/2020-12-15%20link-sync-rev-1.en.gmi

I think this is a valid use case, and it's something I have been thinking 
about myself just running Lagrange on a number of different computers. 
When you bring in a mix of different clients and desktop/mobile operating 
systems, sync is even more important.

The lowest common denominator should be export to/import from a .gmi file. 
Such a file (that Adnan Maolood suggested, for example) is guaranteed to 
be at least viewable by all clients. It supports folders, has no line 
length limitations, and can support tags as well (e.g., an optional 
line/bullet/quote following a link).  The user can then manually manage 
the files via any means they see fit.

However, the UX of doing that on an ongoing basis to sync your 
bookmarks/feeds isn't great. An automated mechanism is certainly more desirable.

When it comes to basing sync on the Gemini protocol, it makes a certain 
amount of sense (clients know how to do Gemini requests) but it's not a perfect fit:



> * Would you consider implementing support for something like this?

Something like this, yes.

The current proposal needs revising, though. I suggest creating a 
mechanism that allows using Gemini subscriptions as a core part of the 
sync. A client would view and/or subscribe to a bookmarks page served by 
the bookmark sync server. Client-side, the subscription would track all 
links instead of dated links, and ensure that all links on the bookmarks 
page have copies in the local set of bookmarks. (And somehow get rid of 
deleted bookmarks, too.)

This way,  a public bookmarks feed could be served as a static file by any Gemini server.

It's a good idea that a client cert is used to ensure privacy of the 
served bookmarks, unless they are meant to be public.

The upload part is where it's gets tricky, and I don't think the Gemini 
protocol should be used for that. As a client author what I'd like to see 
is that I just export the bookmarks .gmi file as usual, and then send it 
to the server, perhaps via a TLS socket at a port specifically reserved 
for uploads ? just open a socket, set a client cert, and write the .gmi 
file to the socket. The client cert would be required for user 
identification. It would be up to the server to merge the bookmarks and 
get rid of deleted ones on server-side.

This does make things a bit more difficult for the server implementation, 
but keeping things easy for clients at least encourages wider support.

> * Does your client have some kind of plugin system which would allow a 
third-party to add support?

Not currently. However, Lagrange's MIME hooks could be extended to allow 
manual activation, so you could run an external program on your 
"about:bookmarks" page to do the sync. It would need to edit the internal 
bookmarks.txt file, and Lagrange would then need to detect that the file 
has changed after the hook program finishes. I wouldn't prefer going down 
this route, though. It's better to have a mechanism that benefits all clients equally.

So let's keep working on this! Automatic bookmark (and client cert?) sync 
would be great features for Gemini clients.

--jaakko

---

Previous in thread (4 of 14): 🗣️ Côme Chilliet (come (a) chilliet.eu)

Next in thread (6 of 14): 🗣️ Jason McBrayer (jmcbray (a) carcosa.net)

View entire thread.