Skip to content

☁️ Sync your browser bookmarks with Nextcloud (WebExtension: Chrome/Firefox/Opera)

License

Notifications You must be signed in to change notification settings

jlbprof/floccus

 
 

Repository files navigation

Floccus

Sync your browser bookmarks with Nextcloud

Donate using Liberapay

The goal of this project is to build a browser extension that syncs your browser data with the open source sync and share server Nextcloud.

Historically this was once possible using the mozilla sync app. However, it's not very easy anymore to run your own sync server and it still would only work with firefox.

News: Floccus v2.0 can now sync all your bookmarks with all of your ginormous folder hierarchy. 🏋️‍♀️

Install

For this to work with your Nextcloud server, you need at least version v0.11 of the Bookmarks app installed. Once you've done that you can continue to install floccus in your browser as follows.

Note: It is recommended to not enable native bookmark synchronization built into your browser, as it is known to cause issues.

Chrome

You can install it via the Chrome Web store

Alternatively, you can still install it by downloading the Chrome package from the latest release and dropping it into Chrome's extension page.

Updating from 1.x to v2.0

It is recommended to remove all of your bookmarks from your accounts before updating floccus, deleting them and after updating to reconnect them again, in order to prevent unforeseen problems!

Firefox

You can install it via AMO.

(Note that AMO has to review all new releases, though, so you might need to wait a bit before you can install the latest release on firefox.)

Updating from 1.x to v2.0

It is recommended to remove all of your bookmarks from your accounts before updating floccus, deleting them and after updating to reconnect them again, in order to prevent unforeseen problems!

Firefox for Android

Floccus is not supported by Firefox for Android, yet.

Usage

  • The options panel; After installation the options pane will pop up allowing you to create accounts and edit their settings. You will be able to access this pane at all times by clicking the floccus icon in the browser tool bar.
  • Your accounts: You can setup multiple nextcloud accounts and select a bookmark folder for each, that should be synced with that account. Floccus will keep the bookmarks in sync with your nextcloud whenever you add or change them and will also sync periodically to pull the latest changes from the server.
  • Syncing the root folder: If you want to sync all bookmarks in your browser you need to select the topmost untitled folder in the folder picker. Syncing the root folder across browsers from different vendors is not possible currently, as the main bookmark folders (like "Other bookmarks") are hardcoded and different for each browser vendor.

Limitations

  • Note that currently you cannot sync the same folder with multiple nextcloud accounts in order to avoid data corruption. If you sync the root folder with one account and sync a sub folder with a different account, that sub-folder will not be synced with the account connected to the root folder anymore.
  • Floccus yields an error if you attempt to sync a folder with duplicate bookmarks (two or more bookmarks of the same URL). Remove one of the bookmarks for floccus to resume normal functionality.
  • Syncing the root folder across browsers from different vendors is not possible currently, as the main bookmark folders (like "Other bookmarks") are hardcoded and different for each browser vendor.

Goals and Limitations aka. Is this a good idea?

As there have been debates about whether this software product is a good idea, I've made a little section here with my considerations.

Goals

The goals of this piece of software

  • provide an open cross-platform sync solution for browser data with nextcloud
  • performance is a plus, but not necessary
  • (eventual) consistency is more important than intention preservation (i.e. when ever a mistake happens during sync, it's guaranteed to be eventually consistent on all sites)

Current status and Limitations

The WebExtensions bookmarks API has a few limitations:

  1. No support for batching or transactions
  2. Record GUIDs can change, but are only known to change when Firefox Sync is used.
  3. The data format doesn't represent descriptions, tags or separators
  4. No way to create a per-device folder
  5. It's impossible to express safe operations, because there are no compare-and-set primitives.
  6. Triggering a sync after the first change, causing repeated syncs and inconsistency to spread to other devices.

Nonetheless, I've chosen to utilize the WebExtensions API for implementing this sync client. As I'm aware, this decision has (at least) the following consequences:

  1. No transaction support (#1) leads to bad performance
  2. No support for transactions (#1) also can potentially cause intermediate states to be synced. However, all necessary precautions are taken to prevent this and even in the case that this happens, all sites will be eventually consistent, allowing you to manually resolve possible problems after the fact.
  3. Due to the modification of GUIDs (#2), usage of Firefox Sync along with Floccus is discouraged.
  4. The incomplete data format (#3) is an open problem, but doesn't impact the synchronization of the remaining accessible data.
  5. The inability to exclude folders from sync in 3rd-party extensions (#4) is a problem, but manageable when users are able to manually choose folders to ignore. (Currently not implemented)
  6. The lack of safe write operations (#5) can be dealt with similarly to the missing transaction support: Changes made during sync could lead to an unintended but consistent state, which can be resolved manually. Additionally, precautions are taken to prevent this.
  7. In order to avoid syncing prematurely (#6) floccus employs a timeout to wait until all pending bookmarks operations are done.

What's with the name?

Cirrus floccus is a type of cloud, that can sync your browser data looks very nice.

Donate

If you'd like to support the creation and maintenance of this software, consider donating.

Donate using Liberapay

Contribute

All contributions, code, feedback and strategic advice, are welcome. If you have a question you can contact me directly via email or simply open an issue on the repository. I'm also always happy for people helping me test new features -- see the issues for announcements of beta versions.

Setting up a dev environment

Building

  • gulp

Releasing

Firefox expects a zip, for chrome do the following: https://developer.chrome.com/extensions/packaging (private key necessary!)

License

(c) Marcel Klehr
MPL-2.0 (see LICENSE.txt)

About

☁️ Sync your browser bookmarks with Nextcloud (WebExtension: Chrome/Firefox/Opera)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 94.4%
  • HTML 5.6%