Naming ====== 2024-09 We need to decide several names. 1. The crate name. What do users `use`? For example, `use monetdb` vs. `use monetdb_rs` etc. The [api-guidelines] recommend that *crate names should not use -rs or -rust as a suffix or prefix. Every crate is Rust! It serves no purpose to remind users of this constantly.* 2. The project name, typically also the name of the GitHub repository etc. In this case, adding -rust or -rs is preferrable because we have dozens of MonetDB client libraries, and this is the Rust one. 3. The name announced in the clientinfo. If you run `SELECT client FROM sessions` on a recent MonetDB version, what does the Rust client library call itself? See the table below for what other clients do. What do other clients do? ------------------------- | Project name | Language | Import | Announcement | | ------------ | -------- | --------------------------------- | ---------------------- | | libmapi | C | #include | libmapi 11.51.3 | | ODBC | *many* | "Driver={MonetDB};Host=..." | ODBC / libmapi 11.51.3 | | pymonetdb | Python | import pymonetdb | pymonetdb 1.8.2 | | monetdb-java | Java | "jdbc:monetdb://..." | monetdb-java 3.4 | | MonetDB-PHP | PHP | require 'monetdb/php_monetdb.php' | - | | monetdb-perl | Perl | DBI->connect('dbi:monetdb:'); | - | Similar projects ---------------- There is an unmaintained package 'monetdb-rs' on crates.io. It's not a library but an executable that prints "Hello, world!". An earlier effort by Panagiotis Koutsourakis and Mitchell Weggemans was called [rust-monetdb]. Its readme calls it 'monetdb-rust'. It contains two crates, one called 'monetdb' and one called 'mapi'. On GitHub there is also [shmutalov/monetdb-rust]. It seems to support MAPI v8 (!) and v9 and the latest commit was in early 2016. It contains the crate 'monetdb'. Conclusion ---------- The name of the project should be 'monetdb-rust' for consistency with monetdb-java, -php, -perl, etc. The abbreviated form -rs is unsuitable because (a) a stub crate by that name already exists on crates.io, and (b) people who don't know Rust can immediately understand -rust but not -rs. The crate name should be 'monetdb', without -rust. A name like 'monetdb-client' is overkill because the MonetDB server will never be rewritten in Rust. The clientinfo name should use the project name, not the crate name: 'monetdb-rust X.Y.Z', not 'monetdb X.Y.Z'. [api-guidelines]: https://rust-lang.github.io/api-guidelines/naming.html#casing-conforms-to-rfc-430-c-case [rust-monetdb]: https://github.com/MonetDBSolutions/rust-monetdb [shmutalov/monetdb-rust]: https://github.com/shmutalov/monetdb-rust