mysql-native: Update, Status and Plans

Nick Sabalausky via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Sat Oct 4 02:16:15 PDT 2014


The mysql-native lib (often abbreviated as "mysqln") is a low-level 
client library for MySQL and MariaDB, written entirely in D with no 
reliance on the official libmysql. It supports both Phobos and Vibe.d 
sockets.

Since Steve Teale's original release, mysql-native has seen many years 
(by D's young standards) of usage and updates, with various people (such 
as simendsjo, Sönke Ludwig and myself) assuming lead at various points 
to help keep it going strong, even if perhaps slightly under-the-radar. 
(And cheers to everyone else who has and/or continues to contribute.)

There have been some changes and updates lately which I'd like to 
formally announce:

New Home
--------------
The main active fork of mysql-native now has a slight change-of-address. 
Since the project is not directly related to Vibe.d (but simply has 
optional support for it), Sönke has recently spun it off from his 
"rejectedsoftware" group on GitHub to it's own GitHub group: "mysql-d".

So the new addresses are:

Web:        https://github.com/mysql-d/mysql-native
Git/HTTPS:  https://github.com/mysql-d/mysql-native.git
Git/SSH:    git at github.com:mysql-d/mysql-native.git

The DUB repository at code.dlang.org has been updated to reflect this 
change, so it should be transparent and "just work" for DUB users.

New Release
---------------
A new release has just been tagged, v0.0.16. (Don't be fooled: Despite 
the scary-sounding "v0.0.x" label, people are successfully relying on it 
in real projects, and we do try to minimize breaking changes.)

The previous release, v0.0.15, marked the beginning of a deliberate 
trend for mysql-native:

After several years of miscellaneous updates and fixes, and the many 
versions of DMD the project has seen, mysql-native has outgrown its 
initial one-module design. It's also, admittedly, accumulated some 
amount of internal clutter and rough corners as well.

Sensing that, simendsjo did quite a bit of work in a separate fork, on a 
big cleanup and re-architecting of the library. That fork hasn't been 
completed, but to minimize divergence and duplicated maintenance efforts 
(and also to perform some much-needed cleanup on mainline) I've begun 
incorporating some of simendsjo's changes into the main mysql-native, 
with an emphasis on minimizing breakages.

The incorporation of those improvements began in v0.0.15 by resurrecting 
some bitrotted unittests, merging in many of simendsjo's new tests, and 
in general beginning a much stronger emphasis on proper testing 
(unit/regression/integration).

The merging of simendsjo's cleanups continues in v0.0.16 by splitting 
the increasingly-monolithic into a more manageable series of smaller 
modules. This is an internal change which shouldn't affect users of the 
library, but it lays the groundwork allowing the main library to be 
directly compared with simendsjo's redesign much more easily.

Changes in v0.0.16 (since v0.0.15):
- Split into multiple modules.
- Fix: When querying for a table's column metadata, limit the search to 
the appropriate schema.
- Fix #39: Unsupported SQL type NEWDECIMAL
- Fix #45: Retrieving table metadata fails with an exception for certain 
server versions.
- Fix #48: Unittests don't work on MariaDB 5.5
- Remove redundant (and outdated) "homepage" field from package.json.

New Horizons
-----------------
(Too marketing-ish? ;) )

Formal priorities for mysql-native moving forward: I don't consider 
these to be ranked - they're all important right now, and ultimately 
somewhat general, but here are the primary focuses at this point:

- Professionalism: It's time for mysql-native to graduate from a 
functional "works for our purposes" utility to a well-presented 
newcomer-friendly library. At this point, that means having clearly 
stated project purpose and goals, updated DDOX-generated online 
documentation, improved readme and introductory material, changelog, and 
release announcements. Bug reports should be responded to promptly (even 
if not promptly addressed - the project does continue to face a manpower 
s a version bump to, at the very least, v0.1.x would probably be 
approprhortage). Also a version bump to, at the very least, v0.1.x would 
probably be appropriate at this point. ;)

- Cleanups: Continue merging in changes from simendsjo's 
cleanup/redesign branch with an emphasis on minimizing breakages. 
However, a few breaks may be needed, so in keeping with the 
professionalism point, semantic versioning system should be used.

- Robustness: Continued emphasis on unit/integration/regression tests, 
and on various combinations of OS and DB server versions (both MySQL and 
MariaDB).

- Usability: There have been many improvements in D since the library's 
initial design. I think we can improve some aspects of the API while 
still staying within the project's goals. This also ties into both 
simendsjo's work and having good documentation.

- Encourage Contributions: It's no secret that mysql-native faces a 
shortage of manpower. To help cultivate a larger community of 
contributors, the library should continue to work on being more 
developer-friendly. Running the tests should be easy and 
well-communicated, generating docs should be easy, dub should be as 
well-supported as possible, the internal code should be easy to grok, etc.


More information about the Digitalmars-d-announce mailing list