LaunchDarkly SDK Update: Hard Things in Computer Science

193
Photo of library by chuttersnap on Unsplash

There are only two hard things in Computer Science: cache invalidation and naming things.

— Phil Karlton

This is not a blog post about cache invalidation. Apologies to all of the cache enthusiasts out there. Rather, this is a blog post about naming things!

When LaunchDarkly was founded in 2014, we envisioned that our customers would embed LaunchDarkly-provided libraries into their applications to easily manage all interactions with our feature flagging services. The first library we released was java-client with go-client, php-client, and ruby-client following shortly thereafter. The library names were given -client suffixes because of their role as client libraries to use LaunchDarkly.

As LaunchDarkly grew, so did the collection of client libraries. By 2015 there was a growing problem — some of the newer client libraries were intended for use on client-architected applications whereas the original libraries were intended for server-based architectures. This distinction fundamentally impacts how the LaunchDarkly client library operates; in server-architected applications the library concurrently handles many users and evaluates flags itself whereas in client-architected applications the library handles one user at a time and delegates to the LaunchDarkly service for flag evaluation. Herein starts our problem with naming things; how do you distinguish client-side libraries and server-side libraries when they are all referred to as clients? Consequently, the decision was made to refer to these libraries as SDKs. However, the libraries’ artifacts and their corresponding GitHub repositories weren’t updated to reflect this decision. They continued to have -client monikers.

Fast forward to the present and we’re finally addressing our naming problems. Today, we’re announcing that each of our libraries are consistently referred to as SDKs and with a clear distinction of whether they are intended for server-side and client-side purposes.

For our customers, this resolution impacts very little — existing SDK versions will continue working as before. However, you’ll need to take minor actions when updating to the latest versions of our SDKs.

When updating to version 5.6.4+ of the SDK, you will need to replace the LaunchDarkly.Client NuGet package in your application with LaunchDarkly.ServerSdk. No application source code needs to be modified as part of this change. You should remove both LaunchDarkly.Client and LaunchDarkly.Common prior to installing the new package.

Additionally, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/dotnet-server-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/dotnet-server-sdk.git

You can read more about the changes in the SDK release notes or jump straight to the complete reference guide to learn more about this SDK.

When updating to version 2.8.1+ of the SDK, you will need to replace the com.launchdarkly:launchdarkly-android-client dependency in your application with com.launchdarkly:launchdarkly-android-client-sdk. No application source code needs to be modified as part of this change.

Additionally, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/android-client-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/android-client-sdk.git

You can read more about the changes in the SDK release notes or jump straight to our complete reference guide to learn more about this SDK.

When updating to version 1.3.1+ of the SDK, you will notice that the build artifacts have the prefix ldclientapi instead of ldapi. No application source code needs to be modified as part of this change.

Additionally, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/c-client-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/c-client-sdk.git

You can read more about the changes in the SDK release notes or jump straight to our complete reference guide to learn more about this SDK.

There were no changes to the SDK and its generated artifacts as part of this change.

However, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/c-server-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/c-server-sdk.git

Jump straight to our complete reference guide to learn more about this SDK.

When updating to version 1.1.2+ of the SDK, you will need to replace the ldclient-electron package in your application with launchdarkly-electron-client-sdk. Aside from updating any require or import statements referring to this package, no application source code needs to be modified as part of this change.

Additionally, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/electron-client-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/electron-client-sdk.git

You can read more about the changes in the SDK release notes or jump straight to our complete reference guide to learn more about this SDK.

When updating to version 4.7.3+ of the SDK, you will need to replace the gopkg.in/launchdarkly/go-client.v4 import paths in your application with gopkg.in/launchdarkly/go-server-sdk.v4. Similar changes should be made for its subpackages. Aside from updating affected import paths, no application source code needs to be modified as part of this change.

Additionally, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/go-server-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/go-server-sdk.git

