Common Utilities for C C++ SDK functionality

Version 4 by mnunberg
on Apr 14, 2013 11:02.

compared with
Current by mnunberg
on Apr 14, 2013 11:18.

This line was removed.
This word was removed. This word was added.
This line was added.

Changes (1)

View Page History

LCB::Result& result = lcb->get("foo");

h1. Deployment/Distribution

It has been recommended in the past that this be provided as an external library which will be called _lcb_util_. While the matter of whether this functionality be included inside an 'lcb_util' or integrated into libcouchbase itself is important, we will discuss several logistics, and pros/cons of both.

h2. As a Standalone Library

Having an _lcb_util_ would allow a different branch of development to proceed for somewhat higher level functions from which all SDKs can develop with a guarantee that this would not hinder and/or affect core protocol/network handling functionality.

The drawbacks involve the complexity of deployment (the goal is really to make most SDKs use these common utility functions which may be tested) - as such, it would now require the user to install two libraries instead of one - a detail which we may not wish to bother the user with.

Additionally, it would require modularization of libcouchbase's testing framework so that the API functions within this utility library can be tested. If the new functionality will be part of the SDKs, it will need to receive the same testing coverage and frequency as libcouchbase itself. This would require deploying libcouchbase's test functionality to an API level so that it may be used by the new utilities.

h2. As Part of libcouchbase

Having this functionality included within libcouchbase would avoid the deployment issues mentioned above. It would also allow for better optimization and integration when modifications to libcouchbase itself are needed (rather than requiring modifications to the API itself).

Additionally, the complexities in testing are reduced as the functionality of these utility/extension features are tested whenever libcouchbase itself is tested.

The drawbacks involve slowdowns in modification and development, with changes to the utility methods requiring the same level of scrutiny and release frequency as libcouchbase itself.