A Better MySQL Client

Linux needs a better MySQL Client. One that doesn't need to reside in a browser, run through Wine1, or look like a Windows 95 application ported from a Visual Basic 4.0 project targeting Windows 3.1. While it goes without saying that a lot of the existing MySQL GUIs for Linux have seen steady improvements over the last couple of years, none of them combine a clean interface with the core functionality that I'm looking for. Ultimately what I want is Sequel Pro — which runs only on macOS — with a couple of extra features.

Sequel Pro with a 10Cv5 Query

Over the last few months I've managed to move a lot more of my day-to-day work off macOS and onto Linux, a process I started just over two years ago and put on hold because I found that I was spending too much time writing my own software to use on Linux. This isn't to say there's a dearth of tools for people using Ubuntu or other flavours of the open system, as there is a lot of software available in the software centre and/or packaged as a snap2. The issue that I have is that some of the more popular tools people use for common tasks just do not meet my expectations for what the software should do, and MySQL GUIs are a prime example of this.

What I would really like to do is build a client of my own and make it available for people as an open project under a very permissive license. This would give people the opportunity to contribute improvements and bug fixes if they so choose, as well as go through the code to make sure their data isn't being siphoned or monetised in some way. Software developers — and everyone else, really — needs to be able to trust and rely on their digital tools. This is all but impossible when the software is phoning home and providing various metrics and other data to a server somewhere "in the cloud". There is not a lot of data collection from applications on Linux just yet but, given the current trajectory of several larger organisations, it's a matter of time before it becomes as common a practice as it is on macOS, iOS, Windows, Android, and ChromeOS.

There is a problem, though. In addition to wanting to freely provide the tool to people around the world, it would be nice to earn a little bit of money from the efforts. I would like to know if it's possible for a person to earn a comfortable living writing open-source software for Linux. We all have bills to pay, and creditors generally do not accept goodwill from the community as payment come the end of the month. If a viable business model can be found, it might be possible for me to achieve a long term goal of being self-employed again. What options exist?

A little bit of digging shows three common plans that have varying degrees of success:

  1. offer support contracts to businesses
  2. crowdfund major version updates
  3. encourage people to donate

RedHat and Canonical are two companies that offer support contracts to businesses and individuals in order to generate revenue, and they're quite successful at it given the size of the organisations. While this would certainly work for a tool targeted towards corporations, doing this for a local application may not make much sense given the number of companies that will not support Linux in the workplace. This often results in development teams getting by with Windows or macOS, even if the developers prefer an alternative operating system.

Crowdfunding is certainly an option that is seen with some of the distributions that have gained a following. The barrier to entry does not need to be high if the project is something that appeals to a large audience, but this doesn't seem to apply for yet another MySQL GUI … otherwise there would be newer options out there. Still, this is something that might work for a Version 2 or higher release, which would give people the opportunity to try v1 to judge whether they'd want to support the large time investment a major update might require.

The third option, encouraging donations, seems to be the most common that I've come across. This is often seen on distribution websites, including the Ubuntu and Ubuntu MATE download pages, and on the About screens for some applications. By making it possible for a person to donate any amount at any time, developers might see multiple contributions towards the project. This would provide a good amount of incentive to continue as well as compensate the software creator(s) for the time already invested.

The first option has the benefit of generating a relatively steady recurring income, while the other two are much more volatile. Would any of these work for an independent developer or small studio?

A fourth option that I've considered is one I haven't seen anywhere, but am sure it exists: paid priority access. This would consist of a free version that would be in the software centre with the code available via GItHub or another source control system. However, for people who pay a certain price, they are given access to the most current version with all the updates and access to the most recent source. Using arbitrary version numbers, the free version would be 1.1.9, while the paid version would be 1.2.0~1.2.9. When 1.3.0 is released, then 1.2.9 would become the free version. When 1.4.0 is out, 1.3.9 becomes the free version. And so on. With a regular release cycle, this would mean that people would generally get updates in a timely manner, even if they were using the free version only.

Would this work, though? Or would this just be seen as a "dick move" in the community and tarnish the project forever? I don't have the answer, but this fourth option is something I am seriously considering for any software that I release for Ubuntu in the future. While I am gainfully employed at the moment, I would very much like the terrifying freedom that comes with self-employment again.

  1. a common Windows emulator for Linux

  2. I'd be willing to bet there are a lot more applications available for Linux than there are macOS. This is a topic for a different post, though ….