The IBM Open Blockchain (OBC) project is our contribution to the Linux Foundation Hyperledger project. We have made it available as open source to enable others to explore our architecture and design. IBM intends to engage rigorously in the Linux Foundation Hyperledger project as the community establishes itself and decides on a code base. Once established, we will transition our development focus to the Hyperledger effort, at which point the code will be maintained for use by IBM.
While we invite contribution to the IBM Open Blockchain project, we believe that the broader blockchain community focus should be on the shared Linux Foundation Hyperledger project.
Welcome to Open Blockchain (OBC) development!
If you are new to Open Blockchain, and want to learn about our position and the scope of the project, please start with our whitepaper. In addition, we encourage you to review our glossary to understand the terminology that we use throughout the website and project.
When you are ready to start using OBC to build applications or to otherwise contribute to the project, we strongly recommend that you read our protocol specification for the technical details. Procedurally, we use the agile methodology with a weekly sprint, organized by issues, so take a look to familiarize yourself with the current work.
In addition to the Getting started documentation, the following topics are also available:
- Open Blockchain FAQs
- Canonical use cases
- Development environment set-up
- Chain code development environment
- Open Blockchain APIs
- Open Blockchain network setup
- Technical implementation details
This software is made available under the Apache License Version 2.0.
We have created a development environment for this project such that each contributor has the same set-up and can be productive within a few minutes. Follow the instructions to download and start using Open Blockchain.
We are using the GitHub Flow process to manage code contributions.
Note the following GitHub Flow highlights:
- Anything in the master branch is deployable
- To work on something new, create a descriptively-named branch off of your fork (more detail on fork)
- Commit to that branch locally, and regularly push your work to the same branch on the server
- When you need feedback or help, or you think the branch is ready for merging, open a pull request (make sure you have first successfully built and tested with the Unit and Behave Tests)
- After your pull request has been reviewed and signed off, a committer can merge it into the master branch.
We use the same approach—the Developer's Certificate of Origin (DCO)—that the Linux® Kernel community uses to manage code contributions. We simply ask that when submitting a pull request, the developer must include a sign-off statement in the pull request description.
Here is an example Signed-off-by line, which indicates that the submitter accepts the DCO:
Signed-off-by: John Doe <[email protected]>
We use Slack for communication and Screenhero or Google Hangouts™ for screen sharing between developers. Register with these tools to get connected.
- We require a file header in all source code files. Simply copy and paste the header when you create a new file.
- We code in Go™ and strictly follow the best practices and will not accept any deviations. You must run the following tools against your Go code and fix all errors and warnings: