[[ch06_bitcoindev]] == Bitcoin Software Development This chapter will be examining bitcoin from the perspective of an open-source social-coding software developer. The chapter will introduce the developer to some of the basic tools of the open-source software world and outline the workflow for contribution and review of code. Developers will see the entire process of community software development (social coding) within the bitcoin project, from a feature idea or bug fix all the way through to code release and code maintenance. This chapter equips a developer with the tools, vocabulary, insight into process and community culture and etiquette to quickly join and contribute to the bitcoin project. As a side-effect, this chapter also serves as a primer on social coding, distributed version-control systems, project management, continuous integration and quality control as practiced by modern open-source global projects === git and github === Contributing to bitcoin === Issue List === Forking the code === Branching and Merging === Making a code change === Manual testing === Automated Testing and Continuous Integration === Pull request and discussion === Merging and maintaining features === Bitcoin Improvement Proposals (BIP) === Protocol extension === Script extension (SPV) === Client extension === User Interface extension === API development ==== JSON/RPC client API ==== Stratum API ==== Middleware