Comment by crossroadsguy

8 days ago

This is the reason I have always refused to use Bear note taking app irrespective of how good and snappy that app is. Because they keep their notes in a SQLite db now and even though that file can be backed up and handled locally my notes are not easily accessible to me. I can't easily edit my notes in other editors (which I often like to do on my mac), I can't version controlled backup and sync those files the way I want outside of iCloud (which is what Bear uses).

What is sad is that they used to be local files first note app and then they moved to sqlite citing some sync and performance issues.

> What is sad is that they used to be local files first note app and then they moved to sqlite citing some sync and performance issues.

They're still a local-first note application. It's just slightly harder for you to edit your notes externally, and not even by that much - it's very easy to directly query (read and write) SQLite databases, and if you really cared you could have made a script to grab a note, export it to a temporary text file, allow you to edit it, then update the SQLite database.

> I can't version controlled backup and sync those files

You absolutely can - you can dump SQLite databases to text files that contain SQL queries that will restore the database that you can then backup and sync: https://stackoverflow.com/questions/75675/how-to-dump-the-da...

> then they moved to sqlite citing some sync and performance issues

Yes, that's because "plain text" files are bad for performance and harder to sync correctly. For people who (1) have over a hundred thousand notes they want to keep (like me) and (2) want maximum confidence that they're not going to lose years worth of work, that's incredibly important.

The devs made the right choice. You can always write scripts to interface with a SQLite database with an external editor. You can't take plain text files and magically make them as fast and durable as a database.

  • >and if you really cared you could have made a script to grab a note, export it to a temporary text file, allow you to edit it, then update the SQLite database.

    Bear devs advise against doing that: "Generally speaking, it is safe to access the database for reading only"

    https://bear.app/faq/where-are-bears-notes-located/

    • Thank you for the correction! I was not aware of this.

      It's still worth pointing out that this design decision is orthogonal to the decision to use SQLite, though. The Bear devs could have designed it such that you could write to the database directly, or they could have kept the text-file-based design, but still told the user that they can't modify the files directly (as one of my personal projects does). The assignment of blame to SQLite specifically is misguided.

      1 reply →

  • Goodness! Are you a bear dev by any chance or a dedicated member of its particularly toxic subreddit? Because the tone fits right in.

    > It's just slightly harder for you to edit your notes externally

    Yup, just slightly harder! Very slightly. A difference of 3.75 picoseconds. Couldn't agree more.

    > it's very easy to directly query

    Right!

    > and if you really cared..have made a script

    And designed a nuclear reactor while I was at it, isn't it?

    > The devs made the right choice

    Yessss!! Finally.

    Ffs!!!

    • > And designed a nuclear reactor while I was at it, isn't it?

      Claude can one shot this.

Sqlite is still local first. Couldn’t they just also provide you with notes via obsidian-like file folder structure while using sqlite for in-app performance?

  • That was exactly my thought. But no I guess they won't. Because they had good old plain text files but they changed to sqlite db and apparently the reason they gave is sync related challenges. Since it's not a FOSS app I don't know the challenges and I feel all other text based notes/editor apps that work on plain text files on disk must be doing something right/different. I don't know.

    And as for sqlite being local first - it's not the same. It's the nature of the data a plain text note taking app deals with that neuters that very idea of those plain text notes by storing in a local sqlite db.

I didn’t know they did this change which means it’s time to think about migrating away from bear. Which is a pity because the software itself is rock solid

  • Yes, I feel the same. A rock solid app dismantled by just one developer choice. Still I won't diss the devs because it's their choice but "a text note" is the last thing I would want "locked" in a sqlite db and bear is a "plain text note taking app" really. So just sad.

    • Is SQLite really "locked in"?

      It's possible most ubiquitous open source software ever (far more common than markdown) and your notes exist in fully readable text form inside it

      Bear being proprietary is the real threat of lock in

    • From memory the sqlite3 API is something like

          sqlite3 data.db 'select text from notes'
      

      I use sqlite3 to load and query random CSVs all the time. It feels a bit weird to hear data described as "locked" within a SQLite DB, because it's one of the simplest non-text formats for me to read data from. It would surprise me of it took more than five minutes to set up a one-way cron job to dump your notes into plain text files.

      2 replies →