About this project
THIS PROJECT IS NOT AFFILIATED TO ORACLE.
STRETCH GOAL ($4000)
Tutorial series (video) on how to write your own REPL with auto-completion and syntax highlighting.
This video tutorial will start from scratch and show you how to build a fully functional REPL for a new data-backend (Cassandra or SQLite). You will be able to build your own CLI tool after going through this tutorial. It will also be useful to add features to the existing cli projects such as pgcli and this one.
ETA: July 2015 (only for backers $50 or above).
ETA: Aug 2015 (All backers).
The goal of this project is to create a MySQL and MariaDB client for the command-line that can do auto-completion and syntax highlighting of SQL statements.
The first five seconds in the video shows how the new features improve productivity with command line queries.
You will never type SHOW TABLES or SHOW COLUMNS anymore.
The application will be written in Python and the goal is to make is cross-platform compatible. The initial target will be Linux and OS X with possible Windows support.
The software will be released (in July 2015) under the BSD license.
The backers will get early access to the app and have the ability to steer the roadmap.
Contributors to pgcli will automatically be given access to mysql-cli repo. If you have submitted a PR to pgcli you will receive an invite to access mysql-cli repo.
Why Should You Fund It?
You will get a much nicer MySQL/MariaDB client with modern features. The auto-completion will help you write queries faster and with ease. It can be used as an exploratory tool when jumping into a new database.
By funding this project you will make it possible for this tool to exist. You will also have the opportunity to help steer the roadmap of the project and become an early adopter and a contributor.
Kickstarter is critical to and will greatly accelerate the development of this project.
I develop the project on my own time. It takes a lot of time to develop and support the project, the funding will help compensate for the developer time.
Demo - pgcli
This is a run down of some basic features in pgcli. It is a taste of what is to come in mysql-cli.
May 1 - Restart development of mysql-cli.
June 1 - Open up the repo to early bird backers. Basic Feature Set (Keyword completion, successful querying, syntax highlighting).
July 1 - Stable basic features, introduce advanced features such as special commands.
July 20 - Stable set of existing features. Open it up for public.
Here are a few features that are planned for mysql-cli. These screenshots are taken from the pgcli project (the equivalent product for Postgres database).
Auto-completion of SQL keywords.
Auto-completion of table names from the current database
Auto-completion of column names from the current table.
Completion of column names associated with an alias.
Multi-line mode for long statements
Syntax-highlighting of SQL statements
Programmers, Database Admins, Sys Admins, Command Line Junkies. If you have friends who interact with Databases, forward this project to them.
This project will benefit anyone who interacts with MySQL/MariaDB database, whether novice or expert.
Since it is written in Python, it will be cross-platform compatible (Linux and OS X first and possibly Windows).
Budget - How will the money be used
Engineering Resources: $2500
EC2 instances for testing on Linux: $200
Screencast Software: $100
Logistics & Taxes: $200
Risks and challenges
Software projects are inherently complex to estimate. My current delivery date of July 2015 could get delayed if I run into unexpected delays. My experience in creating 'pgcli' project gives me confidence that I can deliver the product on time.
I have already started working on mysql-cli and it is near the 25% completion state. I will start providing access to the backers as soon as it reaches the 50% mark and start gathering feedback.Learn about accountability on Kickstarter
I'm testing this tool against different versions of the database.
Right now I'm using docker containers to test on different versions of the database. But my dev machine is 4 years old and it struggles a bit once I get 2 images with different versions running.
So my goal is to get a one or two EC2 instances that I can use as docker work horses which can run multiple containers with different versions.
This is targeted as an alternative to the default mysql client that ships with MySQL or MariaDB. People still use it heavily while connected to a remote machine. This provides them with a nicer alternative to do that.
Also there are a lots of people who prefer command line over GUI.
I did think about using SQLAlchemy and having the user install the appropriate database adapter (such as sqlite, psycopg2 or pymysql) in order to make it generic. But it makes it hard to do a good job on any of them.
By making targeted apps, I'm able to fine tune the tool to match each product. For example '\d' in Postgres lists all relations in a database, but '\d' in MySQL sets the delimiter. There is no way to please both community.
Also having targeted apps, keeps the code base lean and small, making it easy for users to contribute code and add features. This is important for an Open Source project.
It does keyword completions but no table/column completions. The output formatting needs more work. If I open it right now, it'll be pulled in many different directions and I'll be left fielding questions before reaching an MVP.
The goal is to make the repo available to the kickstarter backers in June at which point the basic feature set will be ready.
Support this project
- (30 days)