Skip to content

Mess and legacies in library naming #464

@wprzytula

Description

@wprzytula

Background

Long story short, CPP Driver has had a complicated story of library's naming (omitting lib prefix and .so/.a suffix for brevity):

  • DataStax CPP Driver yielded cassandra.
  • ScyllaDB CPP Driver (our fork) yielded scylla-cpp-driver + a symlink cassandra.
  • CPP RS Driver currently builds scylla_cpp_driver (note the underscores, not hyphens; this is because Cargo normalizes hyphens to underscores and there's no robust workaround for this) and then renames it to scylla-cpp-driver. There's also no longer the symlink cassandra.

Problem

Now the problem is, the rename that is done by replacing underscores with hyphens affects Windows builds (#452).

Solution

I'm considering changing the library's name once again, this time hopefully the last time, to avoid both hyphens and underscores altogether. The name could be scylla (as Rust Driver's crate) or scylladb (the preferred newer naming), for consistence with cassandra.

Doubts

  1. Is such name change of a library acceptable in the C/C++ libs world?
  2. Can I do such change without bumping the major? After all, the API/ABI is unaffected, just the build system needs to be migrated.

Optional bonus

Add cassandra symlink back, to make migration from the Apache CPP Driver easier.

Implementation steps

  1. Change the lib name in the build system to scylladb (I choose this name).
  2. Change the .SONAME to scylladb.1. Let's not leave there the legacy name (libscylla-cpp-driver.so.1)
  3. Remove the no longer needed copy/rename step from the build system.
  4. Remember to be very verbose in the release notes about the name change. Warn that build workflows need to be updated.
  5. Optional: add cassandra symlink.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions