Is there a comparison with the philosophy, underlying architecture, licensing, scope, and business model of Grist? Seems like Grist is actually levelaging type checking (typescript) while baserow doesn’t use mypy at all, and Grist already has features like revision history. Baserow seems to be more popular though, or at least has better SEO.
I particularly appreciate clear distinction between open source and proprietary feature sets, and a business model that only uses “open core” to release some features early as proprietary extras, but always makes it libre/free software after a certain amount of time.
Welcome to the forum @pangyuehung! And thank you for a great question.
Firstly, since Baserow so specifically positions itself as an Airtable alternative, this blog post is relevant: Grist v. Airtable. But I’d like to answer your questions in some depth.
Grist and Baserow are both built on the foundation of a relational database. They are both open-core.
Baserow, as Airtable, is a user interface to a relational database. Grist is that too, but builds a lot more “spreadsheet power” on this foundation, with very strong formula support, summary (pivot) tables, charts, and drag-n-drop page layouts.
Grist is a lot further ahead in terms of features, as far as I can see (admittedly, I am more familiar with Grist features than Baserow’s!) E.g. I don’t see a way in Baserow to undo-redo, or copy a range of cells, or format a number as a dollar amount. That’s all easy and natural in Grist.
Perhaps more importantly, Grist tackles harder problems, such as imports into an existing table (with column mapping), versioning (see Trying Out Changes and Automatic Backups), very powerful formulas (more on that below), and most notably granular Access Rules.
From what I understand, Baserow talks to a Django backend, which wraps a Postgres database. Grist stores the underlying data in a SQLite database (which is similar), but the backend is Node.js, which sends changes from the browser on to a Python data engine, and uses the results to update the DB file and send them back to all connected clients.
The Grist data engine is a per-document Python process (it is sandboxed in the hosted version, grist-core does not yet include sandboxing). Its major benefit is enabling formulas to use actual Python — with all the power of the Python standard library. These formulas track dependencies: if you reference a bunch of fields in linked records, and then change a value in any field, anything that needs to be recalculated will update, for everyone. In Baserow, you can show a field from a referenced record, but that’s about it. When that value changes, the table referencing it won’t update until you reload it (at least in my attempt just now). In other words, Grist supports much more in terms of formulas, and they work correctly.
The SQLite file that backs each Grist document is downloadable. So your data is fully portable even when you use the hosted version: just select Download from the Share menu, and use it as a backup or open up with any SQLite viewer, or query it on the command line. I don’t see a way to get full DB data from Baserow if using the hosted version.
Grist is open core: https://github.com/gristlabs/grist-core is licensed using OSI-approved Apache License 2.0. Baserow is also open core: it licenses code under “premium/” under a proprietary license, and the rest under OSI-approved MIT license.
I don’t know what’s in Baserow premium vs what’s actually open-source.
For Grist, I can say that grist-core includes all product features, and nearly all code that goes into the hosted service at docs.getgrist.com. What’s currently left out is sandboxing of the data engine (but coming to core), billing, and some code that’s been too closely tied to our production environment, such as logins, email notifications (e.g. when sharing a doc), and automatic backups. These will make it in eventually.
I should mention that we also have a humongous test suite, which hasn’t yet made its way into grist-core.
We develop Grist in a private repository, which gets synced to
grist-core regularly, around the same time as updates are released to our hosted version. We do not currently intend to delay the open-sourcing of new features; we might some day do it selectively for certain bigger ones.
Some code is likely to remain proprietary, particularly for enterprise-focused features, and code needed for running a reliable and scalable hosted version (i.e. for more than a single-server installation).
Scope & Business Model
Grist addresses many of the applications of spreadsheets, on the foundation of a relational database. It’s available hosted in a freemium model, and self-hosted via grist-core. We intend to release a commercial self-hosted product as well, also on a freemium model, but aimed largely at enterprise with requirements on data compliance and security. This will include enterprise-level non-open-source features and support.
Hard for me to answer this for Baserow.
On the question of popularity, there are many actual businesses using Grist regularly and happily. We got a lot of good reviews on ProductHunt, along with #1 Product of the Day. I suppose we better get our SEO up to snuff
Hope this helps!
A related post on Baserow/Grist comparison from the Baserow founder, Bram Wiepjes: Comparison with Grist - #3 by bram - Baserow
It looks like a new contender, AppFlowy, has joined the fray: https://www.appflowy.io/
While not focused on databases/tables, it has a lot of similar functionality including kanban, and it’s written in Rust and released under the AGPL! Will have to save judgement for whenever the collaboration server hits beta.