March 2023 product feedback¶
Collection of notable feedback gathered in March 2023.
Hacker News¶
General¶
Nothing constructive to say other than this is amazing. A very common idea but rarely done this well, great job!
Interesting how there are some airtable inspired UI elements combined with postgres.
Super interesting, will definitely use it.
PS. I would recommend making the demo account ready-only.
The schema migrations are a delight. And I appreciate the shoutout to Dabble! Thanks for working on this + congrats on the release.
An optimized hosted version with permalinks to Explorer views would open access to even more users.
Wow, this is the best explanation of db relationship types I’ve seen. https://capture.dropbox.com/A3a1aybKNDy1ttEx
Really polished. Congrats on the launch!
Tried tossing in some of the datasets found here: https://data.cms.gov/provider-data/archived-data/nursing-hom… and none of the file uploads worked.
Either way, really stoked for this.
Love the reference to GalaxyQuest. (Mathesar was the Thermian leader.)
So happy to realize your stack includes Python, Postgres, Typescript and Svelte because I once flirted with such idea for a personal project. I’m inspired.
This is super cool! I really dig the way airtable makes relational databases accessible to non-developers, but I’ve been looking for open source alternatives. Going to give this a spin this weekend :)
Wow I wish this had been published a year ago!
This is exactly what I’ve been looking for (but now I’m heavily invested in a full fledged CRM)!
Thank you for this
Was just thinking about how it looks like a fancy Django Admin
Then I saw - its actually built on Django! Neat. :)
Documentation¶
Their local development docs is also nice: https://docs.mathesar.org/contributing/local-dev/
I’m jumping into a django/react project right now and found that there’s so much hassle from integrating frontend + django + livereload + deployment. This repo is a good example.
Access control¶
Looks cool however I don’t like that it needs to be setup with a super-user and that it’s limited to your three predetermined access roles. I have a project in mind where this tool could be useful but everything is built with row level security policies and roles, the database includes sensitive data and authentication user for the connection have basically no access by itself, so it looks like Mathesar wouldn’t be useful here.
I also know of another similar project heavily utilizing RLS where end users actually have a 1:1 database user with access to their own data, here something like Mathesar could be nice as well if it would play nice with ACL/RLS.
Brent: I agree that we have some work to do on access control. In fact, we have setting up Mathesar users with the 1:1 database user mapping in our roadmap[1]. Assuming you’re referring to the Database super user as being a problem, we also have giving more granular control over that to the installer in the future. I completely understand reluctance to give a webapp super user access to a production database. [1] https://mathesar.org/roadmap.html
Very nice to hear, I will follow your project. One of the projects I was thinking about is financial systems used by government actors such as correctional services. For these customers there’s strong legal requirements for data handling so a database super user with full access is a big no-no even for the most trusted developers internally.
Kriti: We completely understand. We want to have the ability for Mathesar to gracefully handle DB users with different permissions (i.e. we’d disable features in the UI based on the permissions of the DB user set up during installation), but we couldn’t get that done in time for launch. We’ll continue working on this.
Connecting Mathesar to existing DBs¶
I’m sorry if this question is stupid, I’m still learning a little about technology. The little bit of knowledge I have tells me that my product team shouldn’t directly access the same production database as my application. The idea for this product would be to create a copy of my production base and give access to it through this tool? Wouldn’t the cost of this replica be too expensive?
Version control / auditing¶
I won’t repeat supportive comments except to say well done.
Feature request: historical tracking. E.g. on update, expire the old record with who & when.
Installation¶
Looks really cool!
I tried the install script and it asked me for my computer password. It feels really dangerous to give a random script from the internet my password. Could you maybe change this, so this is not necessary?
Thanks for the explanation. Is there a way to NOT use docker. For those of us who are NOT on linux, and are quite comfortable with postgres install and running. Would prefer just a postgres connection string.
The UI looks pretty neat, but the install instructions are essentially “curl {url}/install.sh | bash -“, which is kind of icky and runs a bunch of sudo commands. Since you’re using Docker anyway, why not provide human-readable instructions?
Or, alternately, separate the config process from the install process. I’d be much more comfortable running config commands from a script inside the docker container, or as a first-run setup UI, or as a simple .yaml config.
It does look like something I’d like to try out later, though. Either after the install process is cleaned up a bit, or once I have time to read through the whole install.sh script.
Edit: In case it matters, my personal preference is to install things as linux packages instead of Docker, but I understand that this is a stretch for early-access software.
Other products¶
Not to distract from this project — it’s very cool! — but I’d love to know if there’s something similar in principle to this, but that’s focused less on collaborative querying, and more on collaborative database administration.
Specifically, I’ve been in the market for a while now for a webapp you can run on a server, that presents a UX for submitting, watching the progress, and managing, long-running schema changes / data migrations (think: index creations, table re-partitionings) that have been written out as long screeds of custom SQL, and then either submitted through said UI, or which are uploaded to the server out-of-band and then pointed at. (And also, support for kicking off + observing + managing native DB-server commands like Postgres’s
vacuumdb --analyze-only
orpg_dump
/pg_restore
, and relating them to their DB activity.)Ideally, the UX would be designed so that you could have many of these jobs running in parallel, without everything descending into incoherence. (I’m picturing: the UI of a torrent client. A table of progress bars + error counts; click in to see the SQL execution log and per-job metrics.)
Ideally also, there’d be a library of SQL templates you could create, where you could generate and fire off N parallel copies of a query with the template-variables populated from some combination of running other SQL queries, and supplied static lists of values; with the meta-job having a configurable max concurrency limit for how many concrete jobs it will ask the DB to schedule at once, separate from the max concurrency of jobs in the DB generally.
Maybe as well, some macro-language for those templates, to let you write “if table_exists(foo), do: [sql], else: [other sql]”, or “create_index_if_none_satisfy(table, {colA, colB})”, etc — rather than having to look up the unintuitive tables and columns in ANSI-SQL INFORMATION_SCHEMA for the Nth time to then write either “compile-time” SQL or sproc SQL to get this effect.
Right now at $JOB we’re doing this kind of thing ad-hoc, by writing scripts that take arguments and query the DB to generate directories full of .sql files, that we then run concurrently using shuf(1), split(1), bash for loops, and named shared tmux(1) sessions; and then visualizing progress in various weak ways, e.g. querying
pg_stat_progress_create_index
during index creation.This looks great and congratulations on the alpha launch! Reminds me of another open source project in this space, NocoDB. Are you guys familiar with that project? If so, what are the main differences between them and what you are offering?
Apologies, somehow missed that. Thanks for the speedy response. Your explanation is very clear. Something that is keeping me tied to Airtable is their ‘interface designer’. Allows for rapidly building internal admin tools. Something similar is apparently on NocoDB’s roadmap (they are calling it page designer I believe). Am I correct in saying that this not something that is on your current Roadmap (had a look, but did not spot something similar, but could have misread)?
Nice work! It looks like Sequel Pro for Postgres.
This might be the first free, user-friendly interface for Postgres out there. Closest would be TablePlus but it’s paid.
Explorations¶
Looks really nice. Is there any way to export an exploration as SQL? I guess this can be useful when creating complicated views etc.
Reddit¶
Installation¶
Looks fantastic, will def give this a go when a .deb or flatpak happens.
I tried to install this last week and after a couple attempts I had to abandon. I’d really love to try this but that interactive installer is terrible.
I don’t remember the exact error I was getting, but I know it failed every time and I had to start the interactive installer again every single time, making it extremely tedious.
I think it’s just better to provide a docker-compose file with default values, document all options and let the user set it up as they want.
Please, why do we need to read through your bash script to figure out what it does when you could just provide a docker-compose.yml file?
I found this one https://github.com/mathesar-foundation/mathesar/blob/develop/docker-compose.yml but since it is not mentioned in the docs, I need to read through and see what I can remove from it like I don’t need caddy or watchtower and see if I can get it to work. I see it contains 3 profiles :-( way too complicated for trying right now.
Thanks, I will follow your progress. I get your idea, but before I run a bash scrip off the internet, I need to check what it does and that is a pain in the a** if you don’t use bash regularly. Lots of googling, checking what the next line of the script does, etc.
Connecting Mathesar to existing DBs¶
This is pure madness. Maybe for an office with 4 employees the blast radius is small enough - otherwise it’s the pinnacle of thoughtless democratization of data inevitably resulting in anarchy.
Demo¶
This is timely as I’m in the market for tools like this.
However: Demo login account not working :(
This looks really good, I like that you always leave the database clean so devs and non-devs are seeing the exact same thing essentially.
I tried the demo but after creating a schema and starting to add tables I just got blank pages with “stream timeout” and “upstream request timeout”. Trouble started when I tried to rename a table, it spun on ‘saving’ for ages then a message popped up about a bad response from the server. After that nothing would load. I hope I didn’t break it. Maybe it’s just too popular!
Thanks, it’s working now and seems a bit faster too.
Developer experience¶
Does it have API and SDKs?
You could generate it using swagger or similar I think, so that we have an automatic js sdk to query/update tables and so on.
Other products¶
Any benefits over Metabase?
We use it it let buiness guys look into DB, visualize stuff.
General or multiple topics¶
Neat project, looks clean too! Definitely times in the past that I could have done with a web-based DB explorer that’s more data-exploration focused and intuitive like this rather than being an admin-tool first. Best of luck with it!
Tried and looks solid.personally i don’t like of database list , it should be better with grid of cards , instead of single column. I think quality and feature completeness surpassed BaseRow or NocoDB. Which are already tauted as production , I think you guys are good for atleast beta tag.
More people will use on beta tag , so it will lead to more testers.
Please post to r/python too since this in django.
Also please post to /r/selfhosted
Nice, confidence is high that this is a Galaxy Quest reference.
I love it!
Never give up, never surrender.
GitHub¶
Category: Missing Functionality Attributes: Undo, Redo, Quick Save, Backup/Restore, Error Recovery User: @perguth (Sponsor of Mathesar)
User Quote: “@perguth - A ‘undo’ function even in its most simple form would help and provide a GUI way to recover from errors resulting from DB inputs or transformations… Since a proper undo function could be complicated to implement even a simple ‘quick save’ function that creates a save point and allows for a recovery later on like in various games would already be great (or maybe even the better solution)!”
Related Issue: GitHub Issue #2698
- Consider using podman in our install script.
- helm chart would be great
- SSO support
- Charts and graphs
- Upvoted discussions:
- Upvoted issues:
- Design UX for clipboard interactions - upvoted by sponsor
Installation¶
On a GitHub issue:
I opted for not using the script to generate the configuration.
Other¶
From Changelog’s post:
You know how collaborating with Google Sheets, Airtable & friends is super easy because anybody with a web browser and the correct permissions can get in on it? With Mathesar, you can enable that kind of access to any Postgres database!
Super powerful? I think so. Super risky?! Likely, especially if a lot of your data-related logic is in app code. Worth it? That’s up to you to decide…