You can read more about the changes in the SDK release notes or jump straight to our complete reference guide to learn more about this SDK.

There were no changes to the SDK and its generated artifacts as part of this change.

However, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/ios-client-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/ios-client-sdk.git

Jump straight to our complete reference guide to learn more about this SDK.

When updating to version 4.6.4+ of the SDK, you will need to replace the com.launchdarkly:launchdarkly-client dependency in your application with com.launchdarkly:launchdarkly-java-server-sdk. No application source code needs to be modified as part of this change.

Additionally, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/java-server-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/java-server-sdk.git

You can read more about the changes in the SDK release notes or jump straight to our complete reference guide to learn more about this SDK.

When updating to version 2.10.3+ of the SDK, you will need to replace the ldclient-js and ldclient-react packages in your application with launchdarkly-js-client-sdk and launchdarkly-react-client-sdk, respectively. Aside from updating any require or import statements referring to these package, no application source code needs to be modified as part of this change.

Additionally, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/js-client-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/js-client-sdk.git

You can read more about the changes in the SDK release notes or jump straight to our complete reference guides (JavaScript and React) to learn more about this SDK.

When updating to version 5.8.1+ of the SDK, you will need to replace the ldclient-node package in your application with launchdarkly-node-server-sdk. Aside from updating any require or importstatements referring to this package, no application source code needs to be modified as part of this change.

Additionally, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/node-server-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/node-server-sdk.git

You can read more about the changes in the SDK release notes or jump straight to our complete reference guide to learn more about this SDK.

When updating to version 3.5.4+ of the SDK, you will need to replace the launchdarkly/launchdarkly-php package in your application with launchdarkly/server-sdk. No application source code needs to be modified as part of this change.

Additionally, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/php-server-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/php-server-sdk.git

You can read more about the changes in the SDK release notes or jump straight to our complete reference guide to learn more about this SDK.

When updating to version 6.9.2+ of the SDK, you will need to replace the ldclient-py dependency in your application with launchdarkly-server-sdk. No application source code needs to be modified as part of this change.

Additionally, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/python-server-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/python-server-sdk.git

You can read more about the changes in the SDK release notes or jump straight to our complete reference guide to learn more about this SDK.

When updating to version 1.0.1+ of the SDK, you will need to replace the launchdarkly-react-native-client package in your application with launchdarkly-react-native-client-sdk. Aside from updating any require or import statements referring to this package, no application source code needs to be modified as part of this change.

Additionally, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/react-native-client-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/react-native-client-sdk.git

You can read more about the changes in the SDK release notes or jump straight to our complete reference guide to learn more about this SDK.

When updating to version 5.5.7+ of the SDK, you will need to replace the ldclient-rb gem in your application with launchdarkly-server-sdk. No application source code needs to be modified as part of this change.

Additionally, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/ruby-server-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/ruby-server-sdk.git

You can read more about the changes in the SDK release notes or jump straight to our complete reference guide to learn more about this SDK.

When updating to version 1.0.0-beta17+ of the SDK, you will need to replace the LaunchDarkly.Xamarin NuGet package in your application with LaunchDarkly.XamarinSdk. No application source code needs to be modified as part of this change. You should remove both LaunchDarkly.Xamarin and LaunchDarkly.Common prior to installing the new package.

Additionally, if you cloned the SDK source code, you should update your local git clone to have a remote repository with a URL of https://github.com/launchdarkly/xamarin-client-sdk. Assuming that your remote repository is named origin and you are authenticating with ssh, you can make this change by executing:

git remote set-url origin git@github.com:launchdarkly/xamarin-client-sdk.git

You can read more about the changes in the SDK release notes or jump straight to our complete reference guide to learn more about this SDK.

But Wait, There’s More!

LaunchDarkly open-sources its SDKs and welcomes contributions from the community. To improve the developer experience, all LaunchDarkly SDKs now possess a README adhering to a consistent template as well as contribution guidelines with instructions for building and testing the code.