As many of you actively watching the btcd project are likely already aware, the project was recently migrated to a new organization on github named btcsuite. During this process, the core dependency packages were also combined into the main btcd repository.
Yeah, that’s me driving that truck … or at least it sure felt like it!
Why was the migration done?
The main motivation was that the entire btcd codebase is maturing to the point it deserves its own organization. We want to make it clear that the code is intended to be a community project and have multiple contributors. In addition, since the code was already being moved, we took the opportunity to combine several of the core package repositories into the main btcd repository which has several benefits discussed below.
Some benefits of these changes are:
- Issue tracking is now consolidated into the btcd issue tracker and is therefore easier for all parties involved to stay on top of them
- Pull requests that require changes in more than one of the core packages are now feasible which improves the QA loop since it allows the continuous integration builds to complete and provides a unified view of all relevant changes
- Reconstructing older versions is now much easier to do
- The initial download and compile of btcd is now faster since there are less repositories to download
- Alt-coin developers who want to try out experimental features have a lot less work and renaming to do now since most of the core packages were renamed to names which do not include the btc prefix
- Fetching updates to the btcd repository now also updates all of the core dependency packages which means it’s no longer possible for a user to unintentionally update btcd while not updating the core dependency packages
What about the cons?
The only notable con we can think of is the following:
- When a 3rd-party wants to use one of the sub-packages, say the txscript package, they have to download the entire btcd repository instead of only the txscript repository. However, we don’t feel like this is a big issue since the resulting binary will only contain the necessary deps and nothing more. It’s simply a matter of binary maintainers downloading more data than they would have to with a different repo per package for the initial build.
Overview of New Package Locations and Names
In addition, the following packages have been renamed and merged into the main btcd repository:
|Old Package||New Package||Description|
|btcwire||wire||Implements the Bitcoin wire protocol|
|btcnet||chaincfg||Defines chain configuration parameters for the three standard Bitcoin networks and provides the ability for callers to define their own custom Bitcoin networks|
|btcdb||database||Provides a database interface for the Bitcoin block chain|
|btcchain||blockchain||Implements Bitcoin block handling and chain selection rules|
|btcscript||txscript||Implements the Bitcoin transaction scripting language|
|btcec||btcec||Implements support for the elliptic curve cryptographic functions needed for the Bitcoin scripts|
|btcjson||btcjson||Provides an extensive API for the underlying JSON-RPC command and return values|
|btcws||btcws||Provides custom types for btcd websocket extension commands (registers the extension commands with btcjson)|
New Maintenance Entity
New Release of btcd – Version 0.10.0
The blog post also coincides with a new release of the main btcd daemon. The detailed release notes and updated Windows binaries are located here.