Show HN: 10 Years to Build a Free SQL Editor (timestored.com)
I have spent large parts of the last 10+ years building an SQL Editor. The tool is targeted at data analysts, a lot of effort has gone into charting, visualizing and excel export. If this sounds useful to you, it's Free, please give it a try and let me know any feedback.
100 comments
[ 3.7 ms ] story [ 161 ms ] threadLink of the repo: https://github.com/timeseries/qstudio
edit: Apple silicon, which I note because the process type in activity monitor is 'Intel'
That's not the first release, that's "just" 3.0, they released QStudio 1.25 in 2013 (their first blog post) https://www.timestored.com/b/qstudio-kdb-ide-1-25-released/
There were more learnings, like I should definitely have went fully open source at the start. It's harder to do later.
Practically I am often understanding how to write certain queries by starting out with a certain table or a certain row and then looking at the resulting subgraphs of tables or rows that are linked to it. I want to be able to bookmark a row and come back to it immediately.
Also tools like this also implement "save" in a way that is useless at best and sadistic at worst. Who really saves a bunch of SQL files in a directory like "Query001.sql"? If I want to "save" queries and updates I don't want to save them in a strange SQL-specific project. Depending on my project these are either going to be incorporated inside source code files or possibly saved in files that live inside a project I manage with a non-SQL IDE. If I want to "save" DDL these are either saved in the database themselves by executed or could be managed as part of a migration system, which I haven't seen a tool of this sort support. Although I never "save" files in that kind of tool, it is certain to try to stop me from turning my computer off so it is another thing that makes turning my computer off like
https://www.youtube.com/watch?v=kyOEwiQhzMI
Edit: Actually your description reminded me of jailer: https://github.com/Wisser/Jailer Does that do what you want?
Notably, being able to follow relationships easily.
Trivial use case, selecting a bunch of order rows, clicking on the "customer_id" of one of the rows, and it brings up the associated row, following the foreign key. Clicking on something else to open up the dependent tables (like the order detail lines). After a bit of clicking around, you have a subset of the DB ERD (save it has data). Then, maybe, using that as a base, you can start clicking on columns to form up a query, with all of the joins in place.
As I said, 5 minutes of thought, 30,000 ft view. But I've not seen anything like that, perhaps it's just not practical.
https://www.jetbrains.com/help/idea/creating-diagrams.html#d...
I haven't gotten very far into it, but here's a little feedback about what it took to get to the point where I could try it out.
1. I'm running MacOS 14.4.1.
2. I downloaded the jar file.
3. I double-clicked the jar file. It wouldn't open. I've seen this before, so I navigated to the jar file, right-clicked it and chose open, and it gave me the option to launch it even though it was unsigned after a warning.
4. Then it told me I needed a java runtime, and I should go to java.com to get one.
5. I went to java.com to get one, downloaded the java 8 runtime things defaulted to, and when I went to install it, I got a scary warning that Oracle might sue me if I used this for commercial use. This is my personal machine, but I didn't know what might count as commercial use, so I noped out and decided to look for an open source runtime.
6. I figured out that `brew install java` seemed like what I want and ran that.
7. Once that completed, I double-clicked the jar again. No luck.
8. Since the SQL editor site advised running from the command line if double-clicking didn't work, I tried that. An error message directed me to java.com.
9. I didn't want to go back there, so I did more web searches. I learned that if I ran `sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk` things might work. So I tried that and went back to right-click the jar and run it. I again accepted the warning. It launched!
10. It asked me for an email address. I just wanted to try out the software, not sign up for email. I declined to enter one.
11. It asked me for a license code. I declined to enter one.
12. Then it told me I was in a 30 day trial mode once the GUI came up.
I'm still interested, but that's the end of my timebox today. I hope I remember to come back and try it some more.
But what's the deal? Is it a 30 day trial for a paid product? Or is it really free? Or do you need email to make it really free?
You might want to look at how JetBrains bundles the JRE with datagrip on Mac. The level of effort needed to try this was maybe higher than I'd consider ideal.
In my experiments, I was able to pull it off for Mac and Windows, but Linux was still a bit wild west as to how to properly package it (for me), so they just get a fat jar. It's doable, I just didn't do it.
It helps if you use the Java modularity to trim down the runtime.
I was able to distribute my FX app (which requires platform specific binaries) that way.
https://github.com/timeseries/qstudio/tree/master
I've dealt with extremely customized licenses for businesses (financial) that wanted software built for their use, but also to have the ability to resell the software that was built specifically for them. Not much surprises me anymore when it comes to expectations of legal departments. You just don't want to get into any kind of legal battle in the future over your software. I don't know anything about the size of your business, or who uses your software, but I do know that when it gets ugly and someone is looking for rights to software, you need to have things clearly laid out or you could end up devastated by a company that has funds to keep putting into legal fees that you may not.
I hope that this scenario never plays out, because I think releasing this is something that really adds value to the community that deals with databases. I just don't want to see someone trying to make a living get hurt by a licensing issue. Unfortunately, when it comes to high-end business, it's not so uncommon when things don't go the way your client wishes them to go. Best of luck to you!
¹ Unless it were the only one, it would be impossible to be leading right after launch.
² https://github.com/timeseries/qstudio
90% of the commits are just adding nonsense.
update to latest = 21+16
release = 4+1
bugfix = 3+2
update readme = 3+35+35+35+35+35+35+35+14
total = 309 out of 341 commits
The commits stopped at Jun 25, 2016 when it was just a "Custom JDBC Driver and Authenticator Example" and then suddenly Feb 23, 2023 it became "qStudio - Free SQL Analaysis Tool"
Some people judge project quality by commit number. The empty commits I did generate as I believe it more closely resembles the effort and commits that have been put into the project than if I left it on 10 commits starting 2 years ago.
> Doing the boring work of getting the build working on github etc. doesn't seem valuable to my users vs adding functonality.
You don't need this to open source it, you can provide source without setting up builds
I don't know how to translate that Pulse FAQ to qStudio. FWIW, I'm using Java 11 on macOS 14. I have a single qstudio.jar file.
https://intersystems-community.github.io/iris-driver-distrib...
Example connection strings:
https://docs.intersystems.com/irislatest/csp/docbook/DocBook...
Instructions for starting a container:
https://docs.intersystems.com/irislatest/csp/docbook/DocBook...
Language: Java, GUI: Swing, Docking framework: DockingFrames (LGPL)
What is the benefit of registering? I skipped it to try it out.
Was very quick looking at my local MySql database. I liked being able to run sql against some local parquet files.
Would need to support Redshift via an ssh tunnel for me to use it on a regular basis. I don't want to manage the tunnel with a different tool.
>>Would need to support Redshift via an ssh tunnel for me to use it on a regular basis. Redshift has definitely moved up the priority list lately. I will look into it.
Tunnels have so many configuration options that you'd either have to support raw configuration in the app (at that point just DIY a tunnel in the terminal), implement something incomplete, or build a full featured SSH tunnel manager into the app.
SSH tunnels can be totally transparent to DB clients. Unlike DB application-layer stuff like credentials, where the DB client needs knowledge of them, I don't see the cost/benefit of integrating SSH tunnels into the app itself.
You’d need to be transparent in your GUI wording that this is forking SSH (in the case of Windows users) but it wouldn’t be an issue for Linux or macOS.
ssh tunneling alone can be done in so many ways with different environments necessitating which might work. are we talking ssh tun/tap IP tunnels? simple port forwarding? either of the above but with a proxyjump required to get there?
Edit: just tried it on Windows and you have mojibaked text on the welcome dialog [0].
[0]: https://imgur.com/a/qeIdLGN
Edit 2: Unfortunately your product has some architectural/design issues. Way too much latency, UI hangs a lot simply following the action links in the welcome dialog, trying to open a 3 mib database hung the software until I killed it, etc. The interface is highly non-idiomatic and doesn't follow ui patterns common to any of the major desktops (in response to keyboard shortcuts, mouse operations, etc), and doesn't do a lot of what I would consider to be basic safety/sanity checks (i.e. tries to open a binary database as a text sql file, shows garbled unicode).
>>The interface is highly non-idiomatic Ouch this hurts but I'm open to improving it. Have you any specific suggestions?
There are better tools now, partly why qStudio is free as I don't believe it could compete with the paid offerings. My main profit making focus has moved onto a new niche that I think is underserved....building real-time apps based on a database. qStudio acts as a good advertisement and brand awareness for that much heavier product.
To people asking why he's giving it away for free: partially because it's content marketing (duh), but mostly because this has been a labor of love for him that he wants to let loose into the world.