Most of the following interfaces and methods have been there since v1 of the driver and we didn't introduce breaking changes whenever possible after 2.1, to avoid maintaining multiple active branches of the driver. This have been part of my private notes for a long, long while... its a good idea to formalize it in a ticket
With version 4.0 of the driver in mind, we should try to carve out the following parts of the API:
Remove: Host.IsConsiderablyUp property.
Remove TypeAdapters (we now provide extensible TypeSerializer<T>.
Remove and refactor: QueryProtocolOptions.
Remove namespace Cassandra.DSE (DSE 3.1 support).
Remove option: RetryOnTimeout (controlled by retry policy).
Use saner defaults for PoolingOptions constructor or hide it and only allow using a builder.
Remove: Host constructor unused param.
Remove or repurpose: ISession.WaitForSchemaAgreement().
Change KeyspaceMetadata.Replication property to be an abstraction with multiple implementations (current type is incompatible with transient replicas)