CURVE license exceptions required
hi, we are looking to get licensing exceptions for the following repositories for usage in CURVE. (https://github.com/cncf/toc/issues/856)
| Repo URL | License | Starts | Forks | alternative license | newly code? | 3rd open source project | How does this code integrate with or interact with, if at all, other components of CNCF? | How will the code be maintained? Who is responsible? | How will the code be kept up to date with security patches? |
|---|---|---|---|---|---|---|---|---|---|
| common/string_util.h common/hash.h |
BSD 3-Clause | 1.3k | 250 | NO | NOWe have modified some of code | YES, from project https://github.com/baidu/common | The code is used in Nameserver, Curve's core service, as a common library. | The code will be maintained by CURVE | Curve have modified the code inside, and is responsible for keep up to date with security patches |
| mds/nameserver2/file_lock.cpp, mds/nameserver2/file_lock.h |
BSD 3-Clause | 2.8k | 569 | NO | NO We have modified some of code | YES, from project https://github.com/baidu/bfs | The code is used in Nameserver, Curve's core service, as a common library. | The code will be maintained by CURVE | Curve have modified the code inside, and is responsible for keep up to date with security patches |
| common/fast_align.h curvefs/common/fast_align.h |
Boost Software License 1.0 | 8 | 35 | NO | NO | YES, from project https://github.com/boostorg/align, The code comes from the Boost library | The code is used in CurveFS, Curve's core service, as a common library. | The code will be maintained by CURVE | Curve have modified the code inside, and is responsible for keep up to date with security patches |
| curve-nbd submodule |
GPL | 325 | 98 | NO | NO We have modified some of code | YES, from project https://github.com/NetworkBlockDevice/nbd | Curve-nbd is used to provide a curve-based network block device driver for Linux system. This code uses an independent process to call nebd client to communicate with Curve NEBD server process through RPC. RPC currently uses the socket mode to achieve inter-process communication. See the following figure for specific calls and communications | The code will be maintained by CURVE | Curve have modified the code inside, and is responsible for keep up to date with security patches |
The relationship between Curve-nbd module and curve is described in the following figure.

Where you've mentioned "NO We have modified some of code", can you describe more about these modifications? Are you planning or have you contributed the code upstream?
@thincat75 - quick ping here, can you describe if you're planning on contributing this code to the projects modified?
hi amye, just saw this message. I am a developer of the Curve open source project. "NO We have modified some of code" means that we have used the code in the referenced link and made some modifications to it. For example, we used https://github.com/baidu/common/blob/master/include/string_util.h in our code and added a function "AddSplitStringToResult" to the relevant files.
hi amye, just saw this message. I am a developer of the Curve open source project. "NO We have modified some of code" means that we have used the code in the referenced link and made some modifications to it. For example, we used https://github.com/baidu/common/blob/master/include/string_util.h in our code and added a function "AddSplitStringToResult" to the relevant files.
Thanks for this! If modified, will changes be contributed back to the upstream project?
The modifications made to the above-mentioned open source files are currently not universal and only used in the Curve project itself.
This is currently in the queue for review for Legal Committee.
Thank you very much.
A question has come up: What does this component do? Can you explain how this works more broadly with Curve?
The Curve storage system itself provides a block storage service which needs to integrate with the block device interface of Linux. As part of this component, the NBD block driver module is modified to present the Curve network storage as a block device to use by the Linux system. This component serves as a bridge between the Linux system and the Curve storage system, facilitating their integration.
How does this NBD-derived component link or interface with the Apache-2.0 licensed CURVE code?
For example, is this NBD-derived component statically or dynamically linked with the Apache-2.0 CURVE code such that they run together in a single process, share memory, etc.?
Or, does the NBD-derived component run in a fully separate process from the Apache-2.0 CURVE code?
Hi, the NBD-derived component run in a fully separate process from the Apache-2.0 CURVE code.
Closing due to inactivity